CLAUDE LABJP
FORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as OctoberFORK — Claude Code 2.1.212 changes what /fork does: it copies your conversation into a new background session with its own row in claude agents, so you can keep working. The old in-session subagent is now /subtaskLIMITS — WebSearch calls are now capped at 200 per session by default, and subagent spawns get the same 200 ceiling, so a runaway search or delegation loop stops on its ownMCPBG — MCP tool calls running past two minutes now move to the background automatically, keeping the session usable. Tune the threshold with CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSPLANFIX — Fixed plan mode auto-running file-modifying Bash commands such as touch and rm without a permission prompt or an SDK canUseTool callbackSONNET5 — Claude Sonnet 5 is running on introductory pricing of $2 per million input tokens and $10 per million output. After August 31 it moves to $3 and $15IPO — Bankers are reportedly lining up investor meetings for Anthropic ahead of a possible public listing as soon as October
Articles/Claude Code
Claude Code/2026-05-25Advanced

Notes from Seven Months of Running a Four-Site Auto-Publishing Pipeline with Claude Code and GitHub Actions

Lessons from running Claude Code scheduled tasks to auto-publish 16 articles a day across four Lab sites, including the Helpful Content System index collapse that forced a redesign of the quality gate, with the full Python gate code, token management, and rollback procedure.

claude-code129github-actions4automation95ci-cd8blog-opsquality-gateindie-developer6

Premium Article

Seven months ago, the indexed pages on Claude Lab dropped from 3,500 to 95 in a single week. The cause was unsurprising in hindsight: I had been letting Claude Code write articles on a daily schedule, and Google's Helpful Content System eventually flagged the output as "templated mass-generated thin content." A common story for anyone running an AI-driven blog at scale.

I am Masaki Hirokawa. I have been building iOS and Android apps as a solo developer since 2014 — roughly 50 million cumulative downloads — and currently run four Lab sites (Claude/Gemini/Antigravity/Rork) and two blog sites (Lacrima/Mystery) by myself, all on a Claude Code scheduled pipeline that publishes 16 articles a day. After the index collapse, I rebuilt the quality gate in Python and the pipeline has not crashed the same way since.

These notes cover the quality-gate design that survives 480 posts a month while you sleep, plus the operational habits around GitHub Actions, PAT rotation, and disk management. It is aimed at solo developers running multiple AI-assisted sites in parallel who have been bitten by the same quality-versus-quantity trap.

Why a Quality Gate Had to Be Bolted On

For the first few months, the setup was naive: a scheduled task per site that said "generate four articles per day and push." Topic selection, MDX writing, and git push all happened inside one Claude Code invocation. I assumed Claude was smart enough that machine-readable quality checks would be redundant.

After three months I opened Google Search Console and froze. Claude Lab's indexed pages had collapsed from 3,500 to 95. Monthly clicks went from 2,500 to 200 and impressions from 160K to 48K. There was no manual penalty notice, so this was algorithmic — Helpful Content System, almost certainly.

Re-reading the articles, the cause was visible: templated phrases like "in this article we will discuss," "how did you like it," and "the definitive guide" had crept in everywhere. Each article was fine on its own, but stacked over three months they made the entire site read like an AI template farm. From Google's algorithmic point of view, the same impression.

The lesson is the load-bearing premise of everything that follows. A loop where Claude writes, Claude judges, and Claude pushes — with no human in the middle — drifts toward template degradation. You have to insert one more inescapable, mechanical gate, or it eventually collapses.

Architecture — Four Sites, Four Posts Each, Run While You Sleep

The current shape:

┌─────────────────────────────────────────────────┐
│ Cowork scheduled tasks (16 tasks, 02-17 JST)    │
│   - claudelab-premium-thu     02:00              │
│   - gemilab-premium-thu       02:45              │
│   - antigravitylab-premium    04:00              │
│   - rorklab-premium           04:45              │
│   ... (4 sites x 4/day = 16/day)                 │
└──────────────────┬──────────────────────────────┘
                   │ each task launches Claude Code
                   ▼
┌─────────────────────────────────────────────────┐
│ Claude Code (per task)                           │
│  1. Read SKILL.md                                │
│  2. Pick a topic with no overlap                 │
│  3. Generate MDX (JA + EN)                       │
│  4. Run article_gate.py  ← machine gate          │
│  5. If violations: discard, regenerate (max 3x)  │
│  6. Verify JA/EN count parity                    │
│  7. git push (persistent /tmp/repos/{site}/)     │
└──────────────────┬──────────────────────────────┘
                   │ push triggers
                   ▼
┌─────────────────────────────────────────────────┐
│ Cloudflare Pages CI                              │
│  - prebuild: node generate-content.mjs            │
│    (MDX→JSON + consistency + link validation)    │
│  - build: next build                              │
│  - deploy: Cloudflare Workers                     │
└─────────────────────────────────────────────────┘

Three points matter. (1) Claude Code does not only write — it also discards. (2) The quality gate lives in a separate Python process (article_gate.py) outside Claude's context, so judgment is not done by the same model that wrote the text. (3) The post-push validation in generate-content.mjs runs again in CI, giving you two independent sieves.

The bias problem is the reason. If you ask Claude to evaluate Claude's own output, the evaluation is generous. A dumb regex script that just counts pattern matches has none of that empathy, and Claude has to discard articles it personally liked when they trip a rule. That inescapability is what holds the pipeline together post-collapse.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
A full picture of running a four-site, four-articles-per-day auto-publishing pipeline solo with Claude Code and GitHub Actions — including the role design that survives 480 posts per month without breaking.
The complete Python quality-gate code, derived from a real Helpful Content System incident where one site's indexed pages collapsed from 3,500 to 95 in a week, with each rule mapped to the failure mode it prevents.
Operations patterns for unattended overnight runs: GitHub PAT rotation, automatic disk reclamation, and autonomous error recovery — the things that actually let you sleep while the pipeline pushes.
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Claude Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $10 for lifetime access
View Membership →

Related Articles

Claude Code2026-04-25
Automating CI/CD Pipelines with Claude Code's --print and --output-format json
A practical guide to using Claude Code's --print flag and --output-format json in CI/CD pipelines. Covers automated code review in GitHub Actions, PR comment generation, and test failure analysis — with working code throughout.
Claude Code2026-04-01
Claude Code × App Store Connect API: A Complete Automated iOS/Android Release Pipeline Guide
Learn how to combine App Store Connect API with Claude Code to fully automate iOS app releases. From AI-generated release notes to TestFlight distribution and GitHub Actions integration, this guide covers the complete pipeline with working code.
Claude Code2026-03-23
Claude Code --bare Flag: Headless Automation and Scripted Execution
Learn how to use Claude Code's new --bare flag for fast, lightweight scripted automation. This guide covers CI/CD pipelines, batch processing, and safety best practices for headless Claude Code execution.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →