quorlasocial/GO-LIVE.md
metatroncubeswdev c309581df0 Initial commit: Quorla social media manager
Dashboard (content library, publishing queue with approvals, inbox, team
management, AI runs), Meta connector, branded PDF reports, agent skills,
and Docker packaging (Dockerfile, docker-compose with Caddy HTTPS,
backup and path-relocation scripts).

Client data, live data and secrets are excluded via .gitignore.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 13:02:29 -04:00

3.4 KiB

Go-live checklist: Social Manager

1. Add permissions to the Meta app (developers.facebook.com → Social Manager → Use cases / App Review)

Make sure the token already has: pages_show_list, pages_read_engagement, pages_manage_posts, pages_read_user_content, pages_manage_engagement, instagram_basic, instagram_content_publish, instagram_manage_comments, instagram_manage_insights, read_insights, business_management. Add now:

  • instagram_manage_messages: Instagram DMs (inbox + replies)
  • pages_messaging: Facebook Messenger inbox + replies
  • leads_retrieval (+ pages_manage_ads): pull Lead Ads form leads into leads.csv / Odoo
  • ads_read (later ads_management): Meta Ads reporting
  • Instagram Public Content Access feature: hashtag search for trend scans Then: Business Settings → System users → social-agent → Generate new token (tick the new scopes, never expires) → paste into .env as META_SYSTEM_USER_TOKEN. Run npm run test:meta in connector.

2. Turn publishing on

In .env: ALLOW_PUBLISH=true. Every post/reply still needs an admin's Approve click (or a "yes" in Claude Code).

3. Build and run the dashboard (on this PC)

cd dashboard
npm run build
npm start          # http://localhost:4310

Instagram posts go out only while something is running the queue. Either keep the dashboard running, or add a scheduled task:

schtasks /create /sc minute /mo 5 /tn "SocialManagerScheduler" /tr "node D:\MCS_Repos\2026\claude_Metatron_Social_Media_Manager\connector\scripts\run-scheduler.js"

(If you use the task, set SCHEDULER_ENABLED=false in .env so the two don't overlap. The lock file prevents double posts anyway.)

Dashboard → Clients → Add business → pick Infini's Page (or npm run link-clients). Its timezone is already Asia/Kolkata.

5. First real test

Schedule a Story for Falcon Fashions 20 minutes ahead → Approve → check it appears → check data/publish-log.jsonl.

6. Going beyond your own portfolio (later)

Clients' assets are shared into the MetatronCube portfolio, so development mode works for staff who have app roles. App Review + Tech Provider registration is only needed if clients ever log in to the app themselves.

7. Team uploads (Content library)

  • Each designer/editor needs a dashboard login: an admin adds them in Settings → Team members (members upload and schedule drafts; only admins approve). The admin gets a temporary password to send privately; the person chooses their own after signing in. Admins can also reset passwords, change roles, deactivate or remove people there. Logins are stored hashed in data/dashboard/users.json. If no admin can sign in, cd dashboard && npm run add-user -- you@agency.com "Name" admin still works as a backup.
  • Flow: team uploads finished work → admin reviews (approve / request changes with a note) → Schedule → draft in Publishing → admin approves → goes out at the client's local time.
  • Files are stored in data/library/<client>/<month>/ on this PC. Put the dashboard behind your network or a VPN if the team in India uploads remotely; don't expose port 4310 to the internet without HTTPS.
  • Optional Odoo link: pick the task when uploading. With ODOO_ALLOW_WRITES=true the task gets a note and moves to the project's "Review" stage on upload, "Done" on approval, and back to "In Progress" when changes are requested (matched by stage name).