Publishing
Once the post is ready, you put it up on Blogger. Before publishing, the two gates (AI-smell, AdSense) screen the post once more, and only a post that clears them gets uploaded. It’s safer to confirm with a dry-run first before the actual upload.
1) Check the three credentials
Section titled “1) Check the three credentials”An actual publish needs three files.
BLOG_ID_KOandBLOG_ID_ENin.envscripts/credentials.json(Google OAuth client)scripts/token.json(generated automatically on first publish)
If you don’t know the blog IDs, the list-blogs command shows your account’s blog list and IDs. Write the IDs you find into .env.
BLOG_ID_KO=1234567890BLOG_ID_EN=9876543210There’s no need to make token.json ahead of time. It’s created automatically once you consent to Google in the browser on your first publish.
2) Check staging
Section titled “2) Check staging”Look at the post that’s ready to go up first. Tell Claude Code “show me posts awaiting publish” or run the command directly.
./scripts/deploy.sh stagingNormal screen: the list of posts awaiting publish under _workspace/posts/new/ shows. If the slug of the post you just wrote shows, it’s fine.
3) Dry-run first
Section titled “3) Dry-run first”Preview the result before the actual upload.
./scripts/deploy.sh publish-new --slug {slug} --dry-runReplace {slug} with the slug of the post you just wrote. The dry-run shows which post goes to which blog without actually putting it up. The two gates are re-checked at this step too.
Stuck screen:
- AI-smell gate fail → the post gets blocked. It means the AI flavor is heavy, so saying “rewrite it with less AI flavor” sends the orchestrator back to Phase 2 to fix it.
- Credentials missing → it runs only through dry-run and preflight, then stops. It reports which file is missing, so go back to the OAuth item in prerequisites.
4) The actual publish
Section titled “4) The actual publish”When the dry-run is clean, put it up for real.
./scripts/deploy.sh publish-new --slug {slug}On the first publish, the browser opens here and asks for Google consent. Once you consent, token.json is created and the upload proceeds.
Be sure to name the slug. Without a slug, every post in staging becomes a target, and posts you didn’t mean to put up yet can go up together.
5) Check after publishing
Section titled “5) Check after publishing”Once the upload finishes, see that the post moved to archive and the metadata is planted.
find _workspace/posts/ko _workspace/posts/en -iname "{slug}.md" -printNormal screen: the post moves from posts/new/ to posts/, and blogger_url gets filled into the frontmatter. Open that URL and you see the actually-published post. If you put up both the Korean and English versions, two file paths should show.
6) When you fix an already-published post
Section titled “6) When you fix an already-published post”When you fix a published post and put it back up, the base backs up the prior version first. A republish sometimes has to bypass the AI-smell gate, so there’s a --skip-gate flag, but you don’t use it for a new post’s first publish. The first publish has to clear the gate normally.
Once your first post is up, see what got screened automatically before publishing in automated-safety-net. If you want to spread the published post, go to promote.