Content Studio — Cron & Scheduling Specification
Content Studio uses three scheduled jobs for end-to-end content lifecycle management. Jobs can be installed via system cron or Clawdbot cron (preferred for AI-native features).
Full Public Reader
Content Studio — Cron & Scheduling Specification
Overview
Content Studio uses three scheduled jobs for end-to-end content lifecycle management. Jobs can be installed via system cron or Clawdbot cron (preferred for AI-native features).
Quick Start
# Install all cron jobs
content-studio cron install
# Or use the script directly
Desktop/content-studio/scripts/install-cron.sh install
# Check status
content-studio cron statusJob Definitions
Job 1: Weekly Content Generation (PRIMARY)
| Field | Value |
|---|---|
| Schedule | `0 20 0` — Every Sunday at 8 PM EST |
| Script | `scripts/generate-weekly.sh` |
| Duration | ~30s (harvest) + async (AI generation) |
| Lock | `logs/.generate.lock` (prevents concurrent runs) |
What it does:
1. Harvests 7 days of memory files, Chronicle moments, and git activity
2. Creates platform output directories (`output/[platform]/`)
3. Writes weekly manifest with themes and platform assignments
4. Dispatches AI content generation via Clawdbot (or writes manual flag)
5. Rotates logs older than 30 days
0 20 * * 0 Desktop/content-studio/scripts/generate-weekly.sh >> Desktop/content-studio/logs/cron.log 2>&1Job 2: Weekly Analytics Collection
| Field | Value |
|---|---|
| Schedule | `0 9 1` — Every Monday at 9 AM EST |
| Script | `scripts/collect-analytics.sh` |
| Duration | ~5s |
What it does:
1. Scans output directories for content from the past week
2. Supports both new (`output/[platform]/`) and legacy (`output/YYYY-MM-DD/`) layouts
3. Generates weekly review JSON in `analytics/weekly-reviews/`
4. Updates calendar state
5. Dispatches AI analytics review if content exists
0 9 * * 1 Desktop/content-studio/scripts/collect-analytics.sh >> Desktop/content-studio/logs/cron.log 2>&1Job 3: Daily Content Reminder
| Field | Value |
|---|---|
| Schedule | `0 8 1-6` — Mon-Sat at 8 AM EST |
| Type | Echo (no script) |
0 8 * * 1-6 echo "[content-studio] Review today's posts in Desktop/content-studio/output/"Installation Methods
Method 1: System Cron (Direct)
# Install all jobs
Desktop/content-studio/scripts/install-cron.sh install
# Verify
crontab -l | grep content-studio
# Remove
Desktop/content-studio/scripts/install-cron.sh uninstallAll jobs are tagged with `# content-studio` for clean install/uninstall.
> macOS Note: System cron requires Full Disk Access for the terminal app in System Settings → Privacy & Security → Full Disk Access.
Method 2: Clawdbot Cron (Preferred)
AI-native scheduling with richer context and heartbeat integration:
# Weekly generation
clawdbot cron add \
--name "content-weekly" \
--schedule "0 20 * * 0" \
--command "Run Desktop/content-studio/scripts/generate-weekly.sh, then generate content for all 5 platforms from the harvest data. Follow voice guide, templates, and editorial calendar. Output to output/[platform]/YYYY-MM-DD-slug.md."
# Weekly analytics
clawdbot cron add \
--name "content-analytics" \
--schedule "0 9 * * 1" \
--command "Run Desktop/content-studio/scripts/collect-analytics.sh, then review the weekly analytics and suggest content strategy adjustments."
# Daily reminder
clawdbot cron add \
--name "content-reminder" \
--schedule "0 8 * * 1-6" \
--command "Check Desktop/content-studio/output/ for today's scheduled posts. Remind about any drafts that need review."Why Clawdbot cron is preferred:
1. AI agent handles actual content generation natively
2. Integrates with heartbeat system for monitoring
3. Richer logs with generation metadata and quality scores
4. Can adapt to context (skip generation if no new moments)
5. No Full Disk Access requirement on macOS
Method 3: launchd (macOS Native)
For maximum reliability on macOS, use launchd. Create the plist:
# The install-cron.sh script handles this for you, but manually:
cat > [home-path] << 'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.content-studio.generate-weekly</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>Desktop/content-studio/scripts/generate-weekly.sh >> Desktop/content-studio/logs/cron.log 2>&1</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Weekday</key>
<integer>0</integer>
<key>Hour</key>
<integer>20</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>Desktop/content-studio/logs/launchd-generate.log</string>
<key>StandardErrorPath</key>
<string>Desktop/content-studio/logs/launchd-generate.err</string>
</dict>
</plist>
EOF
# Load
launchctl load [home-path]
# Unload
launchctl unload [home-path]Meta Ads Automation (Future)
These jobs integrate with the `meta-ads/` subsystem once API credentials are configured:
# Daily performance report (9 AM ET)
0 9 * * * cd Desktop/content-studio/meta-ads && python3 scripts/meta-ads-manager.py report
# Auto-pause underperformers (every 6 hours)
0 */6 * * * cd Desktop/content-studio/meta-ads && python3 scripts/meta-ads-manager.py optimize
# Weekly content-to-ads pipeline (Monday 8 AM ET)
0 8 * * 1 cd Desktop/content-studio/meta-ads && python3 scripts/content-to-ads.py
# Token health check (daily at midnight)
0 0 * * * cd Desktop/content-studio/meta-ads && python3 scripts/meta-ads-manager.py check-tokenThese are NOT installed by `install-cron.sh` — they require Meta API credentials first.
Output Path Convention
All generated content follows: `output/[platform]/YYYY-MM-DD-slug.md`
output/
├── twitter/
│ ├── 2026-02-17-ai-memory-insight.md
│ └── 2026-02-17-builder-monday-thread.md
├── linkedin/
│ └── 2026-02-17-collaborative-ai-framework.md
├── substack/
│ └── 2026-02-18-the-memory-problem.md
├── tiktok/
│ └── 2026-02-19-show-and-tell-demo.md
└── instagram/
└── 2026-02-19-visual-metaphor-carousel.mdLegacy date-organized output (`output/YYYY-MM-DD/platform-N.md`) is still supported by the analytics collector for backwards compatibility.
Log Files
| Log | Location | Rotation |
|---|---|---|
| Cron output | `logs/cron.log` | Manual |
| Generation logs | `logs/generate-YYYY-MM-DD.log` | Auto (30 days) |
| Analytics logs | `logs/analytics-YYYY-MM-DD.log` | Auto (30 days) |
| Harvest data | `logs/harvest-YYYY-MM-DD.md` | Auto (30 days) |
| Dispatch flags | `logs/dispatch-YYYY-MM-DD.flag` | Auto (14 days) |
| Weekly manifests | `output/manifest-YYYY-MM-DD.json` | Kept permanently |
Promotion Decision
Keep as idea/proposal unless evidence and implementation anchors exist.
Source Anchor
content-studio/scripts/CRON-SPEC.md
Detected Structure
Method · Figures · Code Anchors · Architecture