{"id":"d1cdb1de-300c-4f64-8366-7dda0f87e279","shortId":"ydHyA7","kind":"skill","title":"tweet-thread-from-blog","tagline":"Converts a blog post URL or article into a Twitter/X thread with a strong hook, one insight per tweet, and a CTA. Optionally posts the full thread to X via Composio using a reply chain. Use when asked to turn a blog post into a tweet thread, repurpose an article for Twitter, crea","description":"# Tweet Thread from Blog\n\nConvert a blog post or article into a 7-10 tweet thread. One insight per tweet. Strong hook. CTA in the final tweet. Optionally post the thread directly to X via Composio.\n\n## Writing Style\n\nApply these rules to every tweet you write:\n\n- Active voice only\n- Conversational, like a person typed it on their phone\n- Contractions required: don't, it's, won't, can't, I've\n- Short sentences, one idea per tweet\n- No em dashes — use a period or comma instead\n- No semicolons\n- No markdown or asterisks\n- No hashtags anywhere in the thread\n\nBanned words — do not use any of these:\nincredible, amazing, leveraging, synergize, game-changing, game changer, let's dive in, buckle up, it's worth noting, delve, harness, unlock, groundbreaking, cutting-edge, remarkable, paradigm, revolutionize, disruptive, transformative, thrilled, excited to share, powerful, innovative, comprehensive, actionable, crucial, vital, pivotal, elucidate, utilize, can, may, just, that, very, really, literally, actually, certainly, probably, basically, could, maybe\n\nIf a draft tweet contains any banned word, rewrite it before presenting.\n\n## CRITICAL RULE\n\nDo not invent specifics. Every claim, stat, and example in the thread must come from the blog post. Never fabricate data, quotes, or outcomes.\n\n---\n\n## Step 1: Check Setup\n\nConfirm input is present. The user must provide one of:\n- A blog post URL\n- Pasted article text\n\nIf no input is present, ask: \"What blog post or article should I turn into a thread? Share a URL or paste the content.\"\n\nCOMPOSIO_API_KEY is only needed for direct posting to X. Output-only mode works without it.\n\n---\n\n## Step 2: Fetch and Extract Content\n\n**If input is a URL:**\nUse WebFetch or Chrome DevTools MCP to fetch the page. Extract:\n- Title\n- Author name\n- Publish date\n- All body text\n- Key statistics and data points\n- Numbered lists or steps\n- Subheadings\n- Any quotes\n\n**If input is pasted text:**\nRead it directly.\n\nAfter fetching, identify:\n- The single most surprising or counterintuitive insight\n- 6-9 supporting insights, data points, or steps\n- Any specific numbers, percentages, or concrete results\n- The core argument or main takeaway\n\nQA checkpoint: State the core thesis and list the top insights you will use. Confirm every insight comes directly from the source. Do not proceed if you cannot verify a claim.\n\n---\n\n## Step 3: Choose Thread Style\n\nFour styles. Auto-detect from content signals. Respect explicit user override.\n\n| Style | When to Use | Signals |\n|-------|-------------|---------|\n| Data/Insight | Evidence-based article with stats or research findings | Numbers, percentages, study results, data points |\n| How-To | Tutorial, guide, or step-by-step article | Numbered lists, step headers, \"how to\" in title |\n| Story/Journey | Personal experience, build log, lessons learned | First-person narrative, \"I learned\", \"we built\" |\n| Hot Take | Opinion piece, contrarian argument | \"Why X is wrong\", \"Stop doing X\", counterintuitive claim |\n\nDecision logic:\n- Article has specific stats or data: Data/Insight\n- Article is structured as steps or tips: How-To\n- Article is first-person narrative: Story/Journey\n- Article argues against a common belief: Hot Take\n\nState the chosen style and reason. If ambiguous, pick one and note it.\n\n---\n\n## Step 4: Read Format Rules\n\nRead `references/thread-format.md` in full before writing any tweet. Internalize:\n- Hook tweet rules (tweet 1 must stop the scroll)\n- One-insight-per-tweet rule\n- Character limit (280 per tweet, count carefully)\n- Thread numbering format (1/8, 2/8, etc.)\n- CTA tweet rules (final tweet only)\n- No hashtags\n- No em dashes\n- Banned word list\n\nRead `references/output-template.md` and select the template matching the chosen style.\n\n---\n\n## Step 5: Generate the Thread\n\nProduce three things:\n\n**(A) The full thread (7-10 tweets)**\n\nEach tweet:\n- Under 280 characters including the tweet number (\"1/8 \" = 4 characters)\n- Contains exactly one insight, step, or idea\n- Sounds like a human typed it\n- No URLs in tweets 1 through N-1\n- No hashtags\n\n**(B) The CTA tweet (final tweet)**\n- Summarizes the key takeaway in one sentence\n- Ends with one action: \"Read the full post in the replies.\" or \"What's your take?\" or \"Follow for more like this.\"\n- Includes the source URL if one was provided\n\n**(C) One alternative hook tweet**\n- Uses a different format from the primary hook\n- If primary used a stat, offer a question-based hook\n- If primary used a bold claim, offer a before/after hook\n\n---\n\n## Step 6: Self-QA\n\nRun every check before presenting. Fix violations first.\n\n- [ ] Tweet 1 creates a curiosity gap or leads with the most surprising insight\n- [ ] Every tweet is under 280 characters (count including tweet number)\n- [ ] Each tweet contains exactly one idea\n- [ ] No tweet starts with \"I\" (exception: Story/Journey style)\n- [ ] No banned words in any tweet\n- [ ] No em dashes in any tweet\n- [ ] No hashtags in any tweet\n- [ ] No URLs except in the final CTA tweet\n- [ ] No invented data. Every stat and example traces to the source.\n- [ ] Thread reads naturally in sequence\n- [ ] Total tweet count is between 7 and 10\n\nState total tweet count and confirm every tweet is under 280 characters before presenting.\n\n---\n\n## Step 7: Post via Composio or Output\n\n**Check for COMPOSIO_API_KEY.**\n\nIf set:\n\"Thread ready. Confirm to post to X via Composio, or say 'output only' to get the text.\"\n\nOn confirmation:\n1. Post tweet 1 using action `TWITTER_CREATION_OF_A_POST` with `text` set to tweet 1 content\n2. Capture the returned tweet ID\n3. Post tweet 2 with `reply_in_reply_to_tweet_id` = tweet 1 ID, capture its ID\n4. Continue for each tweet in sequence, each replying to the previous tweet's ID\n5. Wait 1 second between posts to avoid rate limiting\n6. After all tweets post: \"Thread posted. Tweets 1-N are live.\"\n\nIf not set:\nPresent each tweet in a numbered list inside a code block. Add:\n\n\"To enable direct posting, add COMPOSIO_API_KEY to your .env file. See README.md for Composio setup.\"","tags":["tweet","thread","from","blog","opendirectory","varnan-tech","agent-skills","gtm","hermes-agent","openclaw-skills","skills","technical-seo"],"capabilities":["skill","source-varnan-tech","skill-tweet-thread-from-blog","topic-agent-skills","topic-gtm","topic-hermes-agent","topic-openclaw-skills","topic-skills","topic-technical-seo"],"categories":["opendirectory"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Varnan-Tech/opendirectory/tweet-thread-from-blog","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Varnan-Tech/opendirectory","source_repo":"https://github.com/Varnan-Tech/opendirectory","install_from":"skills.sh"}},"qualityScore":"0.511","qualityRationale":"deterministic score 0.51 from registry signals: · indexed on github topic:agent-skills · 123 github stars · SKILL.md body (6,019 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T00:55:52.473Z","embedding":null,"createdAt":"2026-04-18T22:18:41.071Z","updatedAt":"2026-05-02T00:55:52.473Z","lastSeenAt":"2026-05-02T00:55:52.473Z","tsv":"'-1':681 '-10':72,647 '-9':383 '1':260,586,678,775,907,910,923,943,965,981 '1/8':607,658 '10':859 '2':323,925,934 '2/8':608 '280':599,652,791,870 '3':435,931 '4':569,659,948 '5':635,963 '6':382,762,973 '7':71,646,857,875 'action':202,700,912 'activ':105 'actual':215 'add':999,1004 'altern':729 'amaz':165 'ambigu':562 'anywher':152 'api':305,884,1006 'appli':97 'argu':548 'argument':399,511 'articl':12,55,68,278,290,460,482,523,530,540,547 'ask':43,285 'asterisk':149 'author':345 'auto':442 'auto-detect':441 'avoid':970 'b':684 'ban':156,227,621,812 'base':459,749 'basic':218 'before/after':759 'belief':552 'block':998 'blog':5,8,47,62,65,251,274,287 'bodi':350 'bold':755 'buckl':177 'build':494 'built':505 'c':727 'cannot':430 'captur':926,945 'care':603 'certain':216 'chain':40 'chang':170 'changer':172 'charact':597,653,660,792,871 'check':261,768,881 'checkpoint':404 'choos':436 'chosen':557,632 'chrome':336 'claim':240,433,520,756 'code':997 'come':248,420 'comma':142 'common':551 'composio':36,94,304,878,883,896,1005,1015 'comprehens':201 'concret':395 'confirm':263,417,865,890,906 'contain':225,661,799 'content':303,327,445,924 'continu':949 'contract':117 'contrarian':510 'convers':108 'convert':6,63 'core':398,407 'could':219 'count':602,793,854,863 'counterintuit':380,519 'crea':58 'creat':776 'creation':914 'critic':233 'crucial':203 'cta':27,81,610,686,834 'curios':778 'cut':188 'cutting-edg':187 'dash':137,620,819 'data':255,355,386,470,528,838 'data/insight':456,529 'date':348 'decis':521 'delv':183 'detect':443 'devtool':337 'differ':734 'direct':90,311,371,421,1002 'disrupt':193 'dive':175 'draft':223 'edg':189 'elucid':206 'em':136,619,818 'enabl':1001 'end':697 'env':1010 'etc':609 'everi':101,239,418,767,787,839,866 'evid':458 'evidence-bas':457 'exact':662,800 'exampl':243,842 'except':808,830 'excit':196 'experi':493 'explicit':448 'extract':326,343 'fabric':254 'fetch':324,340,373 'file':1011 'final':84,613,688,833 'find':465 'first':499,543,773 'first-person':498,542 'fix':771 'follow':714 'format':571,606,735 'four':439 'full':31,576,644,703 'game':169,171 'game-chang':168 'gap':779 'generat':636 'get':902 'groundbreak':186 'guid':476 'har':184 'hashtag':151,617,683,824 'header':486 'hook':20,80,582,730,739,750,760 'hot':506,553 'how-to':472,537 'human':671 'id':930,941,944,947,962 'idea':132,667,802 'identifi':374 'includ':654,719,794 'incred':164 'innov':200 'input':264,282,329,365 'insid':995 'insight':22,76,381,385,413,419,593,664,786 'instead':143 'intern':581 'invent':237,837 'key':306,352,692,885,1007 'lead':781 'learn':497,503 'lesson':496 'let':173 'leverag':166 'like':109,669,717 'limit':598,972 'list':358,410,484,623,994 'liter':214 'live':984 'log':495 'logic':522 'main':401 'markdown':147 'match':630 'may':209 'mayb':220 'mcp':338 'mode':318 'must':247,269,587 'n':680,982 'name':346 'narrat':501,545 'natur':849 'need':309 'never':253 'note':182,566 'number':357,392,466,483,605,657,796,993 'offer':745,757 'one':21,75,131,271,564,592,663,695,699,724,728,801 'one-insight-per-tweet':591 'opinion':508 'option':28,86 'outcom':258 'output':316,880,899 'output-on':315 'overrid':450 'page':342 'paradigm':191 'past':277,301,367 'per':23,77,133,594,600 'percentag':393,467 'period':140 'person':111,492,500,544 'phone':116 'pick':563 'piec':509 'pivot':205 'point':356,387,471 'post':9,29,48,66,87,252,275,288,312,704,876,892,908,917,932,968,977,979,1003 'power':199 'present':232,266,284,770,873,988 'previous':959 'primari':738,741,752 'probabl':217 'proceed':427 'produc':639 'provid':270,726 'publish':347 'qa':403,765 'question':748 'question-bas':747 'quot':256,363 'rate':971 'read':369,570,573,624,701,848 'readi':889 'readme.md':1013 'realli':213 'reason':560 'references/output-template.md':625 'references/thread-format.md':574 'remark':190 'repli':39,707,936,938,956 'repurpos':53 'requir':118 'research':464 'respect':447 'result':396,469 'return':928 'revolution':192 'rewrit':229 'rule':99,234,572,584,596,612 'run':766 'say':898 'scroll':590 'second':966 'see':1012 'select':627 'self':764 'self-qa':763 'semicolon':145 'sentenc':130,696 'sequenc':851,954 'set':887,920,987 'setup':262,1016 'share':198,297 'short':129 'signal':446,455 'singl':376 'skill' 'skill-tweet-thread-from-blog' 'sound':668 'sourc':424,721,846 'source-varnan-tech' 'specif':238,391,525 'start':805 'stat':241,462,526,744,840 'state':405,555,860 'statist':353 'step':259,322,360,389,434,479,481,485,534,568,634,665,761,874 'step-by-step':478 'stop':516,588 'story/journey':491,546,809 'strong':19,79 'structur':532 'studi':468 'style':96,438,440,451,558,633,810 'subhead':361 'summar':690 'support':384 'surpris':378,785 'synerg':167 'take':507,554,712 'takeaway':402,693 'templat':629 'text':279,351,368,904,919 'thesi':408 'thing':641 'thread':3,16,32,52,60,74,89,155,246,296,437,604,638,645,847,888,978 'three':640 'thrill':195 'tip':536 'titl':344,490 'top':412 'topic-agent-skills' 'topic-gtm' 'topic-hermes-agent' 'topic-openclaw-skills' 'topic-skills' 'topic-technical-seo' 'total':852,861 'trace':843 'transform':194 'turn':45,293 'tutori':475 'tweet':2,24,51,59,73,78,85,102,134,224,580,583,585,595,601,611,614,648,650,656,677,687,689,731,774,788,795,798,804,816,822,827,835,853,862,867,909,922,929,933,940,942,952,960,976,980,990 'tweet-thread-from-blog':1 'twitter':57,913 'twitter/x':15 'type':112,672 'unlock':185 'url':10,276,299,332,675,722,829 'use':37,41,138,160,333,416,454,732,742,753,911 'user':268,449 'util':207 've':128 'verifi':431 'via':35,93,877,895 'violat':772 'vital':204 'voic':106 'wait':964 'webfetch':334 'without':320 'won':123 'word':157,228,622,813 'work':319 'worth':181 'write':95,104,578 'wrong':515 'x':34,92,314,513,518,894","prices":[{"id":"d8564798-bbc3-405f-a5da-e45c4130a59c","listingId":"d1cdb1de-300c-4f64-8366-7dda0f87e279","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Varnan-Tech","category":"opendirectory","install_from":"skills.sh"},"createdAt":"2026-04-18T22:18:41.071Z"}],"sources":[{"listingId":"d1cdb1de-300c-4f64-8366-7dda0f87e279","source":"github","sourceId":"Varnan-Tech/opendirectory/tweet-thread-from-blog","sourceUrl":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/tweet-thread-from-blog","isPrimary":false,"firstSeenAt":"2026-04-18T22:18:41.071Z","lastSeenAt":"2026-05-02T00:55:52.473Z"}],"details":{"listingId":"d1cdb1de-300c-4f64-8366-7dda0f87e279","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Varnan-Tech","slug":"tweet-thread-from-blog","github":{"repo":"Varnan-Tech/opendirectory","stars":123,"topics":["agent-skills","gtm","hermes-agent","openclaw-skills","skills","technical-seo"],"license":null,"html_url":"https://github.com/Varnan-Tech/opendirectory","pushed_at":"2026-04-30T18:54:05Z","description":" AI Agent Skills built for GTM, Technical Marketing, and growth automation.","skill_md_sha":"551ddd7f98bb548e6fb56295fc738182c0213b40","skill_md_path":"skills/tweet-thread-from-blog/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Varnan-Tech/opendirectory/tree/main/skills/tweet-thread-from-blog"},"layout":"multi","source":"github","category":"opendirectory","frontmatter":{"name":"tweet-thread-from-blog","description":"Converts a blog post URL or article into a Twitter/X thread with a strong hook, one insight per tweet, and a CTA. Optionally posts the full thread to X via Composio using a reply chain. Use when asked to turn a blog post into a tweet thread, repurpose an article for Twitter, create a thread from a blog, write a Twitter thread about a topic, or share a blog post as a thread. Trigger when a user mentions Twitter thread, X thread, tweet thread, or wants to repurpose blog content for X/Twitter.","compatibility":"[claude-code, gemini-cli, github-copilot]"},"skills_sh_url":"https://skills.sh/Varnan-Tech/opendirectory/tweet-thread-from-blog"},"updatedAt":"2026-05-02T00:55:52.473Z"}}