Avoid Repeated AI Writing Patterns
skillKeep batches of posts, replies, emails, ad angles or scripts from sounding alike, with AI-tell checks. Use for recurring writing jobs and batches.
instructions
Overview
Use this when one job produces many pieces for the same account or channel: a week of posts, a queue of replies, a blog series, a run of newsletters or outreach emails, a set of ad angles, a series of video scripts, release notes for every version. Written one at a time, such pieces drift into the same opening, the same length, and the same closing line. Before each piece, ask a variety tool which approach and form to use, write to it, and check the result. A single one-off piece gains little; skip the tool for it unless the user asks.
Mental model
An approach is the angle of the piece, such as a question, a small story, or a plain claim with one example. A form is its shape: how it opens, how long it runs, and how it ends. A variety tool remembers the combinations used recently for a scope and hands out one that was not. The scope is a label for the account or channel, for example "brand-x-posts": letters, digits, _, :, . and - only, no spaces. Reuse the exact same label on every call for that job, or the tool cannot see the history.
The local server needs a kind. Match it to the piece, not to the agent:
| Piece | Kind |
|---|---|
| Social post, thread, ad copy angle | post |
| Reply to a comment, mention, review, community or support message | reply |
| Blog post or long article | article |
| Newsletter, campaign or cold outreach email | email |
| Short video, UGC or ad script | script |
| Release notes, product update, changelog summary for users | update |
One call covers one finished piece: one call per article, not per section; one call per ad angle when a campaign needs several.
Two providers exist. The unsame server matches each input to a fitting approach with an AI judge, uses the user's own playbook for the goal, and learns from the results the user reports. The local variety server needs no account and picks from a built-in list by kind. Use whichever server is connected. If both are, use unsame.
Rules
- Pick a scope label once, tell the user what it is, and reuse it for every piece in the job. Ask the user for it if the account or channel is unclear.
- Get the protocol before drafting each piece, not once per batch. Skipping a call is how repeats come back.
- Follow the protocol as given. Do not soften the opening, add a closing line it did not ask for, or merge two forms.
- Keep the user's voice and facts. The approach decides the shape, not the content. Never invent a story, number, quote, or result to fit an approach.
- If the approach does not fit the input, ask again with the rejected id in
avoid, or tell the user no fitting approach exists. Do not bend the facts. - With the local server, show the draft only after
variety_checkpasses.
With the unsame server
- Call
advisewithgoal(the playbook the user set up for this job, found withgoal_listif needed),inputas an object{"text": "..."}holding the thing to write about or reply to, andscope. - Write the piece exactly as the returned protocol says. Keep the
draw_idfrom the response. - If the user says how the piece did, call
reportwith thatdraw_idand anoutcome:{"chosen": true}when they picked it,{"rejected": true}when they threw it away,{"edited": 0..1}for how much they changed it, or{"reward": 0..1}for how well it performed. Do not report guesses.
With the local variety server
- Call
variety_kindsonce if unsure which kind applies. The kinds are post, reply, article, email, script, and update. - Call
variety_pickwithkindandscope. Follow the approach and form it returns. - If the approach does not suit the input, call
variety_pickagain withavoidset to a list holding that approach id. - After drafting, call
variety_checkwith thetextand the samescope. Fix every issue it lists, then check again until it is clean.
Examples
Replies to five comments on one account. Scope "acme-support-replies". For each comment, call variety_pick with kind "reply". The first returns a short answer that opens with the fix. The second returns a question back to the commenter. Write each as returned, with the facts from the comment and the product docs only. The third pick asks for a personal anecdote the user never gave. Call again with avoid set to that id rather than inventing a story.
Weekly update emails. Scope "founder-update". With unsame, call advise with the goal "weekly_update", {"text": <this week's notes>} as input, and the scope. Follow the protocol. The user says the email went out unchanged, so call report with its draw_id and {"chosen": true}.
Checklist
- One scope label, reused on every call in the job.
- A protocol or pick was fetched before each piece, not once for the batch.
- The draft follows the approach and form as given.
- No fact, story, number, or quote was added to fit the approach.
- Local server:
variety_checkran on the final text and every issue is fixed. - Unsame:
reportwas called only for results the user actually gave. - Rejected approaches were retried with
avoid, not forced.
Composition
Pair with a voice or humanizing skill when the user wants a stricter match to their own style. This skill decides the shape of each piece; those decide the wording inside it.