{
  "markdown": "# AI Blog Writing & SEO Optimization Skill for Claude Code (`claude-blog`)\n\n<p align=\"center\">\n  <img src=\"assets/cover-blog.svg\" alt=\"Claude Blog cover: AI blog writing, SEO optimization, AI citation readiness, and a 5-gate delivery contract for Claude Code\" width=\"100%\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://agentskills.io\"><img src=\"https://img.shields.io/badge/Agent%20Skills-Compatible-blue\" alt=\"Agent Skill\"></a>\n  <a href=\"https://github.com/AgriciDaniel/claude-blog/releases\"><img src=\"https://img.shields.io/github/v/release/AgriciDaniel/claude-blog?label=public%20release\" alt=\"Version\"></a>\n  <a href=\"https://github.com/AgriciDaniel/claude-blog/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/AgriciDaniel/claude-blog/ci.yml?branch=main&label=public%20CI\" alt=\"CI\"></a>\n  <a href=\"https://github.com/AgriciDaniel/claude-blog/stargazers\"><img src=\"https://img.shields.io/github/stars/AgriciDaniel/claude-blog?style=social\" alt=\"GitHub stars\"></a>\n  <a href=\"https://github.com/AgriciDaniel/claude-blog/discussions\"><img src=\"https://img.shields.io/badge/Community-GitHub%20Discussions-blue\" alt=\"GitHub Discussions\"></a>\n  <img src=\"https://img.shields.io/badge/License-MIT-green\" alt=\"License: MIT\">\n  <img src=\"https://img.shields.io/badge/Python-3.11%2B-blue\" alt=\"Python 3.11+\">\n  <img src=\"https://img.shields.io/badge/Skill%20Dirs-32-orange\" alt=\"Skill directories: 32\">\n  <img src=\"https://img.shields.io/badge/Sub--Skills-31-orange\" alt=\"Sub-skills: 31\">\n  <img src=\"https://img.shields.io/badge/Commands-30-blueviolet\" alt=\"User-facing commands: 30\">\n  <img src=\"https://img.shields.io/badge/Tests-250%2B%20passing-brightgreen\" alt=\"Tests: more than 250 passing\">\n</p>\n\n**claude-blog is a Claude Code skill suite that writes, optimizes, audits, localizes, and refreshes blog content at scale.** Every article is evaluated for Google-aligned usefulness and internal AI citation readiness heuristics. Version 2.2.0 was prepared on 2026-08-26.\n\nThe core promise is simple: the user is never the first reviewer. A 5-gate Blog Delivery Contract scores every draft against a 100-point rubric, blocks delivery below 90, verifies artifacts and links, and iterates up to 3 times before escalation.\n\nThis is the public, MIT-licensed distribution at\n[`AgriciDaniel/claude-blog`](https://github.com/AgriciDaniel/claude-blog).\nThe publishing workflow is documented in\n[`docs/PUBLISHING.md`](docs/PUBLISHING.md).\n\n**Blog:** [See how claude-blog works](https://agricidaniel.com/blog/claude-code-blog-writer)\n\n<p align=\"center\">\n  <strong><a href=\"https://youtu.be/7Q4GaSgUFHo\">Watch video on YouTube</a></strong>\n</p>\n\n## Demo\n\n<p align=\"center\">\n  <img src=\"assets/blog-command-demo.gif\" alt=\"claude-blog command demo: routing /blog subcommands through the orchestrator\" width=\"100%\">\n</p>\n\n<p align=\"center\">\n  <img src=\"assets/blog-write-demo.gif\" alt=\"claude-blog /blog write demo: end-to-end article generation with the 5-gate Delivery Contract\" width=\"100%\">\n</p>\n\n[Watch the original demo on YouTube](https://www.youtube.com/watch?v=AeLC4iutG8w).\n\n## What It Is\n\nclaude-blog is a full-lifecycle blog engine for strategy, briefs, outlines, writing, rewriting, analysis, schema, AI citation readiness, site audits, topic clusters, multilingual publishing, audio narration, and content decay detection.\n\nCurrent v2.2.0 shape: **32 skill directories = 1 orchestrator + 31 sub-skills; 30 user-facing /blog commands (`blog-chart` is internal, not a command).** It also includes 5 specialized agents, repository consistency and public-release validators, 22 core references, 12 templates, a 250+ test suite, and the bundled Claude Blog Brain at `./brain`.\n\nEvery draft ships as an artifact folder with the markdown source, rendered HTML, PDF, real `hero.<ext>`, 3 viewport screenshots, `review.md`, and `preflight-report.json`. The renderer uses XSS-safe JSON-LD handling, dark-mode-aware CSS, and the same source for every output format.\n\n## Who It Is For\n\n**Solo bloggers and creators** can ship high-quality posts without spending hours on SEO, schema, source checks, and internal linking.\n\n**Marketing teams and agencies** can run consistent multi-post workflows across brands, languages, authors, and platforms with `/blog cluster`, `/blog multilingual`, `/blog persona`, `/blog brand`, and `/blog discourse`.\n\n**Claude Code skill builders** can study a Tier 4 Agent Skills reference architecture with orchestrator routing, sub-skill dispatch, agent handoffs, code-enforced delivery gates, installer hardening, and CI coherence checks.\n\n## Where Should a Claude Code Skill Plugin Install Itself?\n\nMost 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 Python helpers.\n\nThis answer is intentionally kept in the README because it demonstrates the GEO and SEO writing pattern claude-blog produces: answer-first summary, explicit paths, source-ready structure, and a compact FAQ-ready section that AI systems can quote without extra context.\n\nA condensed specimen of a generated article:\n\n```markdown\n---\ntitle: \"Where Should a Claude Code Skill Plugin Install Itself?\"\ndescription: \"A working answer to the install-path question...\"\ndate: \"2026-05-18\"\nauthor: \"Daniel Agrici\"\ntags: [claude-code, skills, plugins, installation]\ncanonical: \"https://example.com/blog/skill-plugin-install-path\"\n---\n\n## Where Should a Claude Code Skill Plugin Install Itself?\n\nThe short answer: most user-installable Claude Code skill plugins\nshould ship to `~/.claude/skills/<name>/` for skill content,\n`~/.claude/agents/<name>.md` for agents, and\n`~/.claude/scripts/<helper>.py` for any Python helpers.\n\n### Key Takeaways\n- `~/.claude/skills/` is the SKILL.md surface area.\n- `~/.claude/agents/` holds agent markdown files.\n- The full article includes sourced citations, FAQ, and schema JSON-LD.\n```\n\n## Architecture\n\n<p align=\"center\">\n  <img src=\"assets/diagrams/01-architecture-B.svg\" alt=\"claude-blog system architecture: user command through orchestrator routing, sub-skill execution, agent dispatch, scripts, and 5-gate delivery contract\" width=\"100%\">\n</p>\n\nThe orchestrator in `skills/blog/SKILL.md` parses `/blog` input, detects the target platform, loads only the references it needs, routes to a sub-skill, and coordinates agents plus scripts through the delivery contract.\n\n| Layer | Count | Where |\n|---|---:|---|\n| Skill directories | 32 | `skills/blog` plus `skills/blog-*` |\n| Orchestrator | 1 | `skills/blog/SKILL.md` |\n| Sub-skills | 31 | `skills/blog-*/SKILL.md` |\n| User-facing `/blog` commands | 30 | `skills/blog/SKILL.md` routing table |\n| Internal-only sub-skill | 1 | `skills/blog-chart/SKILL.md` |\n| Specialized agents | 5 | `agents/blog-*.md` |\n| Root scripts | 14 | `scripts/*.py` |\n| References | 22 | `skills/blog/references/*.md` |\n| Templates | 12 | `skills/blog/templates/*.md` |\n| Tests | 252 | `tests/` |\n\nMore architecture detail lives in [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).\n\n## 5-Gate Delivery Contract\n\n<p align=\"center\">\n  <img src=\"assets/diagrams/02-pipeline-B.svg\" alt=\"5-gate Blog Delivery Contract pipeline: Capability Discovery, Format Completeness, Visual Verification, Content Review, Asset and Link Integrity, then user delivery\" width=\"100%\">\n</p>\n\nEvery `/blog write` and `/blog rewrite` result must pass the delivery contract before it is shown to the user.\n\n| Gate | Enforces | Implementation |\n|---|---|---|\n| 1. Capability Discovery | Required tools, agents, env vars, and optional dependencies are known before writing | `scripts/blog_preflight.py --gate 1` |\n| 2. Format Completeness | `.md`, `.html`, `.pdf`, and a real hero image exist | `scripts/blog_render.py`, `scripts/generate_hero.py` |\n| 3. Visual Verification | Screenshots render at 375, 768, and 1280 widths, JSON-LD is valid, dark mode holds, SVGs do not overflow | `patchright` or `playwright` |\n| 4. Content Review | `blog-reviewer` score is 90+ with zero P0 issues | `agents/blog-reviewer.md` |\n| 5. Asset and Link Integrity | Images resolve, `og:image` exists, links return 200, word count matches schema within 5% | `scripts/blog_preflight.py --gate 5` |\n\nHero image ladder: Banana MCP, direct Gemini API, premium stock APIs, then Openverse. First working source wins. Full spec: [`skills/blog/references/blog-delivery-contract.md`](skills/blog/references/blog-delivery-contract.md).\n\n## Sub-Skill Ecosystem\n\n<p align=\"center\">\n  <img src=\"assets/diagrams/03-sub-skill-map-A.svg\" alt=\"claude-blog sub-skill ecosystem: one orchestrator, 31 sub-skills, 30 user-facing commands, and internal blog-chart support grouped by writing, quality, search, media, multilingual, and distribution workflows\" width=\"100%\">\n</p>\n\nThe ecosystem is intentionally modular. Most commands are user-facing sub-skills. `blog-chart` is internal-only, and `blog-image` can be called both by the user and internally by write and rewrite workflows.\n\n## Commands\n\nFirst run: `/blog strategy <niche>` to scope the site, `/blog write <topic>` to generate a gated article, and `/blog analyze <file-or-url>` to score an existing post.\n\n| Command | What it does |\n|---|---|\n| `/blog write <topic>` | Write a new blog post from scratch |\n| `/blog rewrite <file>` | Rewrite/optimize an existing blog post |\n| `/blog analyze <file-or-url>` | Audit blog quality with 0-100 score |\n| `/blog brief <topic>` | Generate a detailed content brief |\n| `/blog calendar [monthly\\|quarterly]` | Generate an editorial calendar |\n| `/blog strategy <niche>` | Blog strategy and topic ideation |\n| `/blog outline <topic>` | Generate SERP-informed content outline |\n| `/blog seo-check <file>` | Post-writing SEO validation checklist |\n| `/blog schema <file>` | Generate JSON-LD schema markup |\n| `/blog repurpose <file>` | Repurpose content for other platforms |\n| `/blog geo <file>` | AI citation readiness audit |\n| `/blog audit [directory]` | Full-site blog health assessment |\n| `/blog cannibalization [dir]` | Detect keyword cannibalization across posts |\n| `/blog factcheck <file>` | Verify statistics against cited sources |\n| `/blog image [generate\\|edit\\|setup]` | AI image generation and editing via Gemini |\n| `/blog persona [create\\|list\\|use\\|show]` | Manage writing personas and voice profiles |\n| `/blog brand [init\\|show\\|update]` | Generate BRAND.md + VOICE.md context files auto-loaded by all sub-skills |\n| `/blog discourse <topic>` | Research what people are actually saying about a topic in last 30 days; produces DISCOURSE.md (v1.8.0, API-free) |\n| `/blog taxonomy [suggest\\|sync\\|audit]` | Tag/category management across CMS platforms |\n| `/blog notebooklm <question>` | Query NotebookLM for source-grounded research |\n| `/blog audio [generate\\|voices\\|setup]` | Generate audio narration of blog posts |\n| `/blog google [command] [args]` | Google API data: PSI, CrUX, GSC, GA4, NLP, YouTube, Keywords |\n| `/blog update <file>` | Update existing post with fresh stats (routes to rewrite) |\n| `/blog cluster [plan\\|execute] <seed-or-plan>` | Semantic topic-cluster planning + execution (hub and spoke) |\n| `/blog multilingual <topic> --languages <codes>` | Write + translate + localize + emit hreflang in one command |\n| `/blog translate <file> --to <codes>` | SEO-optimized translation with format preservation |\n| `/blog localize <file> --locale <code>` | Cultural deep-adaptation (DACH, FR, ES, JA, custom) |\n| `/blog locale-audit <directory>` | Multilingual content QA (completeness, hreflang, parity, freshness) |\n| `/blog flow [find\\|optimize\\|win\\|prompts\\|sync]` | FLOW framework prompts (evidence-led, 30 blog-applicable) |\n| `/blog style learn <paths>` | Learn author voice profile from 5-10 posts (feeds blog-write and blog-persona) |\n| `/blog decay <current-gsc> <previous-gsc>` | Detect content decay: flag 20%+ QoQ traffic decline from GSC exports |\n\n`/blog update` is a freshness alias routed to `blog-rewrite`; the project count remains 30 user-facing `/blog` commands. `blog-chart` remains internal-only.\n\nFull reference: [`docs/COMMANDS.md`](docs/COMMANDS.md).\n\n## FLOW Framework\n\n<p align=\"center\">\n  <img src=\"assets/diagrams/04-framework-B.svg\" alt=\"FLOW framework radial wheel: Find, Leverage, Optimize, Win, with claude-blog command surfaces for Find, Optimize, Win and prompt support for Leverage\" width=\"100%\">\n</p>\n\nclaude-blog integrates the FLOW framework from [`AgriciDaniel/flow`](https://github.com/AgriciDaniel/flow) (CC BY 4.0). FLOW means **Find, Leverage, Optimize, Win**. The skill surfaces Find, Optimize, and Win as `/blog flow` commands; Leverage is available as a prompt family through `/blog flow prompts` and is applied inside drafting, repurposing, and distribution workflows.\n\n## Features\n\n### v1.10 and v1.11 Highlights\n\n- **5-gate Delivery Contract**: code-enforced pre-presentation gates for format, visuals, review, assets, and links.\n- **AI Citation Readiness Heuristic**: `scripts/ai_citation_score.py` produces non-calibrated 0-100 editorial-readiness views for AI Overview, Perplexity, and ChatGPT and feeds `/blog geo`.\n- **Writing style learning**: `/blog style learn <paths>` builds an author voice profile from 5 to 10 posts.\n- **Content decay detection**: `/blog decay <current-gsc> <previous-gsc>` flags 20%+ quarter-over-quarter GSC traffic drops and suggests refresh, consolidate, or prune actions.\n- **Pre-commit quality gate**: `scripts/quality_gate.py` and `.pre-commit-config.yaml` block blog posts below score 70 before commit.\n- **Brand and discourse context**: `/blog brand` writes `BRAND.md` and `VOICE.md`; `/blog discourse` writes `DISCOURSE.md`. The orchestrator loads them through fenced, nonce-bound untrusted-data handling.\n- **Multilingual and topic clusters**: `/blog multilingual`, `/blog translate`, `/blog localize`, `/blog locale-audit`, and `/blog cluster` support international hub-and-spoke publishing.\n- **Deterministic blog hygiene**: `scripts/blog_hygiene.py` can add lazy image loading and a table of contents without replacing human review.\n\n### 12 Content Templates\n\nAuto-selected by topic and intent: how-to guide, listicle, case study, comparison, pillar page, product review, thought leadership, roundup, tutorial, news analysis, data research, and FAQ knowledge base.\n\n### 5-Category Quality Scoring\n\n| Category | Points | Focus |\n|---|---:|---|\n| Content Quality | 30 | Depth, readability, originality, engagement |\n| SEO Optimization | 25 | Headings, title, keywords, links, meta |\n| E-E-A-T Signals | 15 | Author, citations, trust, evidence basis |\n| Technical Elements | 15 | Schema, images, speed, mobile, OG tags |\n| AI Citation Readiness | 15 | Evidence-backed citability, purpose fit, entity clarity |\n\nScoring bands: Exceptional (90-100), Strong (80-89), Acceptable (70-79), Below Standard (60-69), Rewrite (<60). The delivery contract blocks delivery below 90.\n\n### More Capabilities\n\n- Advisory editorial style diagnostics for sentence-length variation, configured phrase lists, and vocabulary sampling; these never infer authorship or affect scoring.\n- Persona-driven writing with NNGroup tone dimensions, readability bands, and style enforcement.\n- `/blog factcheck` source verification with exact match, paraphrase, and not-found confidence scoring.\n- `/blog cannibalization` keyword overlap detection with merge or differentiate recommendations.\n- CMS taxonomy management for WordPress, Shopify, Ghost, Strapi, and Sanity.\n- Dual Google and AI-citation optimization, including evidence-backed explanations, intent-matched structure, optional visible Q&A, internal links, schema, and substantive maintenance.\n- Visual media through Gemini image generation, verified stock sourcing, SVG charts, YouTube embeds, and alt text requirements.\n- Google API integration across PageSpeed Insights, CrUX, Search Console, GA4, NLP, YouTube, URL Inspection, and Keyword Planner. Indexing API use is scoped to JobPosting or livestream URLs only.\n- NotebookLM research for source-grounded answers from user-uploaded documents.\n- Gemini TTS audio narration in summary, full-article, and two-speaker dialogue modes.\n- Platform support for Next.js MDX, Astro, Hugo, Jekyll, WordPress, Ghost, 11ty, Gatsby, and static HTML.\n\n### Methodology References\n\n| Reference | Purpose |\n|---|---|\n| `ai-slop-detection.md` | Two-tier advisory editorial pattern review; never an authorship classifier or scoring input |\n| `editorial-heuristics.md` | Nielsen-adapted 0-4 scoring with P0-P3 severity |\n| `cognitive-load.md` | Per-section concept-density scoring |\n| `research-quality.md` | Source-tier, freshness, and synthesis quality checks |\n| `synthesis-contract.md` | Research synthesis LAWs for citation-safe output |\n\nAdapted attribution lives in [`CONTRIBUTORS.md`](docs/CONTRIBUTORS.md).\n\n## Brain Provenance\n\nThe Claude Blog Brain is vendored at `./brain` as a self-contained, evidence-gated Obsidian brain. It is not part of the plugin payload; all skill tooling remains scoped to `skills/`. Brain-derived updates land through reviewed reference, script, and documentation changes.\n\n## Install\n\nPlugin install for Claude Code 1.0.33+:\n\n```bash\n/plugin marketplace add AgriciDaniel/claude-blog\n/plugin install claude-blog@agricidaniel-blog\n```\n\nRecommended clone, verify, then install flow:\n\n```bash\ngit clone https://github.com/AgriciDaniel/claude-blog.git\ncd claude-blog\ngit checkout v2.2.0\nchmod +x install.sh\n./install.sh\n```\n\nOne-command install on Unix and macOS:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/AgriciDaniel/claude-blog/main/install.sh | CLAUDE_BLOG_REF=v2.2.0 bash\n```\n\nOne-command install on Windows PowerShell:\n\n```powershell\n$env:CLAUDE_BLOG_REF = \"v2.2.0\"\nirm https://raw.githubusercontent.com/AgriciDaniel/claude-blog/main/install.ps1 -OutFile install.ps1\npwsh -File ./install.ps1\n```\n\nVerify installer integrity before running:\n\n```bash\ncurl -fsSL -o install.sh https://raw.githubusercontent.com/AgriciDaniel/claude-blog/main/install.sh\necho \"25f73e7efbe9e714d00af34d2c6b48bd59d60a14976e2eb032b8ad5c2f756ce4  install.sh\" | sha256sum -c\nCLAUDE_BLOG_REF=v2.2.0 bash install.sh\n```\n\nThe SHA-256 above is for the current `install.sh` at HEAD on `main`; `CLAUDE_BLOG_REF` pins the repository clone performed by the installer. Verify against [the canonical file](https://github.com/AgriciDaniel/claude-blog/blob/main/install.sh) before running. The `install.ps1` companion hash is `a574688ba4ca27b7fbac7a26e6c95d1a6a596688f59d16ddbcc452d82f5fea7a`.\n\nRestart Claude Code after installation to activate.\n\nUninstall on Unix and macOS:\n\n```bash\nchmod +x uninstall.sh\n./uninstall.sh\n```\n\nUninstall on Windows PowerShell:\n\n```powershell\n.\\uninstall.ps1\n```\n\nInstallation details: [`docs/INSTALLATION.md`](docs/INSTALLATION.md).\n\n## Requirements\n\n- [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI installed and configured.\n- Python 3.11+ for quality scoring, the delivery contract runners, renderers, and lint.\n- Optional: `pip install -r requirements.txt` for advanced analysis, readability scoring, schema detection, and media workflows.\n\n### Automated CI Quality Gates\n\n1. **pytest**: the complete security, behavioral, regression, installer, and delivery-contract suite.\n2. **Plugin validation**: `claude plugin validate .` plus manifest, marketplace, and frontmatter checks.\n3. **Stale-path lint**: catches drift in `references/`, `templates/`, command docs, and installer payloads.\n4. **Prose hygiene**: `scripts/lint_prose.py` enforces no em dash, no en dash, and no ASCII double-hyphen prose.\n5. **Secret adjudication**: `scripts/check_secrets.py` fails on unapproved detector findings and credential-shaped values without printing raw values.\n6. **Version coherence**: canonical version surfaces must all match the release version.\n7. **Command coherence**: `skills/blog/SKILL.md` and [`docs/COMMANDS.md`](docs/COMMANDS.md) must declare the same command set.\n8. **Repository consistency**: validates local reference targets, FLOW prompt locks, and reports orphaned resources without blocking.\n9. **Hash-locked dependency smoke**: installs the audio and NotebookLM locks with `--require-hashes`, then initializes google-genai, Patchright, and preflight without API calls or a browser launch.\n10. **Brain validation**: changes under `brain/**` run its pytest suite, vault lint, and report-only audit.\n\nRun locally before pushing:\n\n```bash\npython3 -m pytest tests/\npython3 scripts/check_secrets.py\npython3 scripts/lint_prose.py\nclaude plugin validate .\n```\n\n## How Does claude-blog Compare?\n\nclaude-blog is a structured pipeline. Direct LLM prompting is a one-shot. Hosted SaaS tools are closed-source. The tradeoffs are:\n\n| Capability | claude-blog | Direct Claude or ChatGPT prompt | Copy.ai or Jasper | Build it yourself |\n|---|:---:|:---:|:---:|:---:|\n| Full article in one command with iteration loop | Yes | One-shot | Yes | No |\n| Sourced statistics with verification | Yes | No | No | Manual |\n| AI citation optimization (GEO / AEO) | Yes | No | No | Partial |\n| Blocking content review with score 90+ | Yes | No | No | No |\n| Multilingual plus hreflang in one command | Yes | Partial | Partial | No |\n| Topic-cluster planning | Yes | No | Partial | No |\n| Audio narration | Yes | No | No | No |\n| Hero image generation ladder | Yes | No | Stock only | Partial |\n| Persistent brand and voice context | Yes | Per-prompt | Limited | No |\n| Open-source, MIT, no SaaS subscription | Yes | No | No | Yes |\n\nclaude-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 when you want production-grade content at scale without a SaaS subscription.\n\n## Frequently Asked Questions\n\n### What is claude-blog?\n\nclaude-blog is a Claude Code skill suite for writing, optimizing, and auditing blog content. It runs 32 skill directories through a 5-gate delivery contract so every article meets a 90/100 quality bar before it reaches you.\n\n### How is claude-blog different from prompting Claude or ChatGPT directly?\n\nDirect 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, advisory editorial pattern review, fact verification, schema injection, and a blocking review that iterates up to 3 times before delivery.\n\n### Is claude-blog free and open source?\n\nYes. [`AgriciDaniel/claude-blog`](https://github.com/AgriciDaniel/claude-blog)\nis MIT-licensed and available to anyone using Claude Code.\n\n### What blog platforms does claude-blog support?\n\nNext.js MDX, Astro, Hugo, Jekyll, WordPress, Ghost, 11ty, Gatsby, and static HTML. The orchestrator auto-detects the platform and adjusts frontmatter, image embedding, and schema injection.\n\n### Does claude-blog hallucinate statistics?\n\nThe workflow is designed to block invented numbers. `/blog factcheck` fetches cited source URLs and scores each claim as exact match, paraphrase, or not found. `blog-reviewer` blocks publication when citations cannot be verified.\n\n### What is the 5-gate Blog Delivery Contract?\n\nIt is a pre-presentation pipeline for Capability Discovery, Format Completeness, Visual Verification, Content Review, and Asset and Link Integrity. The orchestrator iterates the writer up to 3 times on any gate failure before escalating to you. Full spec: [`skills/blog/references/blog-delivery-contract.md`](skills/blog/references/blog-delivery-contract.md).\n\n### Can I use claude-blog in multiple languages?\n\nYes. `/blog multilingual <topic> --languages <codes>` writes the post, translates it while preserving frontmatter and schema, runs cultural adaptation per locale, and emits hreflang tags plus a CMS-ready language map.\n\n### How do I cite claude-blog in academic work?\n\nSee [How To Cite](#how-to-cite) or [`CITATION.cff`](CITATION.cff). GitHub also surfaces the citation through the public mirror.\n\n### Is claude-blog secure to install?\n\nThe recommended flow downloads the installer as a file so you can inspect it before execution. v2.2.0 uses pinned refs, allowlisted recursive payload copies, manifest-backed uninstall, prose lint, version coherence checks, repository consistency checks, and installer regression tests. See [`SECURITY.md`](.github/SECURITY.md).\n\n## Documentation Index\n\n- [Installation Guide](docs/INSTALLATION.md): Unix, macOS, Windows, manual install, and reproducible `uv` setup.\n- [Command Reference](docs/COMMANDS.md): Full command reference with examples.\n- [Architecture](docs/ARCHITECTURE.md): System design and component overview.\n- [Publishing Workflow](docs/PUBLISHING.md): Private-to-public release flow.\n- [Templates](docs/TEMPLATES.md): Template reference and customization.\n- [Troubleshooting](docs/TROUBLESHOOTING.md): Common issues and fixes.\n- [MCP Integration](docs/MCP-INTEGRATION.md): Optional MCP server setup.\n- [Demo](docs/DEMO.md): Worked end-to-end example.\n\n## How To Cite\n\nIf you use claude-blog in research or production, please cite the project:\n\n```bibtex\n@software{Agrici_claude_blog_2026,\n  author       = {Agrici, Daniel},\n  title        = {claude-blog: AI Blog Writing and SEO Optimization Skill for Claude Code},\n  year         = {2026},\n  url          = {https://github.com/AgriciDaniel/claude-blog},\n  version      = {2.2.0},\n  license      = {MIT}\n}\n```\n\nGitHub also surfaces the structured [`CITATION.cff`](CITATION.cff) file via \"Cite this repository\" on the public mirror page.\n\n## Security & Code of Conduct\n\n- **Security policy and threat model**: [`SECURITY.md`](.github/SECURITY.md). To report a vulnerability privately, follow the disclosure procedure there.\n- **Code of Conduct**: [`CODE_OF_CONDUCT.md`](.github/CODE_OF_CONDUCT.md). Contributor Covenant.\n\n## Contributing\n\nContributions are welcome. See [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) for guidelines. Before opening a PR:\n\n1. Run `python3 -m pytest tests/` and confirm the full suite passes.\n2. Run `python3 scripts/lint_prose.py` and confirm zero violations.\n3. Run `claude plugin validate .`.\n4. Bump versions coherently if you touch user-visible counts or behavior.\n\n## License\n\nMIT License. See [`LICENSE`](LICENSE).\n\n## Related Projects\n\n- **[Rankenstein](https://rankenstein.pro)**: GUI-based content publishing workflow.\n- **[FLOW framework](https://github.com/AgriciDaniel/flow)**: Evidence-led Find, Leverage, Optimize, Win prompts (CC BY 4.0).\n- **[Claude Ads](https://github.com/AgriciDaniel/claude-ads)** and **[Claude SEO](https://github.com/AgriciDaniel/claude-seo)**: sibling Claude Code skills.\n- **[AI Marketing Hub](https://www.skool.com/ai-marketing-hub)**: Free community for AI-powered marketing.\n\n## Author\n\nBuilt by [Daniel Agrici](https://agricidaniel.com/about), AI Workflow Architect, with Claude Code.\n\n- [Blog](https://agricidaniel.com/blog): Deep dives on AI marketing automation.\n- [YouTube](https://www.youtube.com/@AgriciDaniel): Tutorials and demos.\n- [All open-source tools](https://github.com/AgriciDaniel): Other Claude Code skills.\n- [AI Marketing Hub](https://www.skool.com/ai-marketing-hub): Free community for AI-powered marketing.\n",
  "bytes": 27240,
  "sha": "7b35bd2212bb8255927c317a9474f5400308965f9f0c5286f949bc2f5c312633",
  "repo_slug": "agricidaniel/claude-blog",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_agricidaniel_claude_blog_blog_cannibaliz_622590ae/readme"
}