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.
git clone --depth 1 https://github.com/SaigonXIII/evcnpx agentmods add commands/saigonxiii/evc/blog-assetsWrote 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.
[](https://agentmods.dev/commands/saigonxiii/evc/blog-assets)<a href="https://agentmods.dev/commands/saigonxiii/evc/blog-assets"><img src="https://agentmods.dev/badge/commands/saigonxiii/evc/blog-assets.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.02635 |
| Opus 5 | $0.00000 | $0.01318 |
| Sonnet 5 | $0.00000 | $0.00527 |
| Haiku 4.5 | $0.00000 | $0.00264 |
Grade A, and why
blog-assets 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 6d 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.
How it starts
The opening of the file, as written. The whole thing — 296 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Blog Assets
Build HTML templates for each visual placeholder in a blog article and batch-export them as 1200x675 PNGs at 2x. Fourth step in the blog production pipeline.
Trigger
User invokes /blog-assets [slug] or says "build the blog visuals", "export blog images", "create assets for the article"
Examples:
/blog-assets five-ways-to-write-a-better-headline/blog-assets product-launch-playbook
Prerequisites
- QA-passed copy must exist at
{{CONTENT_OUTPUT_DIR}}/blog/[slug]/copy.html - QA report should show READY status
- Reference screenshot required — capture via
/project:reference-capture blog-[slug](or the live blog URL). Thecheck-referencehook will block visual exports if no reference exists from the last 7 days. Bypass withALLOW_GREENFIELD=truein config.env for projects with no live site. - If no copy exists, prompt: "No copy found. Run
/blog-draft [slug]first."
Step 0 — Reference Check (MANDATORY)
Before doing anything else, verify a reference screenshot exists:
ls staging/references/*.png 2>/dev/null
If nothing in the last 7 days:
- Stop immediately
- Tell the user: "No reference screenshot found. Run
/project:reference-capture [target]first so we can see what currently exists at this URL before designing the new version." - Wait for them to run the command
The check-reference hook will also block the Puppeteer/Playwright export step if a reference is missing, but catching it here gives a better user experience than hitting the hook mid-build.
Steps
1. Parse Visual Map
Read the copy and extract all <img class="blog-asset"> tags:
- Parse
srcattribute for asset names - Parse
altattribute for content description - Read the outline's Visual Map for asset types and themes
2. Build HTML Templates
For each asset, create an HTML template at:
{{CONTENT_OUTPUT_DIR}}/blog/[slug]/assets/[asset-name].html
Template structure:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
width: 1200px;
height: 675px;
font-family: 'Inter', -apple-system, sans-serif;
overflow: hidden;
}
/* Asset-specific styles */
</style>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- Asset content -->
</body>
</html>
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.
- 6d ago First seen · 296 lines · 0 tokens per session scan A 0c260493ac35
blog-assets 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 2,635 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.
Other commands, from other repositories
review-content
Review content for brand alignment, lead placement, bio consistency, and proof points.
content-status
Scan all content directories and report status of drafts, ideas, and published content.
draft-blog
Scaffold a blog post with proper structure, voice, and frontmatter.
draft-linkedin
Draft a LinkedIn post for an author on a given topic.
script
Create or refine a video script — long-form VSL (8-15min) or short-form (15-60s). Batch mode generates multiple variants. Uses hook framework, VSL 7-step arc, ad copy formula. Humanizer full mode required.
brand
Branding and creative direction.