<aside> 🏭

THE CONTENT CREATION ENGINE turns one brand brief into researched, scripted, production-ready short-form content for TikTok, Instagram Reels, YouTube Shorts, LinkedIn and Facebook Reels — automatically.

Claude does the thinking (research synthesis, ideation, scriptwriting, quality control, performance analysis). n8n does the orchestration (branching, approvals, retries, storage, scheduling). The MVP path needs nothing beyond Claude + Google Sheets + Slack — every other integration (research APIs, stock assets, automated video rendering, voiceover, publishing) is optional and gated, never faked.

</aside>


What you get

<aside> 📦

Two importable n8n workflows plus nine supporting files — attached directly below and in the Full file set section at the bottom of this page:

Everything below is the readable, reference version of that same system — the architecture, every Claude prompt, the setup checklist and the schemas — so you can understand and edit the system without opening the JSON.

</aside>


Architecture

flowchart TD
    A["5 Triggers: Manual / Schedule / Form / Webhook / Sheets"] --> B["Normalize + Config + Validate Brief"]
    B -->|invalid| B1["Notify missing fields + Stop"]
    B -->|valid| C["Website Analysis (Claude: Brand Intelligence)"]
    C --> D["Market Research (Perplexity/Tavily/none)"]
    D --> E["Competitor Analysis Loop (Claude)"]
    E --> F["Claude: Content Pillars"]
    F --> G["Claude: Content Ideas (3x volume)"]
    G --> H["Dedupe + Ideas Database"]
    H --> I["Claude: Score and Rank Ideas"]
    I --> J["Per idea: Claude Hooks -> Script -> CTA -> Refine"]
    J -->|score fails, under cap| J
    J -->|score passes| K["Slack Send-and-Wait: Script Approval"]
    K -->|rejected/changes, under cap| J
    K -->|approved| L["Approved Scripts Database"]
    L --> M["Claude: Visual Direction + Shot List"]
    M --> N["Asset Retrieval (stock API or manual list)"]
    N --> O{"Production Mode"}
    O -->|Mode A default| P["Production Pack (no video API needed)"]
    O -->|Mode B| Q["Automated Render (Creatomate/Shotstack)"]
    P --> R["Claude: Platform Captions"]
    Q --> R
    R --> S["Voiceover (optional) + Claude: Automated QA"]
    S --> T["Claude: Performance Prediction + A/B Variations"]
    T --> U["Deterministic QC Checklist"]
    U -->|fail| J
    U -->|pass| V["Slack Send-and-Wait: Final Publishing Approval"]
    V -->|rejected/revise| J
    V -->|approved| W["Export Formats + Filenames"]
    W --> X["Storage (Drive or note)"]
    X --> Y{"Publishing Enabled?"}
    Y -->|no, default| Z1["Ready for Manual Publish"]
    Y -->|yes| Z2["Publish via Provider"]
    Z1 --> AA["Publishing Log"]
    Z2 --> AA
    AA -.scheduled.-> BB["Performance Tracking (24h/72h/7d/14d/30d)"]
    BB --> CC["Claude: Learning Loop"]
    CC -.feeds next cycle.-> G

The four stages


Integration matrix

Module Config variable Options Required? Fallback if unconfigured
Claude reasoning layer CLAUDE_MODEL Any Claude model Required N/A — core dependency
Human approval SLACK_APPROVAL_CHANNEL Slack (swap for Email/Teams) Required N/A — core dependency
Market research RESEARCH_PROVIDER perplexity / tavily / none Optional Empty research, Claude told not to invent sources
Asset retrieval ASSET_PROVIDER pexels / pixabay / unsplash / none Optional Organised manual asset request list
Video rendering VIDEO_RENDER_PROVIDER creatomate / shotstack / none Optional Production Pack mode (no video API)
Voiceover VOICEOVER_PROVIDER elevenlabs / none Optional Use brand/human voice, no auto-voiceover
Storage STORAGE_PROVIDER google_drive / none Optional "Save metadata locally" note
Publishing PUBLISHING_ENABLED true / false Optional, off by default Marked "ready for manual publish"