A zero-LLM daily marketing system for indie iOS developers. Write your angles once, then
a weekly planner + daily publisher handle the rest — generating platform-native copy and
scheduling posts to Postiz automatically.
platform-specific templates, and writes a weekly-plan-YYYY-MM-DD.json file.
No LLM required. Run once per week (or whenever you add new angles).
from the weekly plan, and schedules them to Postiz via its public API.
--text-only).The only time you need an LLM is to write new content bank angles when the bank runs dry.
| Platform | Post type | Volume |
|---|---|---|
| --- | --- | --- |
| TikTok | Video (requires separate video-gen script) | 3/day |
| YouTube Shorts | Video (reuses TikTok video) | 3/day |
| X / Twitter | Text tweet, 280-char trimmed | 2/day |
| Text brand post | Mon/Wed/Fri |
content-bank.json ← your angles (hook + texts + caption per angle)
│
▼
weekly-planner.js ← picks angles, renders templates → weekly-plan.json
│
▼
weekly-plan-YYYY-MM-DD.json
│
▼
daily-publisher.js ← reads today's posts → Postiz API → live schedule
│
▼
Postiz (postiz.com) ← buffers + publishes to each platform on schedule
Template system — content-templates.json defines patterns per platform (hot-take,
question-hook, relatable-meme, etc.). The planner cycles through patterns to avoid
repetition. Variables: {hook}, {insight}, {cta}, {appName}, {appHandle},
{hashtags}.
Posting history — posting-history.json tracks which angles have been posted so
the planner never repeats content until the bank is exhausted.
Connect your TikTok, YouTube, X, and Facebook accounts in the Postiz UI.
Note the integration IDs for each platform.
cd /path/to/your-app-marketing/
bash skills/indie-app-marketing-pipeline/scripts/setup.sh
The script will:
plans/, logs/, content-bank.json, etc.).env fileEdit config.json (created by setup.sh):
{
"app": {
"name": "YourAppName",
"handle": "@YourHandle",
"appStoreUrl": "https://apps.apple.com/app/yourapp",
"websiteUrl": "https://yourwebsite.com",
"topicCategory": "productivity"
},
"postiz": {
"apiKey": "$POSTIZ_API_KEY",
"integrationIds": {
"tiktok": "your-tiktok-integration-id",
"youtube": "your-youtube-integration-id",
"x": "your-x-integration-id",
"facebook": "your-facebook-integration-id"
}
}
}
Fill content-bank.json with angles for your app. See assets/sample-content-bank.json
for the format and references/content-bank-guide.md for strategy.
Each angle needs:
{
"id": "unique-kebab-case-id",
"hook": "One punchy sentence that is the hook",
"texts": [
"Opening line for the video script",
"Second beat",
"Third beat / insight",
"Close"
],
"caption": "TikTok/YouTube caption with hashtags"
}
node scripts/weekly-planner.js --dry-run # preview
node scripts/weekly-planner.js # write plan
node scripts/weekly-planner.js --week 2026-04-07 # specific start date
node scripts/weekly-planner.js --days 3 # plan just 3 days
node scripts/daily-publisher.js --dry-run # preview today
node scripts/daily-publisher.js # go live
node scripts/daily-publisher.js --text-only # skip video, schedule text only
node scripts/daily-publisher.js --skip-past # skip posts whose time has passed
# Open crontab
crontab -e
# Add line (runs at 7:00 AM daily):
0 7 * * * cd /path/to/your-app-marketing && node scripts/daily-publisher.js >> logs/cron.log 2>&1
Or use a launchd plist for more control.
Edit the VISUAL_SCHEDULE, X_SCHEDULE, and FB_SCHEDULE arrays in weekly-planner.js.
Times are in EST by default — change toISOEst() to use your timezone offset.
Default schedule:
| Slot | Platform | Time (EST) |
|---|---|---|
| --- | --- | --- |
| tiktok-1 | TikTok | 08:00 |
| youtube-short-1 | YouTube | 08:15 |
| tiktok-2 | TikTok | 13:00 |
| youtube-short-2 | YouTube | 13:15 |
| tiktok-3 | TikTok | 18:00 |
| youtube-short-3 | YouTube | 18:15 |
| x-1 | X | 10:30 |
| x-2 | X | 16:00 |
| fb-text-1 | 12:00 (Mon/Wed/Fri) |
Edit assets/content-templates.json to customize the copy patterns. The planner
rotates through all patterns for each platform. See the template variable reference
in references/platform-strategy.md.
Facebook posts come from a separate fb-brand-content-bank.json (richer, longer-form
content). The weekly planner picks from this bank for Mon/Wed/Fri slots.
See references/content-bank-guide.md for how to structure these.
Change ANGLES_PER_DAY (default: 3) in weekly-planner.js to post more or fewer
video angles per day.
scripts/
weekly-planner.js ← generate weekly plan
daily-publisher.js ← schedule today's posts to Postiz
setup.sh ← first-time setup
assets/
content-templates.json ← platform copy patterns
sample-content-bank.json ← 10 starter angles
references/
content-bank-guide.md ← how to write & maintain your angle bank
platform-strategy.md ← platform-specific best practices
共 1 个版本