JSTGTECH
← Back to projects

AI content pipeline with human approval

GitHub Actions workflows where Claude researches and drafts blog posts daily, and nothing publishes until a human approves it in the CMS.

aiautomationgithub-actionsclaude

The publishing engine behind this site: scheduled GitHub Actions where Claude Code researches, writes, and validates blog posts — with a human-approval gate built out of nothing but a draft flag and how GitHub tokens work.

The approval trick

Every automated post lands on main as draft: true, which every page, listing, and feed filters out — so the draft is versioned and reviewable but invisible. The workflows commit with the built-in GITHUB_TOKEN, and GitHub never triggers workflows from those pushes, so a bot commit can’t deploy. Publishing happens when I open the CMS, review the post in a live preview, and flip Draft off — my save is a normal commit that triggers the deploy. No custom approval system, no queue, no extra state: the git provenance of the commit is the approval gate.

The writers

  • Daily roundup — researches the last 24 hours of AWS and cloud-security news from primary sources and writes a ~500-word practical digest.
  • Weekly evergreen set — three writers run in sequence in one job (a tutorial, an AWS service spotlight, a security deep-dive), each surveying existing posts first so they never overlap.
  • Bulk front-loader — fills each collection toward a target count from a deduplicated topic backlog, for seeding a new content type.

Every writer must pass npm run build — the same Zod frontmatter validation the site uses — before anything is committed, so a malformed post can’t land.

Downstream automation

Approving a post in the CMS is also the trigger for syndication: a workflow diffs the approval push, finds posts whose draft flag flipped off, and shares them to X — with a per-post opt-out toggle right next to the Draft switch.