A community-driven registry for the Claude Code ecosystem. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Claude Code blog skill suite: 30 sub-skills, 5 agents, 5-gate v1.9.0 Blog Delivery Contract, dual-optimized for Google r
claude-blog)Watch the 12:48 v1.9.1 walkthrough on YouTube · See the 5-gate Blog Delivery Contract run live, including a 6-minute live demo of the Codex vs Claude sample blog being generated end-to-end.
Two versions of this skill. Choose the one that fits how you work:
- 🌐 Public open-source:
AgriciDaniel/claude-blog. MIT-licensed, public releases, open to anyone. Use this if you want the stable, downloadable, no-membership-required version.- 🔒 Community private mirror (this repo):
AI-Marketing-Hub/claude-blog. Early access to in-development work (v1.9.0+ Blog Delivery Contract, hero ladder, mutation-tested regression coverage), and direct collaboration with the AI Marketing Hub Pro community. Requires membership.The badges above track the public repo (
AgriciDaniel/claude-blog) since the private mirror is not visible to shields.io. The publishing workflow (private dev, review, public release) is documented indocs/PUBLISHING.md.
claude-blog is a Claude Code skill suite that writes, optimizes, and audits blog content at scale. Every article is dual-optimized for Google rankings (December 2025 Core Update, E-E-A-T) and AI citation platforms (ChatGPT, Perplexity, AI Overviews). A v1.9.0 5-gate Delivery Contract scores every draft against a 100-point rubric and blocks anything below 90 from reaching you.
blog-reviewer is a BLOCKING gate, not advisory.claude-blog serves three audiences with one engine:
Solo bloggers and creators who want to ship one high-quality post per week without spending three hours on the SEO checklist. The orchestrator handles research, outline, draft, schema, internal linking, and citation verification in a single /blog write invocation.
Marketing teams and agencies managing many posts across topics, languages, and platforms. The skill ships topic-cluster planning (/blog cluster), multilingual one-command publishing (/blog multilingual), cannibalization detection (/blog cannibalization), and persona-driven voice profiles (/blog persona) so the same engine produces consistent content across the team.
Claude Code skill builders who want a production-grade reference for skill architecture, agent dispatch, delivery contracts, and CI gating. The repo demonstrates the Agent Skills open standard at Tier 4 complexity with 160 tests, version-coherence enforcement, installer-sync regression tests, and the v1.9.0 5-gate contract pattern. Read the source for inspiration; fork the patterns into your own skills.
Every draft ships as 8 artifacts in a single folder. A condensed specimen of the .md output:
---
title: "Where Should a Claude Code Skill Plugin Install Itself?"
description: "A working answer to the install-path question..."
date: "2026-05-18"
author: "Daniel Agrici"
tags: [claude-code, skills, plugins, installation]
canonical: "https://example.com/blog/skill-plugin-install-path"
---
# Where Should a Claude Code Skill Plugin Install Itself?
The short answer: most user-installable Claude Code skill plugins
should ship to `~/.claude/skills/<name>/` for skill content,
`~/.claude/agents/<name>.md` for agents, and
`~/.claude/scripts/<helper>.py` for any Python helpers.
## Key Takeaways
- `~/.claude/skills/` is the SKILL.md surface area.
- `~/.claude/agents/` holds agent markdown files.
- ... (full article, sourced citations, FAQ, schema JSON-LD)
Alongside the .md, the contract also produces: rendered .html (XSS-safe JSON-LD, dark-mode-aware CSS), .pdf (Playwright or weasyprint), hero.<ext> (1200x630, generated via Banana MCP, Gemini, stock APIs, or Openverse), 3 viewport screenshots (mobile-375.png, tablet-768.png, desktop-1280.png), review.md (5-category scorecard with BLOCKING line), and preflight-report.json (the full audit trail).
ℹ️ Which version are you installing?
- Not an AI Marketing Hub Pro member? Install from the public repo:
AgriciDaniel/claude-blog. All the install commands below work there. Just swapAI-Marketing-Hub/claude-blogforAgriciDaniel/claude-blogand the plugin slugclaude-blog@ai-marketing-hub-claude-blogforclaude-blog@agricidaniel-claude-blog. Public releases ship there; this private mirror runs ahead.- Pro member? The commands below install the community version with early access to in-development features. They require an authenticated
gh auth login(or GitHub PAT) session with access to theAI-Marketing-Huborg. If/plugin marketplace addfails with a 404, your account is not in the org yet. DM in the Skool community to get added.
Plugin Install (Claude Code 1.0.33+):
# Add marketplace (one-time)
/plugin marketplace add AI-Marketing-Hub/claude-blog
# Install plugin
/plugin install claude-blog@ai-marketing-hub-claude-blog
Recommended: clone, verify, then install (lets you inspect install.sh and pin a release tag):
git clone https://github.com/AI-Marketing-Hub/claude-blog.git
cd claude-blog
git checkout v1.9.0 # pin to a release tag (latest as of 2026-05-18)
chmod +x install.sh && ./install.sh
One-Command Install (Unix/macOS):
curl -fsSL https://raw.githubusercontent.com/AI-Marketing-Hub/claude-blog/main/install.sh | bash
One-Command Install (Windows PowerShell):
irm https://raw.githubusercontent.com/AI-Marketing-Hub/claude-blog/main/install.ps1 | iex
Piping
curlorirmto a shell gives the script execution authority on your machine. The clone-then-checkout-tag flow is safer because you can inspect what runs. Both flows authenticate against the private repo using your existinggh auth/ GitHub credentials.
Verify installer integrity (recommended, VULN-IAC-001 hardening):
# Download, verify SHA-256, then run if the hash matches.
curl -fsSL -o install.sh https://raw.githubusercontent.com/AI-Marketing-Hub/claude-blog/main/install.sh
echo "029388e448dd29bed259b130c2be42e2f6a16d4d5b6801a61bfb4f49b621fc04 install.sh" | sha256sum -c
bash install.sh
The SHA-256 above is for the current install.sh at HEAD on main. Verify against the canonical file before running. The install.ps1 companion hash is 6d03f353e5d844c4fe5c7c0b2500bd1e2aad02468cd544013bab876735cebf98. Hashes are updated in this README on every installer change.
Restart Claude Code after installation to activate.
🚀 First time? Try these three commands first:
/blog strategy <niche>to scope your blog,/blog write <topic>to generate your first article (the 5-gate contract runs automatically), and/blog analyze <file>to score it on the 100-point rubric.
| Command | Description |
|---|---|
/blog write <topic> | Write a new blog post from scratch |
/blog rewrite <file> | Optimize an existing blog post |
/blog analyze <file> | Quality audit with 0-100 score |
/blog brief <topic> | Generate a detailed content brief |
/blog calendar | Generate an editorial calendar |
/blog strategy <niche> | Blog strategy and topic ideation |
/blog outline <topic> | SERP-informed content outline |
/blog seo-check <file> | Post-writing SEO validation |
/blog schema <file> | Generate JSON-LD schema markup |
/blog repurpose <file> | Repurpose for social, email, YouTube |
/blog geo <file> | AI citation readiness audit |
/blog image [generate|edit|setup] | AI image generation via Gemini |
/blog audit [directory] | Full-site blog health assessment |
/blog cannibalization [directory] | Detect keyword overlap across posts |
/blog factcheck <file> | Verify statistics against cited sources |
/blog persona [create|list|apply] | Manage writing personas and voice profiles |
/blog taxonomy [sync|audit|suggest] | Tag/category CMS management |
/blog notebooklm <question> | Query NotebookLM for source-grounded research |
/blog audio [generate|voices|setup] | Generate audio narration via Gemini TTS |
/blog google [command] [args] | Google API data: PSI, CrUX, GSC, GA4, NLP, YouTube, Keywords |
/blog cluster [plan|execute] <seed> | Semantic topic-cluster planning + execution (hub-and-spoke) |
/blog multilingual <topic> --languages <codes> | Write, translate, localize, and emit hreflang in one command |
/blog translate <file> --to <codes> | SEO-optimized translation with format preservation |
/blog localize <file> --locale <code> | Cultural deep-adaptation per locale |
/blog locale-audit <directory> | Multilingual content QA (completeness, hreflang, parity, freshness) |
/blog flow [find|optimize|win|prompts|sync] | FLOW framework prompts (evidence-led, 30 blog-applicable) |
/blog brand [init|show|update] | Generate BRAND.md + VOICE.md context auto-loaded by all sub-skills |
/blog discourse <topic> | API-free last-30-days discourse research; produces DISCOURSE.md |
30 sub-skill directories total: 29 user-invokable (28 distinct slash commands +
/blog updatealiased to rewrite) + 1 internal-only (blog-chart, invoked by blog-write/blog-rewrite for inline SVG charts).blog-imageis user-invokable AND callable internally.
claude-blog is a structured pipeline. Direct LLM prompting is a one-shot. Hosted SaaS tools are closed-source. Here is the honest tradeoff matrix:
| Capability | claude-blog | Direct Claude / ChatGPT prompt | Copy.ai / Jasper | Build it yourself |
|---|---|---|---|---|
| Full article in one command, with iteration loop | ✅ (5-gate contract, up to 3 retries) | ⚠️ one-shot | ✅ | ❌ |
| Sourced statistics with verification | ✅ /blog factcheck fetches source URLs | ❌ hallucinates | ❌ | ⚠️ manual |
| AI citation optimization (GEO / AEO) | ✅ dedicated /blog geo audit | ❌ | ❌ | ⚠️ |
| Blocking content review (score >= 90 to deliver) | ✅ blog-reviewer agent | ❌ | ❌ | ❌ |
| Multilingual + hreflang one-command | ✅ /blog multilingual | ⚠️ no hreflang | ⚠️ | ❌ |
| Topic-cluster planning (hub-and-spoke) | ✅ /blog cluster | ❌ | ⚠️ | ❌ |
| Audio narration | ✅ Gemini TTS, 30 voices | ❌ | ❌ | ❌ |
| Hero image generation (4-step ladder) | ✅ Banana, Gemini, stock, Openverse | ❌ | ⚠️ stock only | ⚠️ |
| Persistent brand and voice context | ✅ BRAND.md + VOICE.md auto-loaded | ❌ per-prompt | ⚠️ limited | ❌ |
| Open-source, MIT, no usage cost | ✅ free | ❌ subscription | ❌ subscription | ✅ |
claude-blog is not better at everything. Direct prompting is faster for a single throwaway draft. Hosted SaaS is easier for non-developers. DIY is more flexible for unique pipelines. claude-blog fits where you want production-grade content at scale without a SaaS subscription.
Auto-selected by topic and intent: how-to guide, listicle, case study, comparison, pillar page, product review, thought leadership, roundup, tutorial, news analysis, data research, FAQ knowledge base.
| Category | Points | Focus |
|---|---|---|
| Content Quality | 30 | Depth, readability, originality, engagement |
| SEO Optimization | 25 | Headings, title, keywords, links, meta |
| E-E-A-T Signals | 15 | Author, citations, trust, experience |
| Technical Elements | 15 | Schema, images, speed, mobile, OG tags |
| AI Citation Readiness | 15 | Citability, Q&A format, entity clarity |
Scoring bands: Exceptional (90-100), Strong (80-89), Acceptable (70-79), Below Standard (60-69), Rewrite (<60). The v1.9.0 contract blocks delivery below 90.
Burstiness scoring on sentence-length variance, known AI-phrase detection (17 phrases), and vocabulary diversity (TTR). Flags content that reads as machine-generated before it reaches the reviewer.
Configurable writing personas with the NNGroup 4-dimension tone framework (formal/casual, serious/funny, respectful/irreverent, matter-of-fact/enthusiastic). Manage voice profiles per blog or author, with readability bands (Consumer, Professional, Technical) and style enforcement at draft time.
/blog factcheck fetches every cited source URL and scores claim confidence as exact match, paraphrase, or not found. Ensures every data point is accurate and traceable, not invented.
/blog cannibalization identifies keyword overlap across blog posts using local grep analysis or DataForSEO API. Severity scoring with merge or differentiate recommendations prevents posts from competing against each other in SERPs.
Tag and category sync supporting WordPress REST, Shopify GraphQL, Ghost, Strapi, and Sanity. Includes tag suggestion, sync, and audit workflows.
Every article targets both Google rankings and AI citation platforms:
srcdoc lazy loading and noscript AI-crawler fallback.13 commands across 4 credential tiers, all free at normal usage:
Query Google NotebookLM for source-grounded research from user-uploaded documents. Tier 1 data quality with zero hallucination risk because the answers are extracted from documents you uploaded.
/blog audio generates audio narration via Gemini TTS. Three modes: summary (200-300 words), full article, two-speaker dialogue. 30 voices, 80+ languages.
Next.js MDX, Astro, Hugo, Jekyll, WordPress, Ghost, 11ty, Gatsby, and static HTML.
Five reference documents under skills/blog/references/ define the editorial and research methodology applied across all sub-skills. They are loaded on demand by the orchestrator:
| Reference | Purpose | Used by |
|---|---|---|
ai-slop-detection.md | Two-tier first-order (phrases) + second-order (structural rhythm) AI-content detection | blog-rewrite, blog-reviewer, blog-analyze |
editorial-heuristics.md | 10 Nielsen-adapted heuristics with 0-4 scoring + P0-P3 severity tagging | blog-analyze --rubric |
cognitive-load.md | Per-section concept-density (entities, numerics, jargon, forward refs, clause depth) | blog-analyze --cognitive-load, scripts/cognitive_load.py |
research-quality.md | 5-dimension research rubric + 4 pre-flight keyword-trap classes + freshness floors | blog-researcher, blog-discourse, blog-brief, blog-strategy |
synthesis-contract.md | 6 LAWs governing research synthesis (no trailing Sources block, inline citations, etc.) | All research-synthesis sub-skills |
Adapted from pbakaus/impeccable (Apache 2.0) and mvanhorn/last30days-skill (MIT). See CONTRIBUTORS.md for attribution.
The FLOW framework (Find, Leverage, Optimize, Win) is the evidence-led workflow shared with AgriciDaniel/flow (CC BY 4.0). Each phase contributes prompts to the orchestrator pipeline; /blog flow exposes 30 ready-to-run prompts indexed by phase.
Every blog passes a 5-gate contract before being shown to the user. The user is never the first reviewer; the gates are.
| Gate | Enforces | Implementation |
|---|---|---|
| 1. Capability Discovery | Required tools and agents present before write | scripts/blog_preflight.py --gate 1 |
| 2. Format Completeness | .md + .html + .pdf + real hero image | scripts/blog_render.py, scripts/generate_hero.py |
| 3. Visual Verification | No SVG overflow, valid JSON-LD, dark mode renders correctly | patchright / playwright at 3 viewport widths |
| 4. Content Review (BLOCKING) | blog-reviewer score 90+ AND zero P0 issues | agents/blog-reviewer.md (blocking, v1.9.0) |
| 5. Asset + Link Integrity | Every img resolves, og:image exists, links return 200, wordCount within 5% | scripts/blog_preflight.py --gate 5 |
Hero image ladder: Banana MCP, direct Gemini API, premium stock (Unsplash, Pexels, Pixabay), Openverse public API. First available wins. Block-and-iterate up to 3 times on any gate failure before escalating to the user. Full spec: skills/blog/references/blog-delivery-contract.md.
claude-blog ships as one orchestrator plus 29 sub-skills, 5 agents, 21 references, 12 templates, and 9 root-level scripts. The orchestrator routes user commands to sub-skills, which spawn agents and call scripts via Bash.
| Layer | Count | Where |
|---|---|---|
| Sub-skills (user-invokable) | 29 | skills/blog-*/SKILL.md |
| Sub-skills (internal) | 1 | skills/blog-chart/SKILL.md |
| Specialized agents | 5 | agents/blog-*.md |
| On-demand references | 21 | skills/blog/references/*.md |
| Content templates | 12 | skills/blog/templates/*.md |
| Root-level Python scripts | 9 | scripts/*.py |
| Tests | 160 | tests/test_*.py |
Full directory tree, data flow diagrams, scoring methodology, and extension points: docs/ARCHITECTURE.md.
pip install -r requirements.txt for advanced analysis (readability scoring, schema detection).claude plugin validate . plus hand-rolled JSON/regex checks.references/ and templates/ cross-references.scripts/lint_prose.py (fence-aware, backtick-aware) enforces the CONTRIBUTING.md no-em-dash, no-en-dash, no--- rule.tests/test_version_coherence.py asserts pyproject.toml, plugin.json, CITATION.cff, and skills/blog/SKILL.md frontmatter all match.tests/test_command_coherence.py asserts skills/blog/SKILL.md and docs/COMMANDS.md declare the same command set.Run locally before pushing:
python -m pytest tests/
python3 scripts/lint_prose.py
claude plugin validate .
claude-blog is a Claude Code skill suite for writing, optimizing, and auditing blog content. It runs 30 sub-skills and 5 agents through a 5-gate delivery contract so that every article meets a 90/100 quality bar before it reaches you.
Direct prompting gives you one draft from one prompt. claude-blog gives you a structured pipeline: research with sourced statistics, outline approval, draft generation, multi-pass quality scoring, AI-content detection, fact verification, schema injection, and a blocking review that iterates up to 3 times before delivery. The skill enforces what a senior editor would otherwise do manually.
No. The public open-source version at AgriciDaniel/claude-blog is MIT-licensed and free for anyone with Claude Code. The private mirror at AI-Marketing-Hub/claude-blog is for Pro members who want early access to in-development features and direct collaboration with the community.
Next.js MDX, Astro, Hugo, Jekyll, WordPress, Ghost, 11ty, Gatsby, and static HTML. The orchestrator auto-detects the platform from project signals and adjusts frontmatter, image embedding, and schema injection accordingly.
No. Every cited statistic flows through /blog factcheck, which fetches the source URL and scores the claim confidence (exact match, paraphrase, not found). The blog-reviewer agent blocks publication if a citation cannot be verified or if AI-content detection flags the prose as machine-generated.
A code-enforced pre-presentation pipeline that runs on every draft: Capability Discovery, Format Completeness, Visual Verification at 3 viewport widths, Content Review (BLOCKING; score 90+ and zero P0), and Asset + Link Integrity. The orchestrator iterates the writer up to 3 times on any gate failure before escalating to you. Full spec in skills/blog/references/blog-delivery-contract.md.
Yes. /blog multilingual <topic> --languages en,de,fr,es,ja writes the post, translates it preserving frontmatter and schema, runs cultural deep-adaptation per locale, and emits hreflang tags plus a CMS-ready language map in a single command.
See the How to cite section below or the CITATION.cff file in the repo root. GitHub surfaces the structured citation file via the "Cite this repository" button on the public mirror page.
The installer ships only Python scripts and markdown files, never executes remote code beyond what pip install -r requirements.txt brings in, and is reviewed against the project SECURITY.md policy on every change. The clone-then-checkout-tag install flow lets you inspect install.sh before running it. See SECURITY.md for the full threat model.
v1.9.1 (next)
_count_body_words(html) function between blog_render and blog_preflight to close the v1.9.0 audit residual.generate_hero.py exit-code semantics: non-zero on no-image-gen-path (currently returns JSON error with exit 0).v1.10 (vision)
v2.0 (long-term)
Open an issue with the roadmap label if you want to propose or vote on something.
Unix/macOS:
chmod +x uninstall.sh && ./uninstall.sh
Windows (PowerShell):
.\uninstall.ps1
Chart generation and YouTube video embedding are built-in. Google API data requires a free API key (see /blog google setup).
Optional companion skills (deeper analysis of published pages):
| Skill | Integration |
|---|---|
/seo | Deep SEO analysis of published blog pages |
/seo-schema | Schema markup validation and generation |
/seo-geo | AI citation optimization audit |
/seo-google | Google API data (shared config with blog-google) |
Detailed documentation is in docs/:
If you use claude-blog in research or production, please cite the project:
@software{Agrici_claude_blog_2026,
author = {Agrici, Daniel},
title = {claude-blog: AI Blog Writing and SEO Optimization Skill for Claude Code},
year = {2026},
url = {https://github.com/AgriciDaniel/claude-blog},
version = {1.9.0},
license = {MIT}
}
GitHub also surfaces the structured CITATION.cff file via "Cite this repository" on the public mirror page.
SECURITY.md. v1.8.x hardening pass closed every known finding; v1.9.0 adds XSS-safe JSON-LD, O_NOFOLLOW symlink refusal, and frontmatter validation, all mutation-test verified. To report a vulnerability privately, follow the disclosure procedure in SECURITY.md.CODE_OF_CONDUCT.md. Contributor Covenant. Be excellent to each other.Contributions welcome. See CONTRIBUTING.md for guidelines. Before opening a PR:
python -m pytest tests/ (all 160 must pass).python3 scripts/lint_prose.py --root . (zero violations).claude plugin validate . (must pass).docs/PUBLISHING.md).MIT License. See LICENSE for details.
/blog flow.ai-marketing-hub-pro hosts this skill's private mirror.If claude-blog saves you time, a star on the public repo is the easiest way to say thanks (and helps other content folks find it).
Built by Daniel Agrici, AI Workflow Architect, with Claude Code.
ML engineering — model training, deployment, MLOps, monitoring
DevOps practices — CI/CD, containers, monitoring, infrastructure automation
Professional skills marketplace with production-ready skills for enhanced development
Self-learning system that captures corrections and syncs them to CLAUDE.md and AGENTS.md