Social caption generator in your own measured voice

Captions are short enough that voice is almost all there is. Strip out your rhythm and your habits and there is nothing left to tell it apart from anyone else's.

Why it matters here

Short-form is where a tone description fails hardest: there aren't enough words for 'friendly, professional, approachable' to mean anything. A measured profile still works at forty words because it describes how you build a sentence, not what mood you are in.

How ScriptGrain does it

  1. Give it captions and posts you have already published.
  2. The profile captures your quirks at the level short copy actually lives on: punctuation habits, filler phrases, whether you use exclamation marks at all.
  3. Captions are drafted to that profile, so brevity does not flatten the voice.

Captions default to around 120 words and skip the outline step, so you go straight from brief to draft.

What a caption in your voice looks like

It sounds like you on a short day. That's the test.

A caption written in your own voice has a rhythm you could pick out blind. Maybe you open with a fragment. Maybe you write one long sentence and then a three-word one to land it. Maybe you never use a question mark, or you always do. These habits are small, but at forty words they're the whole thing.

Four things carry most of the weight:

  1. Rhythm. The gap between your longest and shortest sentence, and where the short one sits.
  2. Openers. Whether you start with a direct claim, a scene, a question, or the word "So".
  3. Length. Some people write two lines. Others write six and call it a caption.
  4. Punctuation habits. Dashes, semicolons, brackets, exclamation marks, ellipses, and how often each appears.

Notice what's missing from that list: mood. "Warm" and "upbeat" aren't features you can measure. Contraction rate is. So is average sentence length. Those are the things a profile can hold onto.

Why short copy is where tone descriptions fail

Take a tone brief. "Friendly, confident, approachable" describes roughly half the captions on any feed. Give that instruction to a model and it'll produce the average of all of them.

Generic AI captions give themselves away in predictable ways. You've seen them:

That last one matters most. Smooth is the tell. Real writing is uneven: a long sentence that wanders, then a stub. A caption where every line lands in the same narrow band reads as generated even when each word is fine. If you want a quick pass for the worst offenders, the AI cliché checker catches the stock phrases. It won't tell you whether the thing sounds like you, though. That's a different question.

And to be fair, a good generic model writes clean captions. Grammatical, on topic, tidy. Clean just isn't the same as recognisable.

A worked example

Take an illustrative brief. A small bakery owner wants a caption announcing that the Saturday sourdough is back after a week off. That's all the brief says.

Without a profile, you'd get something like: "We're thrilled to announce our Saturday sourdough is back! Fresh, crusty, and baked with love. Come and get yours today!" Every clause is fine. Nobody wrote it.

Now suppose this owner's published captions show a few measurable habits. Short sentences, well under the typical length. Heavy use of contractions. No exclamation marks, ever. A dry aside in brackets. An opener that states the fact and moves on.

The draft changes in specific ways. The opener drops the announcement and leads with the plain fact: the sourdough's back. The exclamation marks vanish. Sentence lengths loosen, so a two-word line sits next to a longer one. A bracketed aside appears where the owner would put one. The sign-off gets wry and low-pressure rather than urging anyone to "come and get yours". Word count stays near the format default of 120 words for an Instagram caption, though you can set anything from 40 to 300.

Nothing in that brief mentioned brackets or exclamation marks. The profile supplied them. That's the point: you stop re-explaining your voice every time you write a caption.

What to feed the profile

Give it captions and posts you've already published, ideally the ones you'd happily see again. Not drafts you abandoned. Not copy a colleague tidied up. The profile learns from what's in front of it, so the samples should be yours.

The minimum is one sample of 50 words or more. The recommendation is three or more pieces and about 3,000 words. For captions specifically, this is where people hesitate: each caption is tiny, so 3,000 words means a lot of them. Mix formats if you need to. Longer posts, newsletters or articles you've written show your sentence-building habits, and those carry over. Captions add the short-copy quirks on top.

Keep the samples consistent in who wrote them. If three different people contributed to the account, the profile will average them, and averages are exactly what you're trying to avoid.

Extraction usually takes under a minute (the median measured was 39 seconds). The free writing style analysis shows the countable part of your style before you build one, and the full list of what gets measured is in the writing voice attributes reference.

Checking a caption before it goes out

Every draft is scored from 0 to 1 against the profile. That's the voice match. On-voice drafts typically land between 0.85 and 0.95. Partial matches sit between 0.5 and 0.8. Anything clearly under 0.45 is a different voice altogether.

The number alone is the least useful part. The per-feature notes are better. They show each measured feature as a draft value against the profile value, so you can see that the caption is fine except for its contraction rate, or that the dashes crept in, or that the sentences are all suspiciously even. Fix the feature, not the vibe.

If a draft scores low, you've got two routes. Edit by hand using the deltas as a guide. Or run polish, which revises the draft toward a target score (the default is 0.9). The app also learns from the edits you save, so the profile sharpens over time.

Worth saying: a high score doesn't mean the caption is good. It means it sounds like you. Whether it's worth posting is still your call. The method behind the score is published in the voice measurement framework if you want to see how it's worked out.

Drafting from the assistant you already use

You don't have to move your writing into a new tool. The profile reaches ChatGPT, Claude, Gemini, Cursor, Meta Muse and any MCP client through the MCP server and the REST API. It's read live each time, so it's never a block of text you paste into a prompt and then forget to update.

In practice: connect it once, then ask your assistant for a caption the way you normally would. It draws on the profile as a constraint while it drafts. The setup notes for each live on the ChatGPT and Claude pages, and the broader picture is in the API and MCP server overview. Both are available on every plan, including Free.

Both assistants are genuinely good at this kind of work. They're fast, they handle a brief well, and they're at their best when something concrete constrains them. The profile is that constraint.

One last habit worth building. Once you're posting regularly, check for voice drift: the slow slide where your captions stop sounding like your earlier ones. It happens to everyone. Caught early, it's a five-minute fix. Left alone, it's a rebrand you never meant to do.

Other formats