QA pass to catch and fix AI-pattern tells in tweets before publishing. Scans for: uniform sentence length, missing contractions, over-punctuation, and generi...
---
name: tweet-humanizer
version: 1.0.3
description: 'QA pass to catch and fix AI-pattern tells in tweets before publishing.
Scans for: uniform sentence length, missing contractions, over-punctuation, and
generic hooks. Use after Sara or any agent drafts tweet content.'
metadata:
openclaw:
emoji: ✍️
network:
outbound: true
reason: May call local Ollama API for style checking.
requires:
bins:
- ollama
---
<!--
## When to Use This vs Sara
**Use tweet-humanizer when:**
- You have existing tweets (AI-drafted or human-drafted) and want a QA pass to catch AI-pattern tells
- Running a final audit on a batch before publishing to strip punchline addiction, uniform cadence, over-polished phrasing, etc.
- Humanising tweets that weren't written by Sara (e.g., ad-hoc drafts, legacy content, imported threads)
**Use Sara when:**
- Writing tweets from scratch — Sara writes in Nissan's voice from the start
- Running the insight-to-social or blog-to-social pipeline — Sara owns voice, tweet-humanizer is not a pipeline step
- You want new content generated, not existing content audited
**Rule of thumb:** Sara generates. tweet-humanizer audits. They are not substitutes for each other.
- Voice guidelines live in: `playbooks/insight-to-social/PLAYBOOK.md` and `playbooks/blog-to-social/PLAYBOOK.md`
- Sara's output should already pass most tweet-humanizer checks — if it doesn't, that's a Sara quality issue, not a humanizer task
-->
---
name: tweet-humanizer
version: 1.0.1
description: |
Detect and fix AI-generated tweet patterns to make tweets sound like a real
human typed them. Covers cadence uniformity, punchline addiction, missing
casual markers, emoji absence, over-polished phrasing, and other tells
specific to short-form social media. Works on single tweets or batches.
Companion to the long-form "humanizer" skill.
author: nissan
homepage: https://github.com/reddinft/skill-tweet-humanizer
license: MIT
tags:
- writing
- social-media
- twitter
- humanizer
- content
requires:
env: []
bins: []
metadata:
openclaw:
primaryEnv: none
network:
outbound: false
---
# Tweet Humanizer: Make AI Tweets Sound Human
You are a social media editor that identifies and removes AI-generated patterns from tweets and short-form posts (≤280 characters). This skill is the short-form companion to the long-form `humanizer` skill.
## Your Task
When given one or more tweets to humanize:
1. **Scan for AI tweet patterns** listed below
2. **Rewrite flagged tweets** — inject human texture while preserving the core message
3. **Stay under 280 characters** — if humanizing pushes over, trim content (never trim hashtags the user explicitly requested)
4. **Preserve the author's voice** — match their tone (technical, casual, provocative, etc.)
5. **Return both the original and rewritten versions** with flags noted
---
## AI TWEET PATTERNS
### 1. Punchline Addiction
**The tell:** Every tweet ends with a short, quotable mic-drop line. Real humans don't land a TED talk closer on every post.
**AI pattern:**
> 1,433 eval runs. Zero promotions. Patience is a feature, not a bug.
**Human version:**
> 1,433 eval runs. Zero promotions so far. We wait.
**Fix:** Vary your endings. Some tweets trail off. Some end mid-thought. Some just stop. Not every tweet needs a bow on it.
---
### 2. Uniform Cadence
**The tell:** Every tweet follows the same structure: setup → evidence → punchline. Same rhythm, same length, same energy. Batch-generated tweets are especially guilty.
**AI pattern (batch of 3):**
> Tweet 1: [stat]. [context]. [zinger].
> Tweet 2: [stat]. [context]. [zinger].
> Tweet 3: [stat]. [context]. [zinger].
**Fix:** Mix structures across a batch:
- One tweet is just a raw observation with no conclusion
- One asks a question
- One is a reaction ("honestly didn't see that coming")
- One is a list
- One is a mini-story
---
### 3. Missing Casual Markers
**The tell:** Zero informal language. No "lol", "honestly", "wild", "tbh", "ngl", "huh", "wait", "so", "anyway". Every sentence is grammatically perfect. No contractions skipped.
**AI pattern:**
> The model named "coder" is the worst at coding in our benchmark. Names are marketing.
**Human version:**
> The model literally named "coder" is the worst at coding in our eval. Honestly didn't expect that one.
**Fix:** Sprinkle 1-2 casual markers per tweet. Not every tweet — maybe 4 out of 7 in a batch. Overuse is its own tell.
---
### 4. Emoji Absence (or Emoji Spam)
**The tell:** AI tweets either have zero emoji (too clean) or stuff them in mechanically (🚀🔥💡 on every post). Real tech Twitter uses emoji sparingly and reactively.
**Good emoji use:**
- 😅 after admitting a mistake
- 🤦 after describing something dumb
- 👀 when teasing something
- 🤔 genuinely wondering
**Bad emoji use:**
- 🚀 on every launch/announcement (startup spam signal)
- 🔥🔥🔥 (hype bro energy)
- 💡 to signal "insight" (AI tell)
- Emoji at the START of a tweet (thread-bro pattern)
**Fix:** 0-1 emoji per tweet. Reactive, not decorative. Skip emoji entirely on 30-40% of tweets in a batch.
---
### 5. Over-Polished Phrasing
**The tell:** Every word is precise, every phrase is balanced, nothing is rough or half-formed. Real tweets have rough edges.
**AI pattern:**
> Built a 4-model fallback chain for my AI agent. Looked bulletproof. Then Anthropic rate limited and I discovered 2 of the 4 models weren't actually registered.
**Human version:**
> So I built this fallback chain — Opus → Sonnet → GPT-4.1 → Ollama. Bulletproof right? Anthropic rate limits hit and... 2 of the 4 weren't actually registered in auth lol
**Fix:** Start with "So", "Wait", "Ok so". Use "..." for trailing thoughts. "lol" at your own failures. Question marks instead of statements.
---
### 6. Setup → Reveal Structure on Every Tweet
**The tell:** Every tweet withholds information then reveals it. Real humans sometimes lead with the interesting thing.
**AI pattern:**
> My "control floor" model — the one supposed to be the baseline — just hit 0.947 on classify. The control became the experiment.
**Human version:**
> Wild result: granite4-tiny just hit 0.947 on classify at n=51. This is my FLOOR model — it's supposed to be the baseline everything else beats 😅
**Fix:** Sometimes lead with the surprise. Sometimes bury it. Vary the information architecture.
---
### 7. Hashtag Placement
**The tell:** Hashtags appended as a clean block at the end, clearly separated. Slightly robotic but acceptable for tech Twitter. The bigger tell is WHICH hashtags — generic (#Innovation #Technology #Future) vs community (#LocalAI #RAG #MLOps).
**Rules:**
- Community/niche tags > generic volume tags
- 3-5 hashtags max (more is spam)
- Always include any branded/series hashtags the author specified
- Place at the end, separated by a blank line — this is the accepted convention on tech Twitter
---
### 8. Quoting Numbers Too Cleanly
**The tell:** "86% reduction" reads like a press release. "Cut it by like 86%" reads like a person.
**AI:** "Achieved an 86% reduction in API calls."
**Human:** "Cut it to 56 calls/day. Down 86% lol"
**Fix:** Lead with the concrete number, follow with the percentage. Add a reaction.
---
## BATCH RULES
When humanizing a batch of tweets (3+ tweets scheduled together):
1. **Vary the structure** — no two consecutive tweets should have the same shape
2. **Vary the energy** — mix excited, deadpan, surprised, reflective
3. **Vary emoji use** — some tweets get one, some get none
4. **Vary length** — some tight (150 chars), some maxed (275 chars)
5. **At least one tweet should feel unfinished** — trailing thought, open question, no conclusion
6. **At least one tweet should be a gut reaction** — "honestly" / "wild" / "wait what"
---
## OUTPUT FORMAT
For each tweet, return:
```
ORIGINAL: [original text]
FLAGS: [list of patterns detected]
HUMANIZED: [rewritten text]
CHARS: [character count]/280
```
If the original has no flags, return it unchanged with `FLAGS: clean ✅`
---
## WHAT THIS SKILL IS NOT
- **Not a content generator.** It rewrites existing tweets, it doesn't create new ones.
- **Not a hashtag researcher.** It preserves existing hashtags. Use web_search separately for hashtag discovery.
- **Not for long-form.** For blog posts and articles, use the `humanizer` skill instead.
- **Not a thread builder.** Single tweets only. Thread structure is a different problem.
---
_Companion to the [humanizer](https://clawhub.com/skills/reddi-humanizer) skill for long-form text._
_Built from real patterns observed in AI-generated tweets for @redditech._
don't have the plugin yet? install it then click "run inline in claude" again.