blog-analyze
Score one blog post (or a folder of posts) on a 5-category 100-point scale covering content quality, SEO, E-E-A-T, technical…
Measure writing-style statistics (sentence length, vocabulary, transitions, phrasing) from 5 to 10 posts you or your client wrote, and produce a voice profile for VOICE.md, blog-persona, and blog-write. Use for "learn my style", "build a writing baseline". It describes style; it
Claude Code
$ npx -y skills add AgriciDaniel/claude-blog --skill blog-style --agent claude-code
Codex
$ npx skills add AgriciDaniel/claude-blog --skill blog-style -a codex -y
Cursor
$ npx skills add AgriciDaniel/claude-blog --skill blog-style -a cursor -y
Gemini CLI
$ npx skills add AgriciDaniel/claude-blog --skill blog-style -a gemini-cli -y
GitHub Copilot
$ npx skills add AgriciDaniel/claude-blog --skill blog-style -a github-copilot -y
OpenCode
$ npx skills add AgriciDaniel/claude-blog --skill blog-style -a opencode -y
Windsurf
$ npx skills add AgriciDaniel/claude-blog --skill blog-style -a windsurf -y
name: blog-style description: Measure writing-style statistics (sentence length, vocabulary, transitions, phrasing) from 5 to 10 posts you or your client wrote, and produce a voice profile for VOICE.md, blog-persona, and blog-write. Use for "learn my style", "build a writing baseline". It describes style; it does not detect or attribute authorship, and it is not for scoring a post (blog-analyze) or writing brand rules (blog-brand). argument-hint: "learn <paths>" user-invocable: true license: MIT
Bundled paths below use host Markdown substitution of `${CLAUDE_SKILL_DIR}`; it is not an exported shell variable. Resolve them before execution, quote paths, and refuse nonabsolute overrides. Pass `blog_reference_root` resolved from `${CLAUDE_SKILL_DIR}/../blog/references`, `blog_template_root` from `${CLAUDE_SKILL_DIR}/../blog/templates`, and needed sibling roots to agents. Read the main reference `orchestration-details.md` before loading project context; pass only its helper-fenced output to downstream agents.
Learn an author voice profile from existing posts, then use it as a baseline for VOICE.md, blog-persona, and blog-write. The profile captures measurable style signals so future drafts can preserve the author's cadence, vocabulary, and tone.
Limits to state when reporting results:
authorship detection or attribution. Do not use it to claim who wrote a text or whether a person or an AI wrote it, and say so if asked.
profile to imitate a named third party who has not agreed to it.
script only measures them. When you later load project-root `VOICE.md`, use the fenced helper described in the `blog` skill section "Auto-loaded Project-Root Context".
| Command | Purpose | |---------|---------| | `/blog style learn <paths>` | Analyze sample posts and generate a voice profile |
Use 5 to 10 representative posts from the same author, brand, or editorial voice. Accept individual markdown files, MDX files, text files, or a directory containing posts.
Run the local learner:
BLOG_SCRIPT_DIR="${CLAUDE_BLOG_SCRIPTS_DIR:-${CLAUDE_SKILL_DIR}/../../scripts}"
case "$BLOG_SCRIPT_DIR" in /*) ;; *) echo "ERROR: script dir must be absolute" >&2; exit 1 ;; esac
python3 "$BLOG_SCRIPT_DIR/style_learn.py" <paths> --format markdownFor machine-readable output:
python3 "$BLOG_SCRIPT_DIR/style_learn.py" <paths> --format json --output voice-profile.json
For a VOICE.md-ready block (this replaces the whole file, so if `VOICE.md` already exists, write to `voice-profile.md` first, show the user a diff, and overwrite only after they confirm):
python3 "$BLOG_SCRIPT_DIR/style_learn.py" <paths> --format markdown --output VOICE.md
If fewer than the requested minimum sample count is supplied, warn and continue. The default minimum is 5 posts.
The learner aggregates the existing blog analyzer across each sample post:
Drop the markdown block into project `VOICE.md` when the goal is durable project context. Blog-write can use the style baselines as drafting targets:
looser cadence.
terms.
question-led the draft should feel.
Feed the JSON output into blog-persona when a structured persona should be created or updated. Map the learned values to persona sentence length, passive voice, readability, vocabulary, and tone settings.
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.
Score one blog post (or a folder of posts) on a 5-category 100-point scale covering content quality, SEO, E-E-A-T, technical…
Paid Gemini TTS audio for a finished blog post: summary, full read-aloud, or two-speaker dialogue, with an MP3 and an HTML5…
Full-site blog health assessment scanning all blog files for quality scores, orphan pages, topic cannibalization, stale content,…
Establish durable brand and voice context for cross-skill consumption. Generates BRAND.md (audience, positioning, do/don't…
Create a content brief for ONE planned post: target and secondary keywords, search intent, template choice, competitor gaps from…
Build a dated monthly or quarterly editorial calendar: which posts to publish or review when, content mix, templates,…
Activates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use…
AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable…
Use this skill when the user wants a .pptx with smooth cross-slide animation — PowerPoint Morph transitions, Keynote-style…
Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to…