CONTENTENGINE
Human Guide — Your Paint-by-Numbers Manual — v1.0 — February 2026
Source: claude.ai/chat/f7a01dae-3d5b-40d7-b3de-d37b88505625
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.
| Step | What | Depends On | Time | Cost |
| 1 | Create Supabase project | Nothing | 3 min | Free |
| 2 | Create Apify account + get API token | Nothing | 3 min | Free (pay-per-use ~$1/mo) |
| 3 | Create X Developer App (Free tier) | Nothing | 5 min | Free |
| 4 | Create Telegram Bot | Nothing | 2 min | Free |
| 5 | Get Anthropic API key | Nothing | 2 min | Pay-per-use ~$10/mo |
| 6 | Run SQL schema in Supabase | Step 1 | 2 min | Free |
| 7 | Set up n8n credentials | Steps 1-5 | 5 min | Free |
| 8 | Add target accounts to Supabase | Step 6 | 10 min | Free |
| 9 | Add your voice profile | Step 6 | 10 min | Free |
| 10 | End-to-end test | Steps 6-9 | 5 min | Free |
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.
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:
- Go to https://supabase.com/dashboard
- Click "New Project" (or sign up first if you don't have an account — GitHub login is fastest)
- 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
- Click "Create new project" and wait 1-2 minutes for it to provision
- Once ready, go to Settings → API (left sidebar)
- 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:
- Go to https://apify.com and click "Sign up free"
- Create account (Google login works)
- Once in dashboard, click your profile icon (top right) → "Settings"
- Click "Integrations" in the left sidebar
- You'll see your Personal API token — click the copy icon
- 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.
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:
- Go to https://developer.x.com/en/portal/dashboard
- Sign in with your X account
- If prompted, apply for developer access — select "Free" tier
- Create a new Project:
- Name:
ContentEngine
- Use case:
Making a bot → Posting content
- Create an App within the project:
- Go to your app → "Keys and Tokens" tab
- Under Consumer Keys: Click "Regenerate" and save both:
- API Key (also called Consumer Key)
- API Key Secret (also called Consumer Secret)
- Under Authentication Tokens: Click "Generate" for Access Token & Secret:
- Access Token
- Access Token Secret
- 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".
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:
- Open Telegram (if you don't have it, download from telegram.org)
- Search for @BotFather and start a chat
- Send:
/newbot
- When asked for a name, enter:
ContentEngine Bot
- When asked for a username, enter:
contentengine_yourname_bot (must end in bot, must be unique)
- BotFather will reply with your bot token — looks like
7123456789:AAF-abcdef... — save this
- 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
- 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.
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:
- Go to https://console.anthropic.com
- Sign in (or create account if needed)
- Click "API Keys" in the left sidebar
- Click "Create Key"
- Name it:
contentengine
- 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:
- Go to your Supabase project dashboard
- Click "SQL Editor" in the left sidebar
- Click "New Query"
- Open the file
contentengine/supabase-schema.sql that Claude Code generated
- Copy the entire contents and paste into the SQL Editor
- Click "Run" (or Cmd+Enter)
- 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.
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:
- Go to https://n8n.masterymade.com
- Click "Credentials" in the left sidebar (or the icon that looks like a key)
- Create each credential:
7a. Supabase Credential
- Click "Add Credential" → Search "Supabase"
- Name:
ContentEngine Supabase
- Host: paste your Supabase project URL from Step 1 (e.g.,
https://abcdefgh.supabase.co)
- Service Role Secret: paste the
service_role key from Step 1
- Click Save
7b. HTTP Header Auth (for Apify)
- Click "Add Credential" → Search "Header Auth"
- Name:
ContentEngine Apify
- Name:
Authorization
- Value:
Bearer YOUR_APIFY_TOKEN (paste token from Step 2)
- Click Save
7c. HTTP Header Auth (for Anthropic)
- Click "Add Credential" → Search "Header Auth"
- Name:
ContentEngine Anthropic
- Name:
x-api-key
- Value: paste your Anthropic API key from Step 5
- Click Save
7d. X / Twitter OAuth 1.0
- Click "Add Credential" → Search "Twitter OAuth API"
- Name:
ContentEngine X
- Enter all 4 values from Step 3: Consumer Key, Consumer Secret, Access Token, Access Token Secret
- Click Save
7e. Telegram Credential
- Click "Add Credential" → Search "Telegram"
- Name:
ContentEngine Telegram
- Access Token: paste bot token from Step 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.
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:
- Go to Supabase → Table Editor →
target_accounts
- Click "Insert Row" for each target account
- 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:
- 5-7 accounts in your direct niche (AI, expert systems, venture building)
- 5-7 accounts with large audiences you want exposure to
- 3-5 accounts of peers/collaborators where replies build relationships
⚠ 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.
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:
- Go to Supabase → Table Editor →
voice_profiles
- Click "Insert Row"
- 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:
- Go to X → your profile → sort by most engagement (or use X Analytics at analytics.x.com)
- Pick posts with the highest reply counts and likes — these are the posts where your voice connected
- Include a mix: some short punchy takes, some longer threads, some replies that got traction
Verify: The voice_profiles table has 1 row with active = true and a populated top_posts array with 10+ entries.
What you're testing:
The complete cycle: scrape targets → generate replies → get Telegram digest → approve a reply → see it posted to X.
Do This:
- Go to n8n → open WF-01-scrape-ingest
- Click "Execute Workflow" (manual trigger)
- Wait 30-60 seconds — check Supabase
scraped_posts table for new rows
- If posts appeared → go to WF-02-reply-generation → Execute manually
- Wait 30-60 seconds — check
reply_candidates table for new rows with status='pending'
- Go to WF-03-daily-digest → Execute manually
- Check Telegram — you should receive a formatted digest with reply options
- Tap "Approve" on one reply candidate in Telegram
- Check X — your reply should appear under the target's post within a few seconds
- Check
reply_candidates table — the approved reply should show status='posted'
If something fails:
- WF-01 returns no data: Check Apify token is valid. Check target_accounts has rows with
active=true. Check the Apify actor name is correct.
- WF-02 returns errors: Check Anthropic API key. Check you have API credits. Check the prompt files exist.
- No Telegram message: Check bot token. Check chat_id. Make sure you sent
/start to your bot.
- Reply doesn't post to X: Check X API credentials. Make sure app permissions are "Read and Write". Regenerate access token after changing permissions.
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
| Service | Monthly Cost | Auto-Renews? |
| Apify (tweet scraping) | ~$1-5 depending on volume | Yes — pay-per-use from credit balance |
| Anthropic API (reply gen + scoring) | ~$10-15 | Yes — deducts from prepaid credits |
| Everything else | $0 | N/A |
| Total | ~$12-20/mo | |
If Something Breaks
- If scraping stops working: Apify actors get updated occasionally. Check if there's a newer version of the tweet scraper at apify.com/store.
- If replies fail to post: X access tokens can expire. Go to developer.x.com → regenerate Access Token and update in n8n credentials.
- If LLM calls fail: Check Anthropic credit balance at console.anthropic.com. Reload $20 if empty.
- If no Telegram digest arrives: Check n8n → Executions tab → look for failed WF-03 runs. Usually a credential issue.
- If everything is broken: Go to n8n → Workflows → deactivate all WF workflows → reactivate one at a time, testing each.
Key File Locations
| What | Where | When You'd Touch It |
| Database tables | Supabase → Table Editor | Adding/removing target accounts, reviewing data |
| Automation workflows | n8n.masterymade.com → Workflows | If you need to pause/restart the system |
| API credentials | n8n → Credentials | If a token expires and needs regenerating |
| Voice profile | Supabase → voice_profiles table | Updating your style as it evolves |
| Target accounts | Supabase → target_accounts table | Adding new targets, deactivating old ones |
| Reply history | Supabase → reply_candidates table | Reviewing what's been posted, checking performance |
Quick Reference: What's What
| Service | What It Does | Do You Touch It? |
| n8n | Runs all the automation workflows on a schedule | Rarely — only if something breaks |
| Supabase | Stores all your data (targets, tweets, replies, scores) | Yes — to manage targets and voice profile |
| Apify | Scrapes tweets from target accounts | No — workflows call it automatically |
| Anthropic | AI that generates replies and scores posts | No — just keep credits topped up |
| X API | Posts approved replies to X | No — workflows handle it |
| Telegram | Where you review and approve daily reply digests | Yes — your daily 5-minute interaction point |
END OF HUMAN GUIDE — Companion to CONTENTENGINE-PRD.html and CONTENTENGINE-ADR.html