{
  "markdown": "# claude-skill-blog-assistant\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Built for Claude](https://img.shields.io/badge/Built%20for-Claude-D97757)](https://claude.com)\n[![Version](https://img.shields.io/badge/version-0.1.0-blue.svg)](#)\n[![Requires: claude-blog](https://img.shields.io/badge/Requires-claude--blog-success)](https://github.com/AgriciDaniel/claude-blog)\n\n**Full write-up:** [ericforte.com/blog/3-claude-code-skills-i-built](https://www.ericforte.com/blog/3-claude-code-skills-i-built)\n\n> A dual-mode Claude skill that wraps `AgriciDaniel/claude-blog` into a complete publishing lifecycle. **Mode 1 (Ship):** walk through the 8-step lifecycle to publish a new post. **Mode 2 (Score):** audit an existing published post against the same 8-step checklist and return a prioritized retrofit list.\n\nThis skill REQUIRES `AgriciDaniel/claude-blog` installed alongside. It adds the orchestration, audit gates, dual-mode routing, and retrofit logic that `claude-blog` does not include by itself.\n\n---\n\n## What this skill adds to `claude-blog`\n\n`claude-blog` is a plugin with 28 sub-skills for every part of blog publishing (brief, write, SEO check, schema, analyze, repurpose, and more). Each sub-skill works standalone. You invoke whatever you need.\n\n`claude-blog-assistant` does NOT replace `claude-blog`. It REQUIRES it. The value-add is the conductor layer:\n\n| `claude-blog` (the plugin) | `claude-blog-assistant` (this skill) |\n| -------------------------- | ----------------------------- |\n| 28 individual sub-skills, each one-shot | 8-step lifecycle order with gates between steps |\n| You decide what to invoke and when | One entry point routes you to Mode 1 (ship) or Mode 2 (score) |\n| No opinion on ordering | Opinionated order: brief → write → humanize → SEO check → schema → analyze → repurpose → final QA |\n| `blog-analyze` is optional | `blog-analyze` is mandatory in this lifecycle; never silently skipped |\n| Brief and draft are separate sub-skills | Brief-approval gate forces user review before drafting (prevents wasted writes) |\n| No \"score existing post\" workflow | Mode 2 retroactively audits any published post and outputs a prioritized retrofit list |\n| Sub-skills don't talk to each other | Cross-skill integration: invokes `humanizer` in Step 3; cross-references `hormozi-offer-audit` and `cialdini-influence-audit` for offer/persuasion work |\n| No platform-specific repurpose guidance baked in | Repurpose step uses verified platform specs (LinkedIn 3,000 cap, X 280, Threads 500) with unverified claims explicitly labeled |\n| Each sub-skill invocation is silent | Audit-gate visibility: every sub-skill announced before firing, so you can stop or redirect mid-flow |\n\n**Plain version:** if you only need to write a single post and you know which sub-skill you want, just use `claude-blog` directly. If you want a full publishing lifecycle from idea to ship, OR you want to retroactively score posts you already published, this skill adds the conductor.\n\n---\n\n## Why this skill exists\n\nMost blog publishing workflows online are written-by-hand checklists. They tell you to \"write a brief, draft, edit, optimize.\" They do not enforce order. They do not gate on quality. They do not score after the fact.\n\n`claude-blog` gives you the parts. `claude-blog-assistant` gives you the assembly. The 8-step lifecycle exists because each gate catches a real failure mode the author has seen at least once. Skip the brief and you ship a post that drifts off topic. Skip the humanizer and you ship AI-tells. Skip the analyze and you accumulate SEO debt that compounds across the blog.\n\nMode 2 (score existing post) exists because authors accumulate published posts that were shipped before the lifecycle was in place. You don't want to rewrite them all. You want to know which ones need retrofit and in what order. Mode 2 returns a prioritized retrofit list.\n\n---\n\n## Install\n\nThis skill REQUIRES `AgriciDaniel/claude-blog` installed alongside as a hard dependency on every surface. Skills do not sync across surfaces (per [Anthropic's Agent Skills docs](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview#cross-surface-availability)). Install on each surface where you want to run this skill.\n\n### Claude Code (CLI)\n\nTwo paths. Use git clone today; the plugin marketplace listing is pending Anthropic approval.\n\n**Option A: git clone (works today).**\n\nStep 1: install the required `claude-blog` dependency (standalone skill, not a plugin):\n\n```bash\ngit clone https://github.com/AgriciDaniel/claude-blog.git ~/.claude/skills/claude-blog\n```\n\nStep 2: clone this plugin and load it with `--plugin-dir`:\n\n```bash\ngit clone https://github.com/johnericforte/claude-skill-blog-assistant.git ~/claude-plugins/claude-blog-assistant\nclaude --plugin-dir ~/claude-plugins/claude-blog-assistant\n```\n\nTo verify the plugin loaded, run `/help` in Claude Code. You should see `claude-blog-assistant:assistant` listed.\n\n**Option B: Plugin marketplace (pending Anthropic approval).** Once the listing lands:\n\n```\n/plugin install claude-blog-assistant\n```\n\nYou will still need to install `AgriciDaniel/claude-blog` separately (Step 1 above). The marketplace listing does not bundle the upstream plugin.\n\n### claude.ai (web) / Claude Desktop\n\nZIP both `skills/assistant/` from this repo AND the full `AgriciDaniel/claude-blog` repo. Upload both via **Settings → Features → Skills** on claude.ai. The skills sync to Claude Desktop through your account. Requires a Pro, Max, Team, or Enterprise plan with code execution enabled. See [Anthropic's docs](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview) for plan requirements and limits.\n\n### Invocation (Claude Code)\n\nOnce loaded in Claude Code, invoke the skill with the plugin-namespaced name:\n\n```\n/claude-blog-assistant:assistant\n```\n\n### Optional dependency: `humanizer`\n\nRecommended for Step 3 (voice cleanup):\n\n```bash\ngit clone https://github.com/blader/humanizer.git ~/.claude/skills/humanizer\n```\n\n`humanizer` is a standalone skill (not a plugin), so it installs to the standard `~/.claude/skills/` directory.\n\n### Auto-install offer (lazy install path)\n\nYou can also install this plugin first and let it offer to install the dependencies for you on first invocation. When you invoke the skill, it checks for `claude-blog` (required) and `humanizer` (optional). If either is missing, it asks you for permission before running `git clone`, then prompts you to restart Claude Code to load the newly installed skills.\n\nNo skill is installed without your explicit yes. Decline at any time. If you decline `claude-blog`, the orchestrator aborts. If you decline `humanizer`, Step 3 (humanize) is skipped and labeled accordingly.\n\n---\n\n## Quick start\n\nOnce installed, invoke the skill via Claude:\n\n```\nUse the claude-blog-assistant:assistant skill.\n```\n\nThe skill will ask you which mode you want:\n\n```\nThis skill has two modes:\n\n  1. Ship new post: walk through the 8-step lifecycle to publish a new post.\n  2. Score existing post: audit a published post and output a prioritized retrofit list.\n\nWhich mode? (1 or 2)\n```\n\nPick the mode. For Mode 1, the skill walks you through 8 steps with announcements before each gate. For Mode 2, paste a URL or the post text and the skill returns the audit + retrofit list.\n\n---\n\n## Demo\n\n### Mode 1: Ship new post\n\n```\nYou: Use claude-blog-assistant. Mode 1. Topic: \"How to pick the right CRM for a 5-person consulting firm.\" Audience: solo consultants and small services teams.\n\nSkill: Running `claude-blog:blog-brief` now...\n  → Brief written to /<your-content-folder>/blog-briefs/how-to-pick-the-right-crm-brief.md\n  → Stop here. Review the brief, then reply \"approved\" to continue.\n\nYou: approved\n\nSkill: Running `claude-blog:blog-write` now...\n  → Draft generated using approved brief.\n  → Continue to Step 3 (humanize)? (yes / no)\n\nYou: yes\n\nSkill: Running `humanizer` now...\n  → Voice pass complete. 4 em dashes replaced. 2 AI-vocab tells removed.\n  → Continue to Step 4 (SEO check)? (yes / no)\n\nYou: yes\n\n[... continues through Steps 4-8, with announcements + gate confirmations at each step]\n\nFinal output:\n  - Draft (final): /<your-content-folder>/posts/how-to-pick-the-right-crm.md\n  - Schema JSON-LD: /<your-content-folder>/posts/how-to-pick-the-right-crm.schema.json\n  - Repurpose drafts: /<your-content-folder>/blog-briefs/how-to-pick-the-right-crm-{LINKEDIN,X,THREADS}.md\n  - Lifecycle audit score: 87 / 100\n```\n\n### Mode 2: Score existing post\n\n```\nYou: Use claude-blog-assistant. Mode 2. URL: https://example.com/blog/my-old-post-from-2024\n\nSkill: Running `claude-blog:blog-analyze` on the post text now...\n  → Score: 64 / 100\n\nScore:\n  Content quality:    20 / 30\n  SEO:                14 / 25\n  E-E-A-T:            8 / 15\n  Technical:          10 / 15\n  AI citation:        12 / 15\n\nLifecycle compliance:\n  1. Brief evidence:       PRESENT (post has one clear angle and named keyword)\n  2. Draft quality:        WEAK (no Key Takeaways box, no citation capsules)\n  3. Humanizer pass:       MISSING (5 em dashes found, 3 AI-vocab tells)\n  4. SEO check signals:    title length OK, meta description over 160 chars, no internal links\n  5. Schema (JSON-LD):     MISSING (no Article or BreadcrumbList found in page source)\n  6. Analyze score:        64 / 100\n  7. Repurpose drafts:     N/A\n  8. Final QA notes:       two dead outbound links\n\nTop retrofit list (prioritized by impact-to-effort ratio):\n  1. Add JSON-LD schema (Article + BreadcrumbList). Cost: 15 minutes. Lift: +6 SEO points + AI citation readiness.\n  2. Run `humanizer` skill on the post body and replace 5 em dashes + 3 AI-vocab tells. Cost: 10 minutes. Lift: stops the post reading as AI-generated.\n  3. Trim meta description to <160 chars. Cost: 2 minutes. Lift: SERP click-through.\n  4. Add 3-5 internal links to related posts. Cost: 5 minutes. Lift: SEO + bounce rate.\n  5. Add Key Takeaways box near the top. Cost: 10 minutes. Lift: +4 Content quality points + readability.\n```\n\n---\n\n## Use cases\n\n- Solo creator shipping weekly blog posts and wanting a consistent quality bar\n- Agency content team standardizing publishing across multiple writers\n- DevRel or technical writer needing SEO + AEO/GEO optimization built in\n- B2B SaaS marketing publishing pillar posts plus supporting cluster articles\n- Newsletter operator turning archive content into evergreen blog posts\n- Indie founder doing content marketing solo and needing lifecycle gates as a forcing function\n- Anyone with a backlog of older posts who needs to know which ones to retrofit first\n\n---\n\n## How it works\n\nMode 1 walks the user through 8 steps. Each step is announced before firing. The user can stop or redirect at any gate.\n\n| Step | Sub-skill | Gate |\n| ---- | --------- | ---- |\n| 1. Brief | `claude-blog:blog-brief` | User reviews and approves before drafting |\n| 2. Draft | `claude-blog:blog-write` | Continue confirmation |\n| 3. Humanize | `humanizer` (optional dependency) | Continue confirmation |\n| 4. SEO check | `claude-blog:blog-seo-check` | Continue confirmation |\n| 5. Schema (JSON-LD) | `claude-blog:blog-schema` | Continue confirmation |\n| 6. Analyze | `claude-blog:blog-analyze` | MANDATORY; never silently skipped |\n| 7. Repurpose | `claude-blog:blog-repurpose` | Optional, only on user request |\n| 8. Final QA | (human read-through) | User signs off |\n\nMode 2 takes a URL or pasted post text, runs `claude-blog:blog-analyze` plus a lifecycle compliance check, and outputs the retrofit list ranked by impact-to-effort.\n\nThe full mechanic, sub-skill mapping, and retrofit selection logic live in [`SKILL.md`](./SKILL.md). Reference cards for each piece live in [`references/`](./references/).\n\n---\n\n## Companion skills\n\n- **[`humanizer`](https://github.com/blader/humanizer)**: optional but recommended. Strips AI vocabulary, em-dash overuse, rule-of-three padding, and other AI-writing tells. Invoked automatically in Step 3 if installed.\n- **[`hormozi-offer-audit`](https://github.com/johnericforte/claude-skill-hormozi-offer-audit)**: audit-first companion skill for posts that pitch an offer (sales pages, lead magnets, pricing tier walkthroughs). Pair the claude-blog-assistant lifecycle with a Hormozi offer audit on the post's CTA and pricing claims.\n- **[`cialdini-influence-audit`](https://github.com/johnericforte/claude-skill-cialdini-influence-audit)**: audit-first companion skill for posts heavy on persuasion (CTAs, conversion copy, opt-in sequences). Pair the claude-blog-assistant lifecycle with a Cialdini influence audit on the post's persuasion mechanics.\n\nThis skill does not auto-invoke the companions. It mentions them by name when applicable.\n\n---\n\n## FAQ\n\n**Is this a replacement for `claude-blog`?**\n\nNo. This skill REQUIRES `claude-blog`. It is a conductor layer on top of `claude-blog`'s individual sub-skills. Without `claude-blog` installed, this skill aborts at startup with an install message.\n\n**What if I only want to use one `claude-blog` sub-skill (like just the brief)?**\n\nUse `claude-blog` directly. This skill is for the full lifecycle. If you want to invoke a single sub-skill, you don't need the conductor.\n\n**Why is the brief step gated on user approval?**\n\nDrafting without an approved brief produces drift. The brief defines the angle, audience, keyword target, and outline. Locking those in before drafting saves rewrites later. The gate is a forcing function, not a suggestion.\n\n**Why is `blog-analyze` mandatory?**\n\nIt's the end-of-pipeline check. Posts shipped without it accumulate SEO and quality debt that compounds across the blog. Making it non-skippable means every post that exits the lifecycle has a known score.\n\n**What does Mode 2 do that I can't do with `claude-blog:blog-analyze` directly?**\n\n`blog-analyze` returns a score. Mode 2 returns a score PLUS a lifecycle compliance check (which of the 8 steps were skipped or weak) PLUS a prioritized retrofit list ranked by impact-to-effort. The retrofit list is the value-add.\n\n**Does this work with tools other than Claude Code?**\n\nThe skill is written in the Claude Code skill format (`SKILL.md` + frontmatter). It also works in OpenCode, which uses the same skill format. For other tools, you may need to adapt the format manually.\n\n**Can I use this for commercial work?**\n\nYes. The skill is MIT-licensed. So is `claude-blog`. So is `humanizer`. You can use the full stack on client work, agency content production, and any other commercial application.\n\n**Why is the \"LinkedIn link in first comment\" labeled as unverified?**\n\nThe character-limit data from AuthoredUp's 372k-post study is verified. The mechanism behind the alleged comment-link reach boost (a 360Brew penalty for body links) is NOT officially confirmed by LinkedIn. Many practitioners report it works. This skill labels it as a popular practice rather than gospel so users can make their own call.\n\n**What if `humanizer` is not installed?**\n\nStep 3 is labeled \"no humanizer pass ran\" and the lifecycle continues. The skill ships the draft as-is. You can install `humanizer` later and re-run Step 3 manually.\n\n---\n\n## Sources & attribution\n\nThis skill orchestrates publicly available sub-skills from `AgriciDaniel/claude-blog`. The 8-step lifecycle synthesizes mainstream blog publishing best practices from multiple sources. Frameworks and methodologies cited descriptively under nominative fair use where applicable.\n\n**Required dependency:**\n\n- [`AgriciDaniel/claude-blog`](https://github.com/AgriciDaniel/claude-blog): MIT license, 28 sub-skills.\n\n**Optional dependency:**\n\n- [`blader/humanizer`](https://github.com/blader/humanizer): MIT license, used in Step 3.\n\n**Verified online references:**\n\n- [Google SEO Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide)\n- [Google Article structured data](https://developers.google.com/search/docs/appearance/structured-data/article)\n- [Schema.org BlogPosting](https://schema.org/BlogPosting)\n- [Surfer SEO Content Audit scoring](https://docs.surferseo.com/en/articles/9463956-content-score-in-content-audit-explained)\n- [Clearscope grading dimensions](https://www.clearscope.io/support/how-does-clearscope-grade-your-content)\n- [AuthoredUp LinkedIn character-limit study](https://authoredup.com/blog/linkedin-character-limit)\n\nFull source list, caveats on unverified claims, and the verification status of every framework definition: [`references/sources.md`](./references/sources.md).\n\n---\n\n## Contributing\n\nPull requests welcome. Especially:\n\n- Bug fixes for sub-skill name drift (claude-blog sub-skill names may change over time)\n- Additional worked examples in `references/examples/`\n- Platform-spec updates as LinkedIn / X / Threads change character limits or algorithm patterns\n- Mode 2 audit rubric improvements\n\nFor framework misattribution or breaking changes in `claude-blog`, open an issue.\n\n---\n\n## Author\n\nBuilt by **Eric Forte**, AI Automation Engineer for GoHighLevel Marketing Agencies.\n\n- Website: [ericforte.com](https://www.ericforte.com)\n- Blog: [ericforte.com/blog](https://www.ericforte.com/blog)\n- LinkedIn: [@johnericforte](https://www.linkedin.com/in/johnericforte/)\n\n---\n\n## License\n\n[MIT](./LICENSE) © 2026 Eric Forte\n",
  "bytes": 17261,
  "sha": "423310b09c4da86beab5599cf2c662f601de0502e6ad849cd8592db79905922c",
  "repo_slug": "johnericforte/claude-skill-blog-assistant",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_johnericforte_claude_skill_blog_assistan_945b73e6/readme"
}