CONTENTENGINE

Human Guide — Your Paint-by-Numbers Manual — v1.0 — February 2026

Source: claude.ai/chat/f7a01dae-3d5b-40d7-b3de-d37b88505625

📋 PRD 🧑‍💻 Human Guide 🏗️ ADR
What is this? ContentEngine is your automated X/Twitter growth machine. It watches target accounts, generates smart replies, scores your posts against X's algorithm, and sends you a daily Telegram digest so you can approve replies with a tap. The AI agent (Claude Code) builds all the automation. This guide walks you through the 10 human steps only you can do — creating accounts, getting API keys, and verifying things work. Total hands-on time: about 45 minutes spread across the build.

The Dependency Chain

Here's what you need to do and in what order. Some steps can happen in parallel — others depend on previous steps being done first.

StepWhatDepends OnTimeCost
1Create Supabase projectNothing3 minFree
2Create Apify account + get API tokenNothing3 minFree (pay-per-use ~$1/mo)
3Create X Developer App (Free tier)Nothing5 minFree
4Create Telegram BotNothing2 minFree
5Get Anthropic API keyNothing2 min
6Run SQL schema in SupabaseStep 12 minFree
7Set up n8n credentialsSteps 1-55 minFree
8Add target accounts to SupabaseStep 610 minFree
9Add your voice profileStep 610 minFree
10End-to-end testSteps 6-95 minFree

Total setup time: ~45 minutes of your time. Steps 1-5 can be done in parallel (just opening tabs and grabbing keys). The AI agent handles building all 6 workflows, the database schema, and the prompts.


1

Create Supabase Project

What is Supabase?

Supabase is a hosted database service built on PostgreSQL. Think of it as a spreadsheet on steroids that your automation workflows can read and write to. It stores your target accounts, scraped tweets, generated replies, and performance data. The free tier is more than enough for personal use.

Do This:

  1. Go to https://supabase.com/dashboard
  2. Click "New Project" (or sign up first if you don't have an account — GitHub login is fastest)
  3. Set these values:
    • Project name: contentengine
    • Database password: Generate a strong one and save it somewhere — you'll need it later
    • Region: Pick the closest to you (US East if you're in Minnesota)
    • Plan: Free
  4. Click "Create new project" and wait 1-2 minutes for it to provision
  5. Once ready, go to Settings → API (left sidebar)
  6. Copy and save these two values:
    • Project URL — looks like https://abcdefgh.supabase.co
    • anon / public key — starts with eyJ... (it's long)
    • service_role key — also starts with eyJ... (different from the anon key)
⚠ Save all 3 values (URL, anon key, service_role key) in a text file. You'll paste them into n8n credentials in Step 7.
Verify: You should see a green "Active" status on your project dashboard. The API settings page shows both keys.
2

Create Apify Account + Get API Token

What is Apify?

Apify is a web scraping service. Instead of paying $100+/month for X's API to read tweets, Apify scrapers can pull public tweet data for about $0.40 per 1,000 tweets. You'll use roughly 3,000 tweets/month — that's about $1.20.

Do This:

  1. Go to https://apify.com and click "Sign up free"
  2. Create account (Google login works)
  3. Once in dashboard, click your profile icon (top right) → "Settings"
  4. Click "Integrations" in the left sidebar
  5. You'll see your Personal API token — click the copy icon
  6. Save this token — looks like apify_api_xxxxxxxxxxxxxxxx
⚠ Free tier includes $5/month in credits — more than enough. You'll only be charged if you exceed $5. You can set a spending limit under Settings → Billing to prevent surprises.
Verify: Go to Settings → Integrations. You should see your API token displayed.
3

Create X Developer App (Free Tier)

What is this?

X's free API tier lets you post tweets and replies (write-only). You can't read other people's tweets with it (that's what Apify is for). You need this so the system can post your approved replies to X on your behalf.

Do This:

  1. Go to https://developer.x.com/en/portal/dashboard
  2. Sign in with your X account
  3. If prompted, apply for developer access — select "Free" tier
  4. Create a new Project:
    • Name: ContentEngine
    • Use case: Making a botPosting content
  5. Create an App within the project:
    • Name: contentengine-bot
  6. Go to your app → "Keys and Tokens" tab
  7. Under Consumer Keys: Click "Regenerate" and save both:
    • API Key (also called Consumer Key)
    • API Key Secret (also called Consumer Secret)
  8. Under Authentication Tokens: Click "Generate" for Access Token & Secret:
    • Access Token
    • Access Token Secret
  9. Go to app Settings → User authentication settings → Edit:
    • Set App permissions to "Read and write"
    • Set callback URL to https://n8n.masterymade.com/callback
    • Save
⚠ CRITICAL: After changing permissions to "Read and write", you MUST regenerate your Access Token and Secret. Old tokens keep the old permissions. Go back to Keys and Tokens → Regenerate the Access Token.
⚠ Free tier limits: 1,500 posts/month, 50 posts per 24 hours. That's plenty for ~50 replies/day.
Verify: Your app's "Keys and Tokens" page shows all 4 values (API Key, API Secret, Access Token, Access Token Secret). App permissions shows "Read and Write".
4

Create Telegram Bot

What is this?

You'll get a daily digest of suggested replies via a Telegram bot. You tap to approve or reject each reply. Think of it as your command center — no need to log into any dashboard.

Do This:

  1. Open Telegram (if you don't have it, download from telegram.org)
  2. Search for @BotFather and start a chat
  3. Send: /newbot
  4. When asked for a name, enter: ContentEngine Bot
  5. When asked for a username, enter: contentengine_yourname_bot (must end in bot, must be unique)
  6. BotFather will reply with your bot token — looks like 7123456789:AAF-abcdef... — save this
  7. Now get your personal chat ID:
    • Search for @userinfobot and start a chat
    • Send any message — it will reply with your ID (a number like 123456789)
    • Save this number
  8. Start a chat with YOUR new bot (search for the username you just created) and send /start — this is required before the bot can message you
Verify: You have a bot token (from BotFather) and a chat ID (from userinfobot). You've sent /start to your new bot.
5

Get Anthropic API Key

What is this?

Anthropic makes Claude (the AI generating your replies and scoring your posts). You already have a Claude subscription for chat — this is the separate API key for programmatic access. It's pay-per-use: roughly $10/month at your expected volume.

Do This:

  1. Go to https://console.anthropic.com
  2. Sign in (or create account if needed)
  3. Click "API Keys" in the left sidebar
  4. Click "Create Key"
  5. Name it: contentengine
  6. Copy the key — starts with sk-ant-...
⚠ You need API credits loaded. Go to Settings → Billing → Add credits. $20 will last ~2 months at expected usage.
Verify: Your API Keys page shows the "contentengine" key as active. Billing shows a positive credit balance.
6

Run SQL Schema in Supabase

What is this?

The AI agent generated a SQL file that creates all the database tables ContentEngine needs. You just paste it and click Run.

Do This:

  1. Go to your Supabase project dashboard
  2. Click "SQL Editor" in the left sidebar
  3. Click "New Query"
  4. Open the file contentengine/supabase-schema.sql that Claude Code generated
  5. Copy the entire contents and paste into the SQL Editor
  6. Click "Run" (or Cmd+Enter)
  7. You should see "Success. No rows returned" — that's correct
Verify: Click "Table Editor" in the left sidebar. You should see 6 tables: target_accounts, scraped_posts, reply_candidates, reply_performance, scored_drafts, voice_profiles.
7

Set Up n8n Credentials

What is this?

n8n needs to know your API keys so the workflows can talk to Supabase, Apify, X, Anthropic, and Telegram. You store these as "Credentials" in n8n — they're encrypted and reusable across all workflows.

Do This:

  1. Go to https://n8n.masterymade.com
  2. Click "Credentials" in the left sidebar (or the icon that looks like a key)
  3. Create each credential:

7a. Supabase Credential

  1. Click "Add Credential" → Search "Supabase"
  2. Name: ContentEngine Supabase
  3. Host: paste your Supabase project URL from Step 1 (e.g., https://abcdefgh.supabase.co)
  4. Service Role Secret: paste the service_role key from Step 1
  5. Click Save

7b. HTTP Header Auth (for Apify)

  1. Click "Add Credential" → Search "Header Auth"
  2. Name: ContentEngine Apify
  3. Name: Authorization
  4. Value: Bearer YOUR_APIFY_TOKEN (paste token from Step 2)
  5. Click Save

7c. HTTP Header Auth (for Anthropic)

  1. Click "Add Credential" → Search "Header Auth"
  2. Name: ContentEngine Anthropic
  3. Name: x-api-key
  4. Value: paste your Anthropic API key from Step 5
  5. Click Save

7d. X / Twitter OAuth 1.0

  1. Click "Add Credential" → Search "Twitter OAuth API"
  2. Name: ContentEngine X
  3. Enter all 4 values from Step 3: Consumer Key, Consumer Secret, Access Token, Access Token Secret
  4. Click Save

7e. Telegram Credential

  1. Click "Add Credential" → Search "Telegram"
  2. Name: ContentEngine Telegram
  3. Access Token: paste bot token from Step 4
  4. Click Save
Verify: You should see 5 credentials listed in the Credentials page. Each should show a green checkmark if n8n was able to validate the connection.
8

Add Target Accounts

What is this?

These are the X accounts you want to strategically reply to. Pick 15-20 accounts in your niche that have engaged audiences. When they post, your system generates smart reply options for you.

Do This:

  1. Go to Supabase → Table Editortarget_accounts
  2. Click "Insert Row" for each target account
  3. For each account, fill in:
    • x_username: their handle without the @ (e.g., alexhormozi)
    • display_name: their display name (e.g., Alex Hormozi)
    • list_name: group them — e.g., ai_builders, growth_operators, thought_leaders
    • priority: 1 = most important to reply to, 10 = nice to have
    • notes: why you follow them, what topics to engage on

Suggested starting categories:

⚠ Start with 15-20 accounts max. Each account generates ~3 reply candidates per day. 20 accounts = ~60 reply options to review. More than 30 targets creates digest fatigue.
Verify: Query the table — you should see 15-20 rows, all with active = true.
9

Add Your Voice Profile

What is this?

The AI needs examples of YOUR writing style to generate replies that sound like you — not like generic AI. You'll paste your 10-20 best-performing posts and a few style notes. This is how the system learns your voice.

Do This:

  1. Go to Supabase → Table Editorvoice_profiles
  2. Click "Insert Row"
  3. Fill in:
    • profile_name: jason_x
    • top_posts: paste a JSON array of your best posts. Format:
      [
        {"text": "Your actual post text here", "likes": 45, "context": "post about AI leverage"},
        {"text": "Another top post here", "likes": 32, "context": "post about expert systems"},
        ...10-20 posts total
      ]
    • style_notes: Direct, stoic, operator tone. Uses metaphors from building and real estate. Never uses emojis or exclamation marks. Speaks as a peer, not a guru. Favors contrarian takes backed by experience.
    • tone_keywords: ["operator", "stoic", "leveraged", "no-fluff", "peer-to-peer", "contrarian"]
    • avoid_patterns: ["exclamation marks", "emoji", "hashtags", "this 🔥", "so true", "great thread"]
    • active: true

How to find your top posts:

Verify: The voice_profiles table has 1 row with active = true and a populated top_posts array with 10+ entries.
10

End-to-End Test

What you're testing:

The complete cycle: scrape targets → generate replies → get Telegram digest → approve a reply → see it posted to X.

Do This:

  1. Go to n8n → open WF-01-scrape-ingest
  2. Click "Execute Workflow" (manual trigger)
  3. Wait 30-60 seconds — check Supabase scraped_posts table for new rows
  4. If posts appeared → go to WF-02-reply-generation → Execute manually
  5. Wait 30-60 seconds — check reply_candidates table for new rows with status='pending'
  6. Go to WF-03-daily-digest → Execute manually
  7. Check Telegram — you should receive a formatted digest with reply options
  8. Tap "Approve" on one reply candidate in Telegram
  9. Check X — your reply should appear under the target's post within a few seconds
  10. Check reply_candidates table — the approved reply should show status='posted'

If something fails:

Verify: You received a Telegram digest, approved a reply, and it appeared on X. The scraped_posts and reply_candidates tables have data. Congratulations — the system works.

After Setup: What You Need to Know

Monthly Costs to Watch

ServiceMonthly CostAuto-Renews?
Apify (tweet scraping)~$1-5 depending on volumeYes — pay-per-use from credit balance
Anthropic API (reply gen + scoring)~$10-15Yes — deducts from prepaid credits
Everything else$0N/A
Total~$12-20/mo

If Something Breaks

Key File Locations

WhatWhereWhen You'd Touch It
Database tablesSupabase → Table EditorAdding/removing target accounts, reviewing data
Automation workflowsn8n.masterymade.com → WorkflowsIf you need to pause/restart the system
API credentialsn8n → CredentialsIf a token expires and needs regenerating
Voice profileSupabase → voice_profiles tableUpdating your style as it evolves
Target accountsSupabase → target_accounts tableAdding new targets, deactivating old ones
Reply historySupabase → reply_candidates tableReviewing what's been posted, checking performance

Quick Reference: What's What

ServiceWhat It DoesDo You Touch It?
n8nRuns all the automation workflows on a scheduleRarely — only if something breaks
SupabaseStores all your data (targets, tweets, replies, scores)Yes — to manage targets and voice profile
ApifyScrapes tweets from target accountsNo — workflows call it automatically
AnthropicAI that generates replies and scores postsNo — just keep credits topped up
X APIPosts approved replies to XNo — workflows handle it
TelegramWhere you review and approve daily reply digestsYes — your daily 5-minute interaction point

END OF HUMAN GUIDE — Companion to CONTENTENGINE-PRD.html and CONTENTENGINE-ADR.html