Grand Diomande Research · Full HTML Reader

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).

Agents That Account for Themselves proposal backlog reference score 18 .md

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

bash
# 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 status

Job Definitions

Job 1: Weekly Content Generation (PRIMARY)

FieldValue
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

cron
0 20 * * 0 Desktop/content-studio/scripts/generate-weekly.sh >> Desktop/content-studio/logs/cron.log 2>&1

Job 2: Weekly Analytics Collection

FieldValue
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

cron
0 9 * * 1 Desktop/content-studio/scripts/collect-analytics.sh >> Desktop/content-studio/logs/cron.log 2>&1

Job 3: Daily Content Reminder

FieldValue
Schedule`0 8 1-6` — Mon-Sat at 8 AM EST
TypeEcho (no script)
cron
0 8 * * 1-6 echo "[content-studio] Review today's posts in Desktop/content-studio/output/"

Installation Methods

Method 1: System Cron (Direct)

bash
# 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 uninstall

All 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:

bash
# 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:

bash
# 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>&amp;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:

cron
# 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-token

These 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.md

Legacy date-organized output (`output/YYYY-MM-DD/platform-N.md`) is still supported by the analytics collector for backwards compatibility.

Log Files

LogLocationRotation
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