🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Content Pipeline Provisioner

by @olivimic

Self-serve AI content pipeline skill for OpenClaw. Sets up and runs a fully automated social media content engine on your own OpenClaw instance using your ow...

TERMINAL
clawhub install content-pipeline-provisioner

πŸ“– About This Skill


name: content-pipeline-provisioner description: "Self-serve AI content pipeline skill for OpenClaw. Sets up and runs a fully automated social media content engine on your own OpenClaw instance using your own API keys and accounts. Automates TikTok daily posts (AI-generated slides), Twitter/X 5 posts per day in your voice, newsletter 3x per week via MailerLite, daily blog post published to your site, and morning/evening Telegram briefings. Use when setting up a content pipeline for any product or brand, or when asked to 'provision pipeline for [product]', 'set up content pipeline', 'run my content engine', 'start posting for [product]', 'go live [slug]', 'pause pipeline', or 'resume pipeline'."

Content Pipeline Provisioner

Automated content engine for OpenClaw. One command sets up daily TikTok, Twitter, newsletter, blog, and briefings for any product β€” all on your machine, your accounts, your data.

This Skill Is Self-Hosted

You control everything. Your APIs, your accounts, your posting schedule. Nothing goes through Xero. For a fully done-for-you version (Xero runs it for you), see xeroaiagency.com/services.

What Gets Automated

| Channel | Frequency | Requirement | |---|---|---| | TikTok slideshow | 1/day | Postiz account + TikTok connected | | Twitter/X posts | 5/day | Postiz account + Twitter connected | | Newsletter | Mon/Wed/Fri | MailerLite API key + subscriber group | | Blog post | 1/day | Supabase + Netlify (see setup-checklist.md) | | Morning briefing | 7 AM daily | Telegram bot token + chat ID | | Evening briefing | 8 PM daily | Telegram bot token + chat ID |

Before You Start

Complete the setup checklist at references/setup-checklist.md. Takes ~30 minutes. You need:
  • OpenClaw installed and running
  • Larry skill installed (clawhub install larry or download from larrybrain.com) β€” this is the TikTok posting engine this skill runs on top of
  • Postiz account with TikTok + Twitter connected (postiz.com β€” free plan works)
  • OpenAI API key (for image + text generation)
  • MailerLite API key + group ID (for newsletter)
  • Telegram bot token + chat ID (for briefings)
  • Supabase + Netlify (optional β€” only needed for blog auto-publishing)
  • Trigger Commands

    | What you say | What happens | |---|---| | provision pipeline for [product] | Start interactive setup for a new product | | go live [slug] | Flip test posts to public after you've reviewed them | | pause pipeline [slug] | Disable all crons for a product | | resume pipeline [slug] | Re-enable crons for a product | | pipeline status | Show all active pipelines and their cron health |

    Provisioning Flow

    You: "provision pipeline for [product name]"
      β†’ Evo asks 6 questions (2 min)
      β†’ Generates config.json + voice guide
      β†’ Creates system folder in your workspace
      β†’ Registers 6 crons (SELF_ONLY β€” not public yet)
      β†’ Runs one test generation
      β†’ You review: "looks good" or "redo [feedback]"
      β†’ You say: "go live [slug]"
      β†’ Evo flips all crons to PUBLIC
      β†’ Pipeline runs daily from that point
    

    Step-by-Step Execution

    Step 1 β€” Ask 6 questions

    When triggered, ask the user in sequence (do not dump all at once):

    1. "What's the product name and what does it do? (2-3 sentences)" 2. "Who is your target audience?" 3. "Describe your brand voice in 3 words (e.g. bold, educational, casual)" 4. "Any topics that are completely off-limits?" 5. "What are your TikTok and Twitter/X usernames?" 6. "What timezone should posts go out in? (e.g. America/New_York)"

    Step 2 β€” Generate system slug

    slug = productName.toLowerCase().replace(/[^a-z0-9]/g, '-').replace(/-+/g, '-') Example: "Echo Reviews" β†’ "echo-reviews"

    Step 3 β€” Create system folder

    LARRY_ROOT = ~/[workspace]/99-External-Systems/skills/larry
    SYSTEMS_DIR = {LARRY_ROOT}/tiktok-marketing/systems
    TEMPLATE_DIR = {SYSTEMS_DIR}/echo-system-1
    NEW_DIR = {SYSTEMS_DIR}/{slug}-system-1
    
  • Copy template: cp -r {TEMPLATE_DIR} {NEW_DIR}
  • Write {NEW_DIR}/config.json using answers from Step 1. See references/config-schema.md.
  • Write {NEW_DIR}/voice.md from brand voice + product description. See references/voice-guide-template.md.
  • Add entry to {LARRY_ROOT}/tiktok-marketing/systems.json
  • Step 3b β€” Generate Twitter config

    Write {LARRY_ROOT}/social/twitter/config.json using the buyer's brand details. This file MUST be generated fresh β€” never copy Xero's version. Use this structure:
    {
      "brand": {
        "company": "{productName}",
        "products": ["{productName}"],
        "mission": "{one-line mission derived from product description}"
      },
      "timezone": "{user timezone from Step 1}",
      "leadMinutes": 10,
      "schedule": ["09:00", "12:00", "15:00", "18:00", "20:00"],
      "postiz": {
        "integrationId": "{POSTIZ_TWITTER_ID from .env}",
        "secretFile": "config/secrets/postiz_keys.json"
      },
      "openai": {
        "secretFile": "config/secrets/openai_keys.json"
      },
      "voiceFile": "{NEW_DIR}/voice.md",
      "outputDir": "99-External-Systems/skills/larry/social/twitter/posts",
      "mixTargets": {
        "build": 0.35,
        "ai_news": 0.20,
        "ops_lesson": 0.20,
        "engage": 0.15,
        "cta": 0.10
      }
    }
    

    Step 4 β€” Load user credentials

    Read from ~/.openclaw/.env:
  • OPENAI_API_KEY β€” required for image generation
  • POSTIZ_API_KEY β€” required for scheduling
  • POSTIZ_TIKTOK_ID β€” Postiz integration ID for TikTok
  • POSTIZ_TWITTER_ID β€” Postiz integration ID for Twitter
  • MAILERLITE_API_KEY + MAILERLITE_GROUP_ID β€” required for newsletter
  • TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID β€” required for briefings
  • If any required key is missing, tell the user exactly which one and link to references/setup-checklist.md for how to get it.

    Step 5 β€” Register crons (SELF_ONLY β€” test mode)

    Register 6 crons using the cron tool. All start as SELF_ONLY / dry-run until user confirms:

    TikTok β€” daily at 7:30 AM user timezone: "Run the TikTok daily post for {slug} system at {NEW_DIR} in SELF_ONLY mode"

    Twitter (Γ—5) β€” spread across day, user timezone: "Run Twitter posts for {slug} using voice guide at {NEW_DIR}/voice.md β€” post to Postiz SELF_ONLY"

    Newsletter β€” Mon/Wed/Fri 9 PM: "Draft and send {productName} newsletter using voice at {NEW_DIR}/voice.md and MailerLite config"

    Blog β€” daily 2 PM: "Write and publish one SEO blog post for {productName} using voice at {NEW_DIR}/voice.md"

    Morning briefing β€” 7 AM: "Send morning pipeline briefing for {productName} to Telegram TELEGRAM_CHAT_ID"

    Evening briefing β€” 8 PM: "Send evening pipeline briefing for {productName} to Telegram TELEGRAM_CHAT_ID"

    Store cron IDs in {NEW_DIR}/cron-ids.json.

    Step 6 β€” Run test generation

    Generate one TikTok hook pack and one sample tweet. Show output to user. Ask: "Does this look right? Say 'go live [slug]' when ready, or 'redo [feedback]' to adjust."

    Step 7 β€” Go live

    When user says "go live [slug]":
  • Update {NEW_DIR}/config.json: set posting.privacyLevel to "PUBLIC"
  • Update all crons to remove SELF_ONLY restriction
  • Confirm to user: "Pipeline is live. First public post goes out tomorrow at 7:30 AM [timezone]."
  • Pause / Resume

    Pause: Disable all crons in {NEW_DIR}/cron-ids.json using cron tool. Update config: "active": false. Resume: Re-enable all crons. Update config: "active": true. Confirm to user.

    Error Handling

  • Missing API key β†’ tell user exactly which key, link to setup-checklist.md
  • Postiz error β†’ check integration IDs, suggest reconnecting channel in Postiz
  • MailerLite error β†’ verify API key and group ID are correct
  • Image generation failure β†’ retry once, then fall back to text-only post with note to user
  • Reference Files

  • references/setup-checklist.md β€” step-by-step account setup (start here)
  • references/config-schema.md β€” how to map product answers to config.json fields
  • references/voice-guide-template.md β€” format for generating voice.md
  • references/blog-schema.md β€” Supabase table schema for blog publishing