blog-publish

blog-publish is a command for Claude Code from SaigonXIII/evc. It costs 0 tokens per session (1,290 once invoked), scanned A, original, MIT.

A command that sends a completed blog article, its metadata, and its images to a CMS, the system used to manage website content.

In plain words
What is it for?
Use it to publish approved blog posts, including their title, body, cover image, date, author, excerpt, and category.
Why use it?
It removes the manual work of uploading and mapping each part of an article, while stopping if required files or quality checks are missing.

Command for Claude Code

Written for Claude Code: a Claude Code command (commands/*.md).

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is bash scripts/export-staging.sh \.

Good fit Use it to publish approved blog posts, including their title, body, cover image, date, author, excerpt, and category.

Compare 6 commands from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/SaigonXIII/evc
agentmods
npx agentmods add commands/saigonxiii/evc/blog-publish

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for blog-publish

README.md
[![agentmods](https://agentmods.dev/badge/commands/saigonxiii/evc/blog-publish.svg)](https://agentmods.dev/commands/saigonxiii/evc/blog-publish)
Your own site
<a href="https://agentmods.dev/commands/saigonxiii/evc/blog-publish"><img src="https://agentmods.dev/badge/commands/saigonxiii/evc/blog-publish.svg" alt="Measured on agentmods" height="20"></a>
Per session 0 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,290 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.01290
Opus 5 $0.00000 $0.00645
Sonnet 5 $0.00000 $0.00258
Haiku 4.5 $0.00000 $0.00129

Measured 8d ago against content hash cc19c1038530, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

blog-publish scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

_templates/commands/blog-publish.md · 163 lines

How it starts

The opening of the file, as written. The whole thing — 163 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Blog Publish

Push a completed blog article to the CMS -- upload images, create CMS item, sync components. Final step in the blog production pipeline.

Trigger

User invokes /blog-publish [slug] or says "publish the blog", "push to CMS", "upload the article"

Examples:

  • /blog-publish how-we-built-our-first-feature
  • /blog-publish product-launch-announcement

Prerequisites

  • Copy: {{CONTENT_OUTPUT_DIR}}/blog/[slug]/copy.html
  • Metadata: {{CONTENT_OUTPUT_DIR}}/blog/[slug]/metadata.json
  • Exports: {{CONTENT_OUTPUT_DIR}}/blog/[slug]/exports/*.png
  • QA report should show READY status

If any are missing, report which and stop.

CMS Configuration

  • Collection ID: {{CMS_COLLECTION_ID}}
  • Field IDs (map to your CMS schema):
    • Title: {{CMS_FIELD_TITLE}}
    • Content: {{CMS_FIELD_CONTENT}}
    • Cover: {{CMS_FIELD_COVER}}
    • Date: {{CMS_FIELD_DATE}}
    • Author: {{CMS_FIELD_AUTHOR}}
    • Excerpt: {{CMS_FIELD_EXCERPT}}
    • Category: {{CMS_FIELD_CATEGORY}}

Steps

0. Staging Preview Gate

Before any publish work, confirm the staging HTML exists at staging/blog/[slug]-blog.html.

If the file does not exist, prompt and exit without publishing:

Staging HTML not found at staging/blog/[slug]-blog.html. Run /blog-assets [slug] first to build the staging page, then review it in your browser before publishing.

If the file exists, ask:

Have you reviewed the staging page at staging/blog/[slug]-blog.html? (yes/no)

Only proceed to Step 1 if the user answers yes. Otherwise, stop.

0b. Clean Export (strip internal drawer)

Before uploading the staging HTML content to the CMS, produce a clean export with the internal version drawer stripped:

mkdir -p staging/exports
bash scripts/export-staging.sh \
  staging/blog/[slug]-blog.html \
  staging/exports/[slug]-blog.html

Use staging/exports/[slug]-blog.html as the source for CMS upload — NEVER upload the staging file directly (it contains the internal review drawer). The clean export has all data-internal elements removed.

Read the full file on GitHub · 163 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 8d ago First seen · 163 lines · 0 tokens per session scan A cc19c1038530

Subscribe to this mod's changes

blog-publish is a command published in the GitHub repository SaigonXIII/evc (56 stars, last pushed 2mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,290 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.