siimply marketing
All guides
Guide
8 min read

Marketing on autopilot — running Claude on a schedule

Three real ways to put Claude on a cron (Claude Code scheduled tasks, Vercel Cron + AI SDK, or your own cron). Three concrete recipes — including weekly content batches that flow straight into the scheduler. Plus MCP for marketing.

"AI marketing automation" doesn't mean a black-box tool posting on your behalf. It means a small AI program that runs on a schedule, does a specific bounded task, and queues the result for your review. Done right, you spend 20 minutes a week reviewing instead of 5 hours generating.

Three valid setups

Option A — Claude Code scheduled tasks

Claude Code supports running skills on a cron from your machine (or a small VPS). The skill executes, output goes to a file or an HTTP endpoint, you review later. Lowest setup; doesn't need a cloud host. Downsides: your machine must be on when the cron fires, or you skip that window.

Quick start:

  1. Install the skill (e.g. ~/.claude/skills/weekly-content-batch/SKILL.md) — see /skills for ready-made files
  2. Configure a Claude Code scheduled task (see Claude Code docs; built-in feature) to run it Monday 09:00 with your brand brief as input
  3. Pipe the output to /api/v1/drafts via curl. Drafts appear in the calendar.

Option B — Vercel Cron + AI SDK + AI Gateway

A Next.js / Vercel Function on a cron schedule calls Claude (via AI Gateway with a "anthropic/claude-sonnet" provider string), processes the result, and POSTs into your database. Pros: runs 24/7, no laptop required. Cons: needs a hosted DB if you want persistence (current local-SQLite setup won't work on Vercel).

The route handler is just an app/api/cron/<name>/route.ts that calls generateText({model: "anthropic/claude-sonnet", ... }) and writes the output.

Option C — Your own crontab + Next.js route

A regular Unix cron (or launchd / Task Scheduler) hits a Next.js route on a schedule. The route runs the AI work and stores the result. This is what the existing scheduler uses for /api/cron/publish-due.

Example macOS crontab line:

0 9 * * 1 curl -fsS -H "Authorization: Bearer $CRON_SECRET" http://localhost:3000/api/cron/weekly-content-batch

Three concrete recipes

Recipe 1 — Monday morning content batch

Goal: 7 days of social posts queued for review by 09:30 every Monday.

  1. Skill: weekly-content-batch
  2. Cron: 0 9 * * 1
  3. Skill output: JSON array of 7 draft posts, one per day, with text + suggested image keywords.
  4. Cron handler POSTs each one to /api/v1/drafts with { status: "draft" }. Drafts (not queued) until you explicitly approve.
  5. You spend Monday morning reviewing in the Calendar UI. Approve ones you like, edit captions, delete bad ones. Approved → queued → published by the existing publisher cron.

Recipe 2 — Friday review digest

Goal: a 2-minute email every Friday summarizing the week's App Store reviews into themes.

  1. Fetch new reviews via the App Store Connect API (or scrape with app-store-scraper — npm package)
  2. Pipe through the app-store-review-digest skill
  3. Email the result to yourself via Resend (or post to a Slack / Discord webhook)
  4. Cron: 0 16 * * 5

Recipe 3 — Daily competitor signal

Goal: 5-minute daily digest of what competitors did.

  1. Pick 3-5 competitors. Add their RSS feeds (blog + changelog) + their X handles
  2. Cron fetches new items, dedupes against yesterday
  3. Pass new items to Claude with a prompt: "Summarize each into one sentence. Flag any pricing changes, new features, or PR mentions."
  4. Email yourself the digest. Cron: 0 8 * * *

MCP (Model Context Protocol) for marketing

MCP lets Claude in Claude Code reach external tools— your database, your analytics, your scheduler. Concretely: you can talk to Claude Code about "schedule a post for tomorrow with this caption" and Claude executes the API call without you copy-pasting.

To expose this app's /api/v1/* endpoints to Claude Code as an MCP server, drop the example config file at /skills/mcp-marketing-server.example.json into ~/.claude/mcp_servers.json. Now from any Claude Code session you can: "list my connected accounts", "create a draft tweet for Friday saying X", etc.

Safety + governance

  • Default to draft, not queued. AI output is never published without your eyes on it.
  • Log every cron run. Have an audit trail for what fired, with what input, and what came out.
  • Cap rate-limits.If the AI generates 10 posts a day in a buggy loop, you don't want all 10 to publish. The scheduler's stale-post protection prevents this for the scheduler — apply similar caps elsewhere.
  • Don't auto-reply to humans— even with AI. People can tell, and you'll torch trust to save 5 minutes.