blog-persona
Create and manage writing personas with NNGroup 4-dimension tone framework (Funny-Serious, Formal-Casual, Respectful-Irreverent, Enthusiastic-Matter-of-fact). Personas define readability targets, sentence length distribution, vocabulary tier, contraction frequency, and summary box label. Used by blog-write and blog-rewrite to enforce consistent voice. Use when user says "persona", "voice", "tone", "writing style", "brand voice", "create persona", "use persona".
Security Assessment
About blog-persona
Blog Persona is a voice-and-tone management skill within the claude-blog toolkit. It solves the problem of inconsistent brand voice across blog content by capturing a brand's writing style as a structured, reusable persona. Built on the NNGroup 4-dimension tone framework (Funny-Serious, Formal-Casual, Respectful-Irreverent, Enthusiastic-Matter-of-fact) and the CMI Brand Voice Chart, a persona encodes readability targets, sentence-length distribution, vocabulary tier, contraction frequency, do/don't lists, and a preferred summary-box label so that every post reads as if written by the same author.
The skill exposes commands to create, list, use, and show personas. Creation runs a six-step interactive interview covering brand basics, tone-dimension sliders, writing rules, do's and don'ts, summary-label preference, and optional voice-sample URLs. Personas are saved as JSON files (kebab-case, with path-traversal protections) under the skill's references directory, following a documented schema. Once a persona is active, blog-write and blog-rewrite load it to inject tone and style rules into generation and to validate output against the persona's constraints. Notably, the optional voice-sample step includes explicit, security-conscious fetching rules: allow only http/https, reject javascript/data/file URLs, block loopback and private IP ranges to prevent SSRF, validate redirects, cap size and timeout, and treat fetched page text as untrusted data rather than instructions.
The target users are content teams, marketers, and solo bloggers who publish frequently and need to enforce a coherent voice. Use cases include codifying a company's B2B SaaS voice, maintaining separate personas for different brands or audiences, and ensuring AI-generated drafts match an established editorial style.
FAQ
What commands does the skill provide?
Four: create (an interactive interview to build a persona), list (show saved personas), use (set the active persona for the session), and show (display a full persona profile).
What framework underlies the tone settings?
The NNGroup 4-dimension tone framework (Funny-Serious, Formal-Casual, Respectful-Irreverent, Enthusiastic-Matter-of-fact) combined with the CMI Brand Voice Chart for do's and don'ts.
Where are personas stored?
As JSON files in the skill's references/personas directory, named in kebab-case. The skill rejects path separators, '..', absolute paths, and symlinks when writing them.
How is a persona applied to writing?
When a persona is active, blog-write and blog-rewrite load its JSON, inject tone dimensions and style rules into the writer's prompt, follow the do/don't lists during generation, and validate the output against the persona's constraints.
Is it safe to provide voice-sample URLs?
Yes. The skill fetches sample URLs only for style measurement, restricts them to http/https, blocks private and loopback addresses, validates redirects, caps size and timeout, and treats fetched content as untrusted data whose embedded instructions are ignored.
Install blog-persona
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
agricidaniel/claude-blog