--- created: 2026-03-15 path: Sources/Dev project: instagram-automation-content-hub-plan status: active tags: - pbs - n8n - instagram - automation - mysql - flask - docker - wordpress type: project-plan updated: 2026-03-15 --- # Instagram Automation & Content Hub — Master Plan ## Background This plan consolidates two sessions of work: - Finishing error checking on the Instagram comment reply workflow - Redesigning the data pipeline to simplify the reply workflow and automate recipe/reel syncing ### Key Architecture Decision The reply workflow will be refactored to use a **single `instagram_posts` table lookup** instead of the current two-table lookup + merge pattern. The `instagram_posts` table will store the recipe URL directly, eliminating the need to join with `pbs_recipes` at reply time. --- ## Phase 1 — Foundation - [ ] Add phpMyAdmin back to Docker Compose on staging - [ ] Design final MySQL schema - `pbs_recipes` — post_id, title, url, keyword (updated) - `instagram_posts` — reel_id, post_id (FK), url, keyword (new url field) - Foreign key linking `instagram_posts.post_id` → `pbs_recipes.post_id` - [ ] Migrate n8n datatables to MySQL - [ ] Verify PBS-API can query updated schema --- ## Phase 2 — Finish Error Checking on Reply Workflow - [ ] Refactor reply workflow to single `instagram_posts` table lookup (remove merge) - [ ] Add IF node after table lookup → Notify Travis on no record found - [ ] Add IF node for keyword not matched → Notify Travis - [ ] Verify subscribe check → Notify Travis (already built) - [ ] Verify hash check → Notify Travis (already built) - [ ] Test all error paths on staging - [ ] Deploy to production ### Notify Travis Workflow (already built) - Webhook trigger at: https://n8n.plantbasedsoutherner.com/webhook/notify-pbschat - Payload format: { "title": "Alert title", "message": "Detail message", "timestamp": "={{ $now.toFormat('MMM dd, HH:mm:ss') }}" } --- ## Phase 3 — WordPress → MySQL Sync - [ ] Wire WordPress publish webhook (proof of concept built) to n8n workflow - [ ] n8n workflow inserts/updates `pbs_recipes` table on post publish - [ ] Handle duplicate detection (re-publish should UPDATE not INSERT) - [ ] HMAC signature verification on incoming webhook (already built in WPCode Lite) - [ ] Test with staging WordPress → staging n8n → staging MySQL - [ ] Deploy to production ### WordPress Webhook Details (already built) - WPCode Lite snippet fires on post publish (admin only) - Payload: post_id, title, url, tags, categories - HMAC signature via X-PBS-Signature header - Raw body passed via X-PBS-Body header (base64) for signature verification --- ## Phase 4 — Instagram Reel Publish Webhook - [ ] Research Meta API for reel publish webhook event - [ ] Build n8n workflow to receive reel publish event - [ ] Insert record into `instagram_posts` on new reel - [ ] Auto-populate URL by looking up matching `pbs_recipes` record via post_id in caption - [ ] Trigger match verification check after insert - If match found → update record, no alert - If no match found → Notify Travis to manually link --- ## Phase 5 — PBS Content Hub Updates (Planning Required First) - [ ] **Planning session required before any code is written** - [ ] Review current Content Hub architecture and existing features - [ ] Define full requirements for: - Recipe review UI — Jenny can view new recipe records, confirm or edit keyword before reel goes live - Reel/recipe match status dashboard — shows matched vs unmatched reels at a glance - Manual match correction UI — fix bad or missing matches without touching MySQL directly - [ ] Design UI/UX mockups - [ ] Get Jenny feedback on workflow fit - [ ] Build once requirements are locked --- ## Full Automation Flow (Target State) 1. Recipe published on WordPress → WPCode Lite webhook fires → n8n inserts record into `pbs_recipes` 2. Jenny reviews PBS Content Hub → Confirms or edits keyword → One intentional human checkpoint ✅ 3. Jenny publishes Instagram reel (with WordPress post_id in caption) → Meta webhook fires → n8n inserts record into `instagram_posts` with URL from `pbs_recipes` 4. System verifies match → If clean → ready for comments → If broken → Notify Travis via Google Chat 5. User comments on reel → n8n comment reply workflow fires → Single lookup on `instagram_posts` → Keyword match → send DM + public reply → All dead ends → Notify Travis --- ## Notes - All development on staging first, then promote to production - phpMyAdmin for direct MySQL access (Travis/admin only) - PBS Content Hub is the Jenny-facing interface for data management - Notify Travis workflow handles ALL alerts (Google Chat) - n8n datatables to be fully retired once MySQL migration complete --- *Last Updated: March 15, 2026* *Maintained by: Travis* *Project: Plant Based Southerner — Instagram Automation*