Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add XuanRanL/loamwright-SEO-Skill --skill batch-articlegit clone --depth 1 https://github.com/XuanRanL/loamwright-SEO-SkillWrote 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/skills/xuanranl/loamwright-seo-skill/batch-article)<a href="https://agentmods.dev/skills/xuanranl/loamwright-seo-skill/batch-article"><img src="https://agentmods.dev/badge/skills/xuanranl/loamwright-seo-skill/batch-article.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.00064 | $0.03150 |
| Opus 5 | $0.00032 | $0.01575 |
| Sonnet 5 | $0.00013 | $0.00630 |
| Haiku 4.5 | $0.00006 | $0.00315 |
Grade A, and why
batch-article 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 7d 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 — 295 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/batch-article — Bulk full-pipeline content production
For agency-scale ops: give a list of keywords, get a list of published articles. Each goes through the COMPLETE /article pipeline — no shortcuts, no quality compromises.
When to invoke
/batch-article --project my-site --file keywords.txt/batch-article --project my-site --keywords "kw1,kw2,kw3"/batch-article --resume <batch_id>— pick up after interruption/batch-article --status <batch_id>— check progress/batch-article --list— all known batches
Input file formats (auto-detected)
Plain text (.txt) — one keyword per line, optional comma-separated fields:
best fishing rods 2026, listicle
how to choose fishing rod, how-to-guide, professional, 4500
graphite vs fiberglass rods, comparison
CSV (.csv) — header with keyword column required:
keyword,format,voice,word_count
"best fishing rods 2026",listicle,professional,6000
"how to choose fishing rod",how-to-guide,casual,4500
JSON (.json) — array of objects:
[
{"keyword": "best fishing rods 2026", "format": "listicle"},
{"keyword": "how to choose fishing rod", "format": "how-to-guide", "word_count": 4500}
]
Workflow (Claude executes this)
Phase 1: Enqueue
python -m scripts._core.batch_queue enqueue \
--project {project_slug} \
--file {keywords_file}
This creates workspace/batches/{batch_id}/index.json with all entries pending.
Output shows: batch_id + entry count + total estimated cost.
Contract notes (v3.41.0):
- Generated task_ids are underscore-form (
art_YYYYmmddHHMMSS_NNN_hex) — they MUST satisfyschemas/state.schema.json :: task_id^[a-z0-9_]{8,32}$, becauseassemble.pyvalidates the full state against it mid-pipeline. The pre-v3.41.0 hyphenated ids passed the early stages then hard-failed at assembly (2026-07-17 project-lima batch). Pinned bytests/test_batch_queue_taskid_schema.py. daily_cost_cap_usdin the index comes from~/.xuanran-seo/config.yaml :: cost_limits.daily_total_usd— never a hardcode. A stale index with an empty cap is backfilled from config on load.- Task workspaces live under
memory/workspace/{task_id}/(the runner's WS_ROOT); theworkspace/root holds onlybatches/. - FORMAT IDS (v3.41.4): the per-row
formatcolumn validates againstschemas/angle.schema.json :: format_idenum — the single source of truth, mirrored 1:1 bytemplates/*.mdbasenames. An unknown format still soft-falls back to the default, but now WARNS on stderr; pre-v3.41.4 the check ran against a stale hand-maintained 10-item literal, so a REAL format likebuyers-guidewas silently rewritten tolisticleand the whole article was planned in the wrong format with no error anywhere (2026-07-24 project-india batch). Pinned bytests/test_batch_queue_format_enum_seam.py. Watch the enqueue output's format column — it must echo the format you asked for.
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.
- 7d ago First seen · 295 lines · 64 tokens per session scan A e5f79f07e5f5
batch-article is a skill published in the GitHub repository XuanRanL/loamwright-SEO-Skill (47 stars, last pushed 20d ago), licensed Apache-2.0. It adds 64 tokens to every session and 3,150 once invoked, about $0.0003 per session on Opus 5. 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 skills, from other repositories
geo-platform-optimizer
Platform-specific AI search optimization — audit and optimize for Google AI Overviews, ChatGPT, Perplexity, Gemini, and Bing Copilot individually.
aeo-audit
Audit how a brand appears across the 6 canonical AI answer surfaces — ChatGPT, Perplexity, Google AI Mode, AI Overviews, Gemini, Copilot — probing 10-25 queries into a numbered output bundle with per-platform visibility scorecards, citation-accuracy checks, a competitor matrix, content gaps, and an optimization…
analytics-insights
Marketing measurement module — builds KPI trees per business model, reporting templates (weekly, monthly, QBR, campaign), anomaly root-cause diagnosis, MMM and incrementality guidance, dark-social tracking, and privacy-first cookieless measurement architecture, including the GA4 AI Assistant channel group for…
attribution-report
Run multi-touch attribution analysis on real conversion-path data — applies two or more models side-by-side (first-touch, last-touch, linear, time-decay, position-based, data-driven), computes per-channel attributed revenue and ROAS, assisted-conversion ratios, path-length and time-to-conversion distributions, and…
attribution-model
Design a multi-touch attribution strategy — recommends the best-fit model for the business's sales cycle and data maturity, defines credit-distribution rules and lookback windows, maps platform-specific setup (GA4, HubSpot, Salesforce, warehouse), and documents tracking gaps and known blind spots. Triggers on…
ad-creative
Generate 3-5 ad copy variations per platform — headlines, descriptions, and CTAs formatted to Google, Meta, LinkedIn, TikTok, X, and Pinterest specs — each scored 1-10 with policy-compliance flags, A/B testing groupings, and a message-match check against the landing page. Triggers on…