Content patterns in writing

By Jack Stovell · published 2026-09-24

Content patterns describe what your writing carries: how specific it is, how often you tell a story, how many claims you make per paragraph and whether analogies do the explaining. In ScriptGrain they are 4 of 45 voice attributes, all judged by the extraction model, and 2 of the 4 move the voice match score.

Analyse your content patterns attributes free

Your free voice profile measures every content patterns attribute among all 45, from a sample of your own writing. No card needed.

Try the six-signal check first

At a glance

What the content patterns group measures

The content patterns group asks what your writing carries, not how it's dressed up. It holds four of ScriptGrain's 45 voice attributes, all judged by the extraction model: none is counted in code and none is a word list. A model reads your samples and forms a judgement, much as an editor would.

Specificity level asks whether your writing leans abstract, balanced, or data-driven. That's the whole scale, three points, no numbers in between. Someone who writes "productivity improved significantly" sits at the abstract end. Someone who writes "productivity rose by 12% in six weeks" sits at the other. This one moves your voice match score at weight 1.

Anecdote usage estimates how often personal anecdotes show up, as anecdotes per 1,000 words. It's stored in your profile and sent with it when ScriptGrain writes, but it doesn't touch the voice match number.

Claim density is the average number of claims made per paragraph. A writer who states three things per paragraph reads very differently from one who states one thing and spends the rest of the paragraph justifying it. Also judged, also not scored.

Analogy preference is a straight yes or no: does this writer reach for analogies as a go-to explanatory device? It moves the voice match score at weight 0.5. Some writers explain by comparison. Some explain by definition. Neither is wrong. They're just different habits, and this attribute tells you which one you've got.

How content patterns features are scored

Two of the four content patterns attributes move your voice match score; the other two are judged and reported but sit outside the score. Specificity level carries a weight of 1, analogy preference carries 0.5. Anecdote usage and claim density are read and recorded but don't push the number up or down. When a draft is scored, Claude Haiku reads the draft's specificity label and answers yes or no on analogies, and code compares both with the profile: the same specificity label scores 1, one step apart 0.5, two steps 0.1; a matching analogy answer scores 1 and a mismatch 0.2.

Every stored value in a ScriptGrain profile is the extraction model's reading, but other groups include features that code also counts when a draft is scored, such as sentence length or punctuation. This group has none: 0 counted in code, 4 judged, 0 catalogued. Claude Sonnet 5 reads the samples and forms a view on specificity, claim density, anecdote frequency and analogy habit the way a careful reader would.

A counted feature can be checked with a highlighter. A judged attribute is an interpretation, and it can vary slightly from run to run: ScriptGrain's SGR-003 study measured agreement on judged labels at 72% to 87%. The writing voice attributes reference covers all 45 attributes.

Across the whole 45-attribute framework, 28 attributes can move the voice match score when a draft gets checked against a profile. Content patterns contributes 2 of those 28. The scoring itself blends two things: code counts sentence, punctuation, pronoun, article and word-length features directly, while Claude Haiku judges formality, humour, structure and rhythm, and for this group specificity and analogy. A weighted comparison passes through a fixed calibration and lands as a single number from 0 to 1; the app calls 90% and above Excellent, 75 to 89% Good, 60 to 74% Fair and under 60% Low. Full mechanics are on the voice measurement framework page, and the scoring concept itself gets its own explainer at voice match.

How to analyse the content patterns of your own writing

You can analyse your own content patterns by hand in about ten minutes with a recent piece of writing in front of you. Here's how.

  1. Pull five paragraphs from something you've written recently, ideally not the same piece twice.
  2. Count the claims in each paragraph. A claim is any sentence that asserts something as true. Divide the total by five to get your rough claims-per-paragraph figure.
  3. Read each paragraph again and ask whether the detail is abstract ("things improved"), balanced (a mix of specifics and generalities), or data-driven (numbers, dates, named things).
  4. Scan the whole sample for anecdotes: personal stories, specific incidents, named people. Count them, then work out a rough rate per 1,000 words.
  5. Check whether you explain difficult ideas by comparison ("it's like...") or by straight definition. That tells you your analogy preference.

That's useful as a one-off diagnostic. ScriptGrain's free voice profile reads all four from a writing sample, alongside the other 41 attributes.

How to make AI writing match your content patterns

You make AI writing match your content patterns by feeding the model explicit targets instead of vague instructions like "write naturally." Vague instructions produce generic output. Specific targets produce something closer to how you actually write.

  1. Work out your own specificity level, claim density, anecdote rate and analogy habit using the manual steps above, or read them off a voice profile.
  2. Give it the facts, figures, names and real stories to use. Asked for specifics or anecdotes without them, a model invents them.
  3. Tell the AI tool your targets directly, for example: "aim for data-driven specificity, roughly two claims per paragraph, and use an anecdote every 800 to 1,000 words if the topic allows it."
  4. Ask it to favour analogy or avoid it, matching your own yes-or-no preference, rather than leaving that choice open.
  5. Check a generated draft against your targets the same way you checked your own writing: count the claims, scan for abstraction, look for analogies.
  6. Repeat with specific corrections rather than restarting from scratch. "More data, fewer generalities" is a better instruction than "make this better."

A ScriptGrain voice profile sends all four values into every draft it writes, alongside the other 41 attributes, as hard constraints; when your specificity level is data-driven or balanced, the prompt also tells the model not to abstract a concrete idea. The same profile reaches ChatGPT, Claude and any MCP tool: `GET /v1/profiles/{id}` and the MCP tool `get_profile` return all 45 attributes as JSON on every plan.

Attributes in this group

Questions

What is content analysis of writing style?

Content analysis of writing style, in ScriptGrain's framework, means judging what a piece of writing carries rather than how it's structured. It covers specificity (abstract to data-driven), how often anecdotes appear, how many claims sit in each paragraph, and whether analogies do the explaining. All four values come from the extraction model reading the sample, not from a word count or a script.

How specific is my writing?

Specificity is judged on a three-point scale: abstract, balanced, or data-driven. Abstract writing leans on generalities ("costs went up"). Data-driven writing leans on specifics ("costs went up by 12%"). To check your own, reread a few paragraphs and ask whether the detail could be replaced by a number, a name or a date. If it easily could, you're probably closer to abstract than you think.

How do I analyse writing content patterns without software?

Pull five paragraphs, count the claims in each, and average them. Then judge whether the detail is abstract, balanced, or data-driven, and whether you're leaning on comparisons to explain things. Scan the sample for anecdotes and estimate a rate per 1,000 words. It's rough compared with automated scoring, but it's a genuine, quick way to see your own habits on the page.

How do I make AI writing more concrete?

Give the model the facts, figures and names you want used, then ask for data-driven specificity and one concrete example per claim. Asked for specifics without supplying them, a model invents them. Replace category words with the actual thing: the invoice, the Tuesday call, the 12% rise instead of "significant improvement". Vague prompts produce vague output.

How do I make AI write with more substance?

Substance, in this framework, is largely a claim density and specificity problem. Set a target for claims per paragraph, push the model towards data-driven detail over abstraction, and decide upfront whether you want analogies doing the explaining or plain statements. A ScriptGrain profile carries all of this automatically into a draft, and the same values reach other tools through the API and MCP server.

Related

Sources