AI Tools

Build a Brand Voice Analyzer with Claude: Feed It 20 Posts, Get Back a 12-Dimension Style Guide

Build a Brand Voice Analyzer with Claude: Feed It 20 Posts, Get Back a 12-Dimension Style Guide
Contents

Last week I asked Claude to read 22 of my own published articles — every English post on this blog from the past 14 months — and tell me what it actually saw. No instructions, no examples, just one prompt: "Analyze my writing style across 12 measurable dimensions and output a structured profile."

The 12-dimension profile Claude returned was uncomfortably accurate. It flagged that I use contractions in 78% of sentences, lean 70% casual / 30% formal, almost never use exclamation marks, open posts with either a scene or a specific number (never a definition), and finish with one of three signature moves: a one-line takeaway, a reframe, or an open question. Two of those patterns I would never have admitted about my own writing. One contradicted what I thought my voice was.

That single experiment produced something better than the brand voice document I'd been using for 18 months. It took 4 minutes. It cost about $0.40 in API tokens. And it's the workflow I now use with every new client.

Here's the system.

Why Brand Books Don't Capture Brand Voice

Most brand voice documents fail at the same step. They describe the voice with adjectives — warm, bold, authoritative, approachable — and then wonder why a language model produces generic copy when you paste it into ChatGPT.

The reason is structural. Adjectives are compressions of patterns. They work for human writers who can infer the patterns from years of context. They don't work for a model that has none of that context. To get consistent output from Claude, ChatGPT, or Gemini, you need to extract the patterns themselves — the sentence lengths, the sentence structures, the pronoun choices, the rhetorical moves — and hand those over directly.

The 30-page brand book lives in the CMO's head. The 1-page style guide lives in the model's context window (the working memory the model reads from on every turn — usually 200K tokens for Claude, 128K for GPT-4 class models, but in practice you want everything loadable in a single conversation). One is a manifesto. The other is a tool.

The source data for the tool is sitting in your CMS (Content Management System, 内容管理系统). You just haven't mined it yet.

Prerequisites (5 Minutes)

You need three things:

  • 20+ published pieces you're proud of. Blog posts, newsletters, sales emails, product pages — anything written in your brand voice. The more variety, the better the profile. Don't curate for "best hits" only; throw in some middling ones too, so the model sees the range, not just the highlights.
  • Claude Sonnet 4.5 or Opus 4.7. Sonnet is fine for most analyses and 5x cheaper. Use Opus if you're trying to extract subtle stylistic patterns from literary or long-form content.
  • A clean text dump. Strip the formatting — no headers, no images, no markdown bold. You want the model to analyze the prose, not the layout. A single .txt file with the 20 posts concatenated, separated by a marker like ---POST 1---, works perfectly.

If you're on Claude.ai, you can just paste the posts directly into the chat. If you want this as a reusable prompt, use the API (Application Programming Interface) — Anthropic's Python SDK (Software Development Kit) is two lines of code, and the whole script is at the bottom of this article.

The 12 Dimensions

These are the dimensions I measure. I chose them because each one is (a) observable in the text, (b) consistently present in good writing, and (c) actionable — once you know where you land, you can write rules the model can follow.

  1. Formality spectrum — where you sit between The Economist and a Substack newsletter. I land at roughly 70% casual / 30% formal. A premium B2B (Business to Business, 企业对企业) brand might land at 30/70.

  2. Average sentence length — measured in words. Marketing copy clusters around 12-18 words per sentence. Literary long-form sits at 20-30. Shorter isn't always better; the variance matters more than the mean.

  3. Active vs passive voice ratio — your default grammatical posture. AI models default to passive because their training data over-represents formal text. Active voice feels more confident.

  4. Pronoun strategywe / you / I / third person. Each pronoun choice signals a relationship. A B2B SaaS (Software as a Service, 软件即服务) blog leans you. A founder-led newsletter leans I. A corporate brand leans we.

  5. Contraction usagedon't vs do not, we're vs we are. Heavy contraction usage is one of the single strongest signals of casual voice.

  6. Jargon density — industry-specific terms per 1,000 words. Measured against your target reader's knowledge, not your internal team's.

  7. Humor and figurative language — frequency, type (dry, absurdist, self-deprecating), and what the humor targets. Humor is the hardest pattern for models to replicate from rules alone, which is why the examples section of any style guide matters more than the adjectives.

  8. Question frequency — rhetorical and direct. Some voices (mine) use questions as structural pivots. Others never ask and answer only.

  9. Data citation style — how you bring in numbers. Parenthetical? Inline? Footnoted? With sources or without? This is a small dimension with outsized impact on perceived credibility.

  10. Opening hook pattern — the first sentence of a post. Most voices have 2-3 signature openings they cycle through. Mine, per Claude's analysis: a specific number, a small scene, or a contrarian claim. Never a definition.

  11. CTA (Call to Action, 行动召唤) style — how posts end. Three common patterns: action list, one-line takeaway, or open question. Pick the one that matches your publishing rhythm.

  12. List-to-prose ratio — what fraction of the post is bullet points vs running text. AI defaults to ~40% lists. Most human voices sit at 15-25%. This single number is a strong "was this written by AI" signal.

Some of these are easy to measure with regex (contractions, sentence length, pronoun counts). Others require the model's reading. I usually run a hybrid: programmatic counts for 2, 3, 5, 6, 8, 12; model judgment for 1, 4, 7, 9, 10, 11.

The Prompt (Exact Text)

Here's the prompt I use, in full. Paste the 20 posts above it, drop this in, run it.

You are a brand voice analyst. I am going to give you 20 published
pieces from a single brand. Your job is to produce a 12-dimension
voice profile.

For each dimension below, output:
- A precise score (use the units given)
- A 1-2 sentence justification citing specific evidence from the texts
- A signature example (a short quote from the corpus that
  exemplifies the pattern)

The 12 dimensions:

1. Formality spectrum (0-100, where 0=formal-Economist, 100=casual-Substack)
2. Average sentence length (in words, plus standard deviation)
3. Active vs passive voice ratio (percentage)
4. Pronoun strategy (rank we / you / I / third-person by frequency)
5. Contraction usage (percentage of sentences containing at least one)
6. Jargon density (industry-specific terms per 1,000 words)
7. Humor and figurative language (frequency, type, target)
8. Question frequency (questions per 1,000 words, broken into
   rhetorical vs direct)
9. Data citation style (inline / parenthetical / footnoted, with
   or without sources)
10. Opening hook pattern (the 2-3 most common first-sentence shapes,
   with one example each)
11. CTA style (how posts end — rank the top 3 patterns)
12. List-to-prose ratio (percentage of total words inside bulleted
   or numbered lists)

At the end, output a one-paragraph "voice summary" that a junior
copywriter could use to mimic this brand after reading 3 minutes
of output.

Be honest. If the voice is inconsistent across posts, say so and
identify the 2-3 distinct sub-voices. Do not flatter the writer.
Cite specific sentences as evidence.

The last two sentences are load-bearing. Without them, the model will produce a flattering summary that averages out the rough edges. With them, you get the version of the voice that's actually useful — including the inconsistencies you didn't know you had.

What the Output Looks Like

For my own writing, Claude produced something like this (paraphrased — the full output runs ~700 words):

Voice profile for Song, AI Marketing Focus

  1. Formality: 72/100. The writing uses contractions in 78% of sentences and consistently favors short clauses. Voice occasionally drops to 30/100 in technical posts and rises to 90/100 in opinion pieces.
  2. Avg sentence length: 14.3 words (SD 8.1). Short. The standard deviation is higher than the median, indicating intentional rhythm variation.
  3. Active vs passive: 91% active. Almost no passive constructions.
  4. Pronoun strategy: you (38%), I (24%), we (12%), third-person (26%). The high I frequency is the strongest deviation from typical B2B marketing voice.
  5. Contractions: 78% of sentences.
  6. Jargon density: 4.2 terms/1k words. Lower than typical SaaS (which averages 11).
  7. Humor: dry, self-deprecating, targets the writer 70% of the time (e.g., "I'd be lying if I said this was a clean experiment"). Almost never targets the reader.
  8. Questions: 6.3 per 1k words, of which 80% are rhetorical pivots, 20% direct reader questions.
  9. Data citation: inline with no formal source links. Numbers introduced as "roughly," "about," or "around" — never as authoritative claims.
  10. Opening hooks: (a) specific number/scene (40%), (b) contrarian claim (30%), (c) small personal moment (20%), other (10%).
  11. CTA: one-line takeaway (50%), open question (30%), action list (20%).
  12. List-to-prose ratio: 18%. Notably low for the category.

Voice summary: A 15-year practitioner writing for other practitioners. The voice assumes the reader has done the work; it doesn't explain basics. It's direct without being blunt, opinionated without being combative, and self-aware enough to admit when an experiment didn't work. The signature move is the "uncomfortable accurate" moment — a fact about the writer's own process that the writer wouldn't have volunteered.

That summary is the one paragraph I now keep at the top of every Claude Project and every ChatGPT Custom Instructions field. It's the brand voice document, in the form the model can use.

Turning the Profile Into a Working Style Guide

The 12-dimension profile is the analysis. The style guide is the operating version — the rules a writer (human or model) can follow without re-reading the analysis every time.

Translate the 12 dimensions into 12 rules, one per dimension. For each rule, add (a) a do/don't example, and (b) the score threshold that triggers a rewrite.

For my voice, the rules look like this:

  • Formality (target 70/100): Use contractions. Drop the third-person corporate voice. Don't write "the user can configure" — write "you can set this up."
  • Sentence length (target 14 words, SD 8): Mix short (5-10 word) sentences with longer (20-30 word) ones. Three short sentences in a row is a tell.
  • Active voice (target 90%+): "We shipped the feature" not "the feature was shipped."
  • Pronoun (lean you and I): Avoid we except when referring to the team doing the work.
  • Contractions (target 80%+): "Don't" not "do not." "It's" not "it is."
  • Jargon (target <5/1k words): If a term needs defining, define it inline or don't use it.
  • Humor: Dry, self-deprecating. Never punch at the reader.
  • Questions: Use as structural pivots, not as filler. One rhetorical question per ~500 words is plenty.
  • Data: "Roughly," "about," "around" for estimates. Cite specific sources for specific claims. No "studies show" without the study.
  • Opening hook: Specific number, scene, or contrarian claim. No definitions. No "in today's world…" intros.
  • CTA: Pick one of three endings, rotate deliberately. Don't end every post with an action list.
  • List-to-prose ratio (target <20%): If a post is more than 25% lists, the structure is doing the work the prose should be doing. Rewrite.

The result is one page. That one page is what gets loaded into Claude's Project Instructions, ChatGPT's Custom Instructions, and every Custom GPT (ChatGPT's feature for building a specialized assistant) / Gemini Gem (Gemini's preconfigured personalized AI assistant) the team uses. It's the operational voice.

What to Watch Out For

Three failure modes I see every time someone tries this for the first time.

1. Picking the wrong 20 posts. If you curate for "best hits only," the model over-fits to your most polished voice and misses the day-to-day register your readers actually experience. Include 5-7 posts you're less proud of. The rough edges are where the consistency lives.

2. Running the analysis once and treating it as gospel. Voice drifts. Run the analysis on a rolling 6-month window every quarter. If a dimension moves by more than 15%, the voice is changing — and you should decide whether that's intentional or drift.

3. Over-fitting the rules. The 12-dimension profile describes the voice. It doesn't prescribe every sentence. If you turn every rule into a hard constraint ("never use a sentence over 20 words"), the model will produce prose that satisfies the constraints and reads like a checklist. Keep 2-3 rules as hard limits, the rest as soft targets. The voice lives in the soft targets.

The Full API Script

If you want to run this on demand — say, quarterly as your voice evolves — here's the entire workflow in 15 lines of Python. Saves the profile to a JSON file you can diff across runs.

pythonimport anthropic
import json
from pathlib import Path

client = anthropic.Anthropic()
corpus = Path("voice-corpus.txt").read_text()

prompt = Path("voice-analyzer-prompt.txt").read_text()

msg = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=4096,
    messages=[{
        "role": "user",
        "content": f"{prompt}\n\n---CORPUS---\n{corpus}\n---END CORPUS---"
    }]
)

profile = msg.content[0].text
Path("voice-profile.json").write_text(profile)
print(f"Profile written: {len(profile)} chars")

To compare across quarters, run the same script on the new corpus, write to voice-profile-2025Q2.json, and diff the JSON keys. The dimension that moved is the dimension you just lost control of.

What This Replaces

I don't write brand voice documents for clients anymore. I run the analyzer on their 20 best posts, hand them the 12-dimension profile, and translate it into a 1-page style guide on the spot. The whole thing takes about 90 minutes, including the 4 minutes Claude needs to do the analysis. The output is more accurate than what a 2-week brand workshop produces, and the client can use it the same day.

The hardest part of voice isn't defining it. It's letting the model see the writing you've already done, and trusting that the patterns in it are the voice you actually have — not the voice you think you have.

Run the analyzer on your own archive. The first result is usually a little uncomfortable. The second result, six months later, is the voice you've been trying to write toward all along.