{"skill":{"slug":"tweet-humanizer","displayName":"Tweet Humanizer","summary":"QA pass to catch and fix AI-pattern tells in tweets before publishing. Scans for: uniform sentence length, missing contractions, over-punctuation, and generi...","description":"---\nname: tweet-humanizer\nversion: 1.0.3\ndescription: 'QA pass to catch and fix AI-pattern tells in tweets before publishing.\n  Scans for: uniform sentence length, missing contractions, over-punctuation, and\n  generic hooks. Use after Sara or any agent drafts tweet content.'\nmetadata:\n  openclaw:\n    emoji: ✍️\n    network:\n      outbound: true\n      reason: May call local Ollama API for style checking.\n    requires:\n      bins:\n      - ollama\n---\n\n<!--\n## When to Use This vs Sara\n\n**Use tweet-humanizer when:**\n- You have existing tweets (AI-drafted or human-drafted) and want a QA pass to catch AI-pattern tells\n- Running a final audit on a batch before publishing to strip punchline addiction, uniform cadence, over-polished phrasing, etc.\n- Humanising tweets that weren't written by Sara (e.g., ad-hoc drafts, legacy content, imported threads)\n\n**Use Sara when:**\n- Writing tweets from scratch — Sara writes in Nissan's voice from the start\n- Running the insight-to-social or blog-to-social pipeline — Sara owns voice, tweet-humanizer is not a pipeline step\n- You want new content generated, not existing content audited\n\n**Rule of thumb:** Sara generates. tweet-humanizer audits. They are not substitutes for each other.\n- Voice guidelines live in: `playbooks/insight-to-social/PLAYBOOK.md` and `playbooks/blog-to-social/PLAYBOOK.md`\n- Sara's output should already pass most tweet-humanizer checks — if it doesn't, that's a Sara quality issue, not a humanizer task\n-->\n\n---\nname: tweet-humanizer\nversion: 1.0.1\ndescription: |\n  Detect and fix AI-generated tweet patterns to make tweets sound like a real\n  human typed them. Covers cadence uniformity, punchline addiction, missing\n  casual markers, emoji absence, over-polished phrasing, and other tells\n  specific to short-form social media. Works on single tweets or batches.\n  Companion to the long-form \"humanizer\" skill.\nauthor: nissan\nhomepage: https://github.com/reddinft/skill-tweet-humanizer\nlicense: MIT\ntags:\n  - writing\n  - social-media\n  - twitter\n  - humanizer\n  - content\nrequires:\n  env: []\n  bins: []\nmetadata:\n  openclaw:\n    primaryEnv: none\n    network:\n      outbound: false\n---\n\n# Tweet Humanizer: Make AI Tweets Sound Human\n\nYou 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.\n\n## Your Task\n\nWhen given one or more tweets to humanize:\n\n1. **Scan for AI tweet patterns** listed below\n2. **Rewrite flagged tweets** — inject human texture while preserving the core message\n3. **Stay under 280 characters** — if humanizing pushes over, trim content (never trim hashtags the user explicitly requested)\n4. **Preserve the author's voice** — match their tone (technical, casual, provocative, etc.)\n5. **Return both the original and rewritten versions** with flags noted\n\n---\n\n## AI TWEET PATTERNS\n\n### 1. Punchline Addiction\n\n**The tell:** Every tweet ends with a short, quotable mic-drop line. Real humans don't land a TED talk closer on every post.\n\n**AI pattern:**\n> 1,433 eval runs. Zero promotions. Patience is a feature, not a bug.\n\n**Human version:**\n> 1,433 eval runs. Zero promotions so far. We wait.\n\n**Fix:** Vary your endings. Some tweets trail off. Some end mid-thought. Some just stop. Not every tweet needs a bow on it.\n\n---\n\n### 2. Uniform Cadence\n\n**The tell:** Every tweet follows the same structure: setup → evidence → punchline. Same rhythm, same length, same energy. Batch-generated tweets are especially guilty.\n\n**AI pattern (batch of 3):**\n> Tweet 1: [stat]. [context]. [zinger].\n> Tweet 2: [stat]. [context]. [zinger].\n> Tweet 3: [stat]. [context]. [zinger].\n\n**Fix:** Mix structures across a batch:\n- One tweet is just a raw observation with no conclusion\n- One asks a question\n- One is a reaction (\"honestly didn't see that coming\")\n- One is a list\n- One is a mini-story\n\n---\n\n### 3. Missing Casual Markers\n\n**The tell:** Zero informal language. No \"lol\", \"honestly\", \"wild\", \"tbh\", \"ngl\", \"huh\", \"wait\", \"so\", \"anyway\". Every sentence is grammatically perfect. No contractions skipped.\n\n**AI pattern:**\n> The model named \"coder\" is the worst at coding in our benchmark. Names are marketing.\n\n**Human version:**\n> The model literally named \"coder\" is the worst at coding in our eval. Honestly didn't expect that one.\n\n**Fix:** Sprinkle 1-2 casual markers per tweet. Not every tweet — maybe 4 out of 7 in a batch. Overuse is its own tell.\n\n---\n\n### 4. Emoji Absence (or Emoji Spam)\n\n**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.\n\n**Good emoji use:**\n- 😅 after admitting a mistake\n- 🤦 after describing something dumb\n- 👀 when teasing something\n- 🤔 genuinely wondering\n\n**Bad emoji use:**\n- 🚀 on every launch/announcement (startup spam signal)\n- 🔥🔥🔥 (hype bro energy)\n- 💡 to signal \"insight\" (AI tell)\n- Emoji at the START of a tweet (thread-bro pattern)\n\n**Fix:** 0-1 emoji per tweet. Reactive, not decorative. Skip emoji entirely on 30-40% of tweets in a batch.\n\n---\n\n### 5. Over-Polished Phrasing\n\n**The tell:** Every word is precise, every phrase is balanced, nothing is rough or half-formed. Real tweets have rough edges.\n\n**AI pattern:**\n> 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.\n\n**Human version:**\n> 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\n\n**Fix:** Start with \"So\", \"Wait\", \"Ok so\". Use \"...\" for trailing thoughts. \"lol\" at your own failures. Question marks instead of statements.\n\n---\n\n### 6. Setup → Reveal Structure on Every Tweet\n\n**The tell:** Every tweet withholds information then reveals it. Real humans sometimes lead with the interesting thing.\n\n**AI pattern:**\n> My \"control floor\" model — the one supposed to be the baseline — just hit 0.947 on classify. The control became the experiment.\n\n**Human version:**\n> 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 😅\n\n**Fix:** Sometimes lead with the surprise. Sometimes bury it. Vary the information architecture.\n\n---\n\n### 7. Hashtag Placement\n\n**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).\n\n**Rules:**\n- Community/niche tags > generic volume tags\n- 3-5 hashtags max (more is spam)\n- Always include any branded/series hashtags the author specified\n- Place at the end, separated by a blank line — this is the accepted convention on tech Twitter\n\n---\n\n### 8. Quoting Numbers Too Cleanly\n\n**The tell:** \"86% reduction\" reads like a press release. \"Cut it by like 86%\" reads like a person.\n\n**AI:** \"Achieved an 86% reduction in API calls.\"\n**Human:** \"Cut it to 56 calls/day. Down 86% lol\"\n\n**Fix:** Lead with the concrete number, follow with the percentage. Add a reaction.\n\n---\n\n## BATCH RULES\n\nWhen humanizing a batch of tweets (3+ tweets scheduled together):\n\n1. **Vary the structure** — no two consecutive tweets should have the same shape\n2. **Vary the energy** — mix excited, deadpan, surprised, reflective\n3. **Vary emoji use** — some tweets get one, some get none\n4. **Vary length** — some tight (150 chars), some maxed (275 chars)\n5. **At least one tweet should feel unfinished** — trailing thought, open question, no conclusion\n6. **At least one tweet should be a gut reaction** — \"honestly\" / \"wild\" / \"wait what\"\n\n---\n\n## OUTPUT FORMAT\n\nFor each tweet, return:\n\n```\nORIGINAL: [original text]\nFLAGS: [list of patterns detected]\nHUMANIZED: [rewritten text]\nCHARS: [character count]/280\n```\n\nIf the original has no flags, return it unchanged with `FLAGS: clean ✅`\n\n---\n\n## WHAT THIS SKILL IS NOT\n\n- **Not a content generator.** It rewrites existing tweets, it doesn't create new ones.\n- **Not a hashtag researcher.** It preserves existing hashtags. Use web_search separately for hashtag discovery.\n- **Not for long-form.** For blog posts and articles, use the `humanizer` skill instead.\n- **Not a thread builder.** Single tweets only. Thread structure is a different problem.\n\n---\n\n_Companion to the [humanizer](https://clawhub.com/skills/reddi-humanizer) skill for long-form text._\n_Built from real patterns observed in AI-generated tweets for @redditech._\n","topics":["Tweet"],"tags":{"latest":"1.0.3"},"stats":{"comments":0,"downloads":830,"installsAllTime":31,"installsCurrent":3,"stars":1,"versions":4},"createdAt":1772829601438,"updatedAt":1779382832015},"latestVersion":{"version":"1.0.3","createdAt":1779382832015,"changelog":"Align SKILL.md metadata with published version and lifecycle notes.","license":"MIT-0"},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"nissan","userId":"s17f2fw07zktjmcgagf5c29tbd83rt7v","displayName":"Nissan Dookeran","image":"https://avatars.githubusercontent.com/u/12583?v=4"},"moderation":null}