tt-humanizer ยท diff
git:20260730.d84853d to git:20260905.48b8261
201 added, 43 removed. Audit B to B.
---
name: tt-humanizer
- description: Strip AI-script tells from a TikTok spoken script and caption so it sounds like a person talking on camera, not a teleprompter. Removes em dashes, AI vocabulary (leverage, fundamentally, delve, harness), rule-of-three lists, written-not-spoken phrasing, and "hey guys" filler, then adds contractions and one specific number. Includes a --mode audit pre-film check (hook strength, completion design, caption fit). Use before filming any AI-drafted script. Not for writing from scratch (use tt-hook-scripter).
+ description: 'Remove the AI-script tells viewers hear in a TikTok spoken script and caption: 2026 vocabulary by density, reveal bridges, staccato stacks, stacked triads, performed sincerity, written-not-spoken phrasing, "hey guys" filler; caps em dashes. Includes --mode audit pre-film check (hook, completion design, caption fit) and --mode profile. Not for beating AI detectors (no edit reliably does). Not for writing from scratch (use tt-hook-scripter). Keywords: humanize script, de-AI, audit before filming.'
---
- # TikTok Humanizer
+ # TikTok Humanizer V3
- Rewrites a spoken script (and caption) to remove AI tells, and audits a finished
- draft against the 2026 TikTok checklist before you film. The problem this solves
- is specific to video: a script that reads fine on the page can sound robotic out
- loud. Written-not-spoken phrasing, perfect parallelism, and AI vocabulary all
- expose themselves the second a human says them to camera.
+ Rewrites a spoken script (and caption) to remove the AI tells that viewers
+ hear, and audits a finished draft against the 2026 TikTok checklist before you
+ film. The problem this solves is specific to video: a script that reads fine
+ on the page can sound robotic out loud. Written-not-spoken phrasing, perfect
+ parallelism, and AI vocabulary all expose themselves the second a human says
+ them to camera.
- Based on Wikipedia's "Signs of AI writing" taxonomy plus TikTok-specific spoken
- patterns (the muted-first hook, the no-intro open, completion-rate structure).
+ Based on Wikipedia's "Signs of AI writing" taxonomy, the 2025-2026 stylometry
+ literature, our own short-form corpora (X, Threads, Instagram captions), and
+ TikTok-specific spoken patterns (the muted-first hook, the no-intro open,
+ completion-rate structure). **V3 (2026-09):** recalibrated on 2026 evidence.
+ Vocabulary is scored by density, em dashes are capped instead of banned,
+ forced rhythm is now a tell instead of a fix, and there is an over-correction
+ guard.
+ **What this skill does not do:** it does not make text "pass" GPTZero,
+ Pangram, Turnitin or Originality. Those are trained classifiers keyed on the
+ instruction-tuning style signature; prompt-style "sound like a real person"
+ rewrites are caught 92-95% of the time, and light mechanical rewriting raises
+ detectability. On script-length text (under 300 words) detector scores are
+ noise, and nobody runs a detector on a video anyway. The real value is
+ elsewhere: expert human readers cite vocabulary (53%) and sentence structure
+ (36%) as what gives AI text away, and on TikTok a script that sounds read
+ loses the viewer inside the first 3 seconds. This skill removes what those
+ viewers react to.
+
+ ## What changed in V3
+
+ Evidence tier in brackets: [strong] = replicated across 2+ independent
+ 2025-2026 studies or our own corpora; [vendor] = single platform or vendor
+ dataset; [weak] = one study or expert-panel report.
+
+ - **Vocabulary moved from a delete-list to density scoring.** The 2023-24 words
+ (delve, tapestry, realm, journey) are decaying as humans avoid them [strong].
+ The durable 2026 markers are common words (significant, crucial, notably,
+ comprehensive, insights, robust, leverage, foster, landscape, nuanced,
+ streamline, elevate) plus grammar: nominalisations and "-ing" clause openers
+ at 5.3x the human rate [strong]. Spoken, they are worse: nobody says
+ "leveraging" to a camera. One marker in a script beat is not a verdict.
+ Three is.
+ - **Em dash is no longer a tell.** GPT-5.4 emits 1.43 per 1,000 words, below
+ the 3.23 human baseline, and 29% of human captions on sibling platforms use
+ one [strong]. In a spoken script a dash is only a breath mark the speaker
+ sees, so it is never a tell there (`..` reads better on a teleprompter). In
+ the caption: cap at about 1 per 100 words. On an on-screen card (3-7 words):
+ at most one, and a card rarely needs one. Replace the excess with a comma,
+ colon, `..` or a line break. Never a period.
+ - **Forced burstiness is the #1 2026 tell, not the fix.** Mechanical
+ long/short alternation is a learnable humanizer fingerprint [weak], and
+ "Short. Punchy. Done.", "No X. No Y. Just Z.", one-word lines for drama and
+ "The result?" reveals are the current top reader-cited tells [strong].
+ Spoken lines are naturally short, so Pass 2 is an anti-uniformity guard
+ only: it makes the script sayable (contractions, one breath per line) and
+ fixes a teleprompter-flat run, but it never inserts a punch line for
+ rhythm.
+ - **Rule of three is still a tell, at density.** Tricolon runs at 2x
+ expert-human rate across 2026 frontier models [strong], and a perfect
+ tricolon read aloud ("learn, grow, succeed") is the most audible tell there
+ is. Stacked, perfectly parallel or hollow triads get scrubbed. One natural
+ triple with concrete items stays (22-26% of top human posts have one).
+ - **Fingerprint injection was half wrong.** Named entities and concreteness are
+ supported [strong]; an odd-precision number with a referent in the hook is
+ the strongest opener. Bare numbers are not a discriminator, and inserted
+ hedges and confessions backfire: performed hesitancy is 2x more common in
+ LLM text, and sincerity announcements ("not gonna lie", "let me be honest",
+ "storytime" with no story) are a named 2026 tell [strong]. Pass 3 asks for
+ a flat, dated, uncomfortable fact instead.
+ - **Over-correction guard.** Humanizer output has its own fingerprint [weak].
+ Pass 4 checks whether Passes 1-3 introduced the very patterns they were meant
+ to remove. Edits are proportional to real problems. When in doubt, leave it.
+
## When to use
- Before filming any AI-drafted spoken script (rewrite mode)
- Pre-film review of a finished script + caption (audit mode, see
`sub-skills/post-audit.md`)
- When a script "reads fine but sounds off" when you say it out loud
## Input
A spoken script (the hook line plus the body), optionally the caption, and
optionally voice samples (the user's past scripts or how they actually talk).
## Output
- Rewritten script that sounds spoken, not written
- A diff showing what changed and why
- Caption char count (flagging over 2,200) when a caption is included
- - Confidence: "human", "mixed", "AI-likely"
+ - Per-beat tell density (markers per script beat or caption paragraph; 3+
+ triggered a rewrite)
+ - Reader-read confidence: "sounds human", "mixed", "sounds read" (a
+ viewer-tell estimate, not a detector score)
## Modes
```bash
- # Default: scrub AI tells and fix spoken-word issues
+ # Default: scrub AI tells (forensic + strict) and fix spoken-word issues
tt-humanizer <script>
# Forensic only - minimum touch, just kill model leakage
tt-humanizer --mode forensic <script>
# Audit - detection-only pass-fail review, no rewrite
# Runs the 2026 TikTok pre-film checklist: first 1-3 second hook strength,
# muted-first text, completion design, caption fit, hashtag and settings sanity.
# Returns Blockers + Warnings + suggested fixes. See sub-skills/post-audit.md.
tt-humanizer --mode audit <script>
+
+ # Profile - build/update the user's Voice & Brand Profile. See the section below.
+ tt-humanizer --mode profile
```
- ## The three passes
+ ## The four passes
- ### Pass 1 - SCRUB (delete or replace)
+ ### Pass 1 - SCRUB (score, then delete or replace)
- Apply the tiered catalogs in `references/scrub-rules.md`:
+ Apply the tiered catalogs in `references/scrub-rules.md`. The unit of
+ judgement is the **script beat (or caption paragraph), not the word**: count
+ markers per beat, rewrite the beat at 3+, leave a single marker alone unless
+ it is a reveal bridge, negative parallelism, a sincerity marker, dead filler,
+ or forensic leakage.
- **Forensic** (always on): real model leakage no human says. AI tool markers
(oaicite, contentReference, turn0search0), knowledge-cutoff disclaimers ("As of
- my last update"), template blanks ([Your Name]), and em dash overuse.
- - **Strict** (default on): bad spoken-word style regardless of origin. Vocabulary
- swaps (leverage -> use, delve -> look at, harness -> use, foster -> build),
- filler adverbs (fundamentally, essentially, ultimately), written connectives
- ("moreover", "furthermore"), dead filler ("hey guys", "without further ado"),
- and dead closers, both spoken ("thanks for watching", "don't forget to
- subscribe") and caption-level ("What do you think?", "Drop your thoughts
- below", bare "Let me know in the comments").
+ my last update"), template blanks ([Your Name]), chat wrappers ("Certainly!",
+ "I hope this helps"), and em dashes above the cap in the caption or on an
+ on-screen card.
+ - **Strict** (default on): what viewers hear. The durable 2026 vocabulary set
+ scored by density (significant, crucial, notably, particularly,
+ comprehensive, insights, robust, leverage, foster, landscape, nuanced,
+ streamline, elevate, empower), grammar markers (nominalisations,
+ sentence-opening "-ing" clauses), written connectives ("moreover",
+ "furthermore", "in order to"), the 2026 model-idiom layer (quietly, "X
+ matters.", compound, "a signal", "the work", "built different", "let that
+ sink in"), reveal bridges on a single hit ("The result?", "Here's what
+ nobody tells you", "Stop X, start Y", "plot twist:"), all forms of negative
+ parallelism, stacked or perfectly parallel triads, dead filler ("hey guys",
+ "without further ado", "in this video I will"), and dead closers, both
+ spoken ("thanks for watching", "don't forget to subscribe") and
+ caption-level ("What do you think?", "Drop your thoughts below").
+ - **TikTok-format scrubs** (always apply): no intro before the payoff, spoken
+ hook and on-screen text differ, caption length, hashtag count, CTA stack.
- ### Pass 2 - BREAK (make it sound spoken)
+ ### Pass 2 - RHYTHM (make it sayable, never manufactured)
- - Replace full grammatical sentences with how a person actually talks:
- contractions and fragments. "It is something that you should consider" becomes
- "you should try this".
- - Break perfect parallel structures ("faster, cheaper, easier") with one
- asymmetric, specific line.
- - Vary line length. A teleprompter rhythm (every line the same length) sounds
- robotic out loud. Add a short punch line.
- - Read-aloud test: flag any line that needs two breaths or trips the tongue.
+ Detectors do not score burstiness, and spoken lines are naturally short, so
+ Pass 2 has nothing to "vary". Its jobs are: make the script sound spoken,
+ remove manufactured drama-rhythm, and un-flatten only a run that reads
+ teleprompter-flat. It never adds a punch line as a tactic.
+ - **Spoken register (keep from V2):** replace written grammar with how a
+ person talks. Contractions, natural fragments, one breath per line. "It is
+ something that you should consider" becomes "you should try this". This is
+ register, not rhythm; it applies to every line.
+ - **Read-aloud test:** flag any line that needs two breaths or trips the
+ tongue. Split at the natural breath, never at a dramatic pause.
+ - **Teleprompter-flat run:** edit only when 4+ consecutive lines run the same
+ length and none carries a real clause, and then let the one line carrying
+ the most content take a clause (because / when / after). Never insert a
+ short punch line between long ones; the inserted punch is the humanizer
+ fingerprint.
+ - Banned outright (rewrite as a spoken sentence): "The X? Y." reveals; "No X.
+ No Y. Just Z."; "All the X. None of the Y."; "Simple. Effective. Easy."
+ adjective stacks; one-word lines for drama ("Still." "Exactly."); pseudo-
+ Socratic Q&A ("Why? Because..."); "Short. Punchy. Done." staccato runs.
+ Fragment runs are the tell, on the page and out loud.
+ - Natural spoken fragments ("three takes. that's it.") are register and stay.
+ A run of them staged for drama is the tell. In the caption, cap standalone
+ fragments at 2.
+ - Never alternate long/short/long/short across the script. That seesaw is the
+ humanizer fingerprint and it sounds like one when read.
+
+ The check is "would a person say this, and did I add a staccato pattern",
+ not a variance number.
+
### Pass 3 - ADD (human fingerprints)
Require where the content allows:
- - 1 specific number (replace "many", "a lot", "a few")
- - 1 named entity (a real tool, person, or place)
- - 1 first-person concrete detail ("the third take", "my 2am edit")
- - the spoken register: how this person would actually say it
+ - One odd-precision number WITH a named referent in the hook: who, what,
+ when, or what it cost ("47 minutes on the third take", "$12 at the hardware
+ store", not "a few takes" and not "47"). A bare number is not a fingerprint;
+ the referent carries the signal.
+ - One named entity (a real tool, app, person, or place)
+ - One first-person concrete detail ("the third take", "my 2am edit", "the
+ comment that started this")
+ - One specific, dated, uncomfortable fact stated flat, with no framing
+ sentence before or after it. Not "not gonna lie, this one hurt: the client
+ fired us." Just "the client fired us on a Tuesday, 9 hours before the demo."
+ The fact carries the vulnerability. The frame turns it into performed
+ sincerity, which viewers now hear as the tell.
+ - The speaker's real register: how this person would actually say it
+ Forbidden as openers or pivots (sincerity announcements, a named 2026 tell):
+ "let me be honest", "I'll be real", "honestly?", "to be direct", "the honest
+ version is", "real talk", "not gonna lie", "ngl", "can I be vulnerable for a
+ second", "unpopular opinion:" as a preface to a popular one, "storytime" with
+ no story in frame one. Also forbidden as insertions: hedges the speaker did
+ not write ("I think maybe", "I might be wrong but", "it seems"). Performed
+ hesitancy is 2x more common in LLM text than in expert human text; adding it
+ makes the script sound more scripted, not less. ("POV:" is a native TikTok
+ format, not a sincerity marker; it is fine when the video is a POV.)
+
If the input lacks these, ask the user for a number or detail. Do not fabricate.
+ ### Pass 4 - SELF-CHECK (over-correction guard)
+
+ Humanizer output has its own fingerprint. Before returning, re-read the result
+ out loud once and answer three questions:
+
+ (a) Did Pass 2 create staccato stacks, "The result?" reveal bridges, one-word
+ lines for drama, an inserted punch line, or a long/short/long/short
+ seesaw? If yes, merge the fragments back into a spoken sentence.
+ (b) Did Pass 3 add a framed confession, a sincerity announcement, or a hedge
+ the speaker never wrote? If yes, strip the frame and keep only the flat
+ fact, or remove the insertion.
+ (c) Did scrubbing flatten the speaker's voice: uniform tone, no reaction, no
+ concrete detail left, their slang gone, the one natural triad gone, every
+ dash gone from a caption that wanted one? If yes, restore what the speaker
+ had.
+
+ If any answer is yes, dial back rather than scrub harder. Edits must be
+ proportional to real problems: a clean script gets two or three touches, not
+ a quota. When in doubt whether a pattern is the speaker or the model, leave
+ it.
+
## Non-negotiable rules
Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific
- rules:
+ rules (V3):
- **Scrubbing is always in scope.** When asked to humanize, de-AI, finalize, or
publish a script or caption, run at least the forensic + strict passes before it ships.
This holds when the user wrote the draft themselves, says they love it as-is,
or is in a hurry. Author identity, "it's already good," and time pressure are
never reasons to skip the scrub. The forensic + strict pass changes no meaning
and takes seconds: run it, then ship. If a constraint truly forbids touching
the text, say so explicitly and name every tell left in; the default is to
scrub, not to wave it through.
+ - **Scrub proportionally.** A pass that finds nothing changes nothing. Do not
+ invent edits to justify the run, and do not report a detector score as the
+ result; report the tells found and fixed.
- Preserve the user's actual claim and meaning. "Preserve their voice" covers
- voice quirks and what they are claiming, NOT corporate-speak, filler openers,
- or AI-tell phrasing. Stripping "leverage / fundamentally / in today's
- fast-paced world" is not changing their voice; it is the job.
+ voice quirks and what they are claiming, NOT reveal bridges, staccato stacks,
+ dead filler, or a beat with 3+ vocabulary markers. Stripping those is not
+ changing their voice; it is the job.
- Never introduce facts that were not in the input. If a number is missing, ask.
+ - Never introduce sincerity markers, hedges, or confessional frames. If the
+ script needs a vulnerable beat, ask for a dated fact and state it flat.
- Keep it sayable. Every line has to survive being read out loud in one breath.
- Keep the user's voice quirks (their slang, their pacing, lowercase texting style
- in the caption).
+ in the caption, one natural triad, one em dash in a caption that wants it).
+ - Never promise detector results. If the user asks "will this pass GPTZero,"
+ answer honestly: nobody can promise that, and nobody runs a detector on a
+ video; the viewer's ear is the test.
## TikTok-specific tells this skill catches
- A hook line that is written, not spoken ("In this video, I will demonstrate..").
- A greeting or logo intro before the payoff ("hey guys, welcome back").
- The spoken hook and the on-screen text saying the identical words.
- A caption over 2,200 chars, or a 12-hashtag wall.
- - Perfect parallel tricolons read aloud ("learn, grow, succeed").
+ - Perfect parallel tricolons read aloud ("learn, grow, succeed"); one natural
+ triple with concrete items is fine.
- A "call to action" stacked five deep.
- - AI vocabulary that no one says on camera (leverage, utilize, robust, seamless).
+ - A cluster of AI vocabulary no one says on camera (leverage, utilize, robust,
+ seamless); one such word is a slip, three in a beat is a script.
+ - Staccato drama ("No script. No plan. Just vibes.") and one-word lines
+ staged for effect; an inserted punch line between two long ones.
+ - "Not gonna lie" / "storytime" framing around what should be a plain fact.
## Example
See `references/examples.md` for worked before/after rewrites of spoken scripts.
## Files
- `SKILL.md` - this file (rewrite scrubber + audit-mode entry)
- - `references/scrub-rules.md` - vocabulary swaps and spoken-word fixes by tier
+ - `references/scrub-rules.md` - V3 catalogs by tier, density scoring, em dash cap, spoken-word fixes, rhythm rules, forbidden insertions
- `references/examples.md` - worked before/after script rewrites
- `references/audit-checklist.md` - the pre-film checklist with thresholds
- `sub-skills/post-audit.md` - pre-film audit workflow (detection-only, no rewrite)
+ - `sub-skills/voice-profile.md` - build/update the user's Voice & Brand Profile (`--mode profile`)
+ - `sub-skills/illustration.md` - optional Pixfaro image workflow
## Voice profile mode (`--mode profile`)
`tt-humanizer --mode profile` builds or updates the user's Voice & Brand Profile at `../../references/voice-profile.md` from 3-6 of their real TikTok posts pasted in (portable, no token) or, if a read token is set, from pulled activity. Once filled, every writing skill in this bundle drafts in the user's voice automatically. See `sub-skills/voice-profile.md`. Triggers: "build my voice profile", "learn my voice".
## Related skills
- `tt-hook-scripter` - generates hooks that already pass the humanizer
- `tt-caption-writer` - generates captions that already pass the humanizer