Systems Lab

Agent skill

tweet-thread-from-blog

Converts a blog post URL or article into a Twitter/X thread with a strong hook, one insight per tweet, and a CTA.

activeNeeds a keyActs undeclared1,021 words

Filed under Content and SEO.

From Varnan-Tech/opendirectory · 57 skills · 626 · pushed 2026-08-16

What it does when it runs

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.

Read from the skill and the 5 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • COMPOSIO_API_KEY
Hosts it reaches
  • app.composio.dev
  • developer.twitter.com
  • download-directory.github.io
  • manus.im
  • opendirectory.dev
  • vercel.com
  • www.digitalocean.com
Tool permissions it declares
No allowed-tools in the frontmatter. It does act, so it runs under whatever permissions your session already grants.
Actions present in the files
shellnetwork

Ask about tweet-thread-from-blog

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/Varnan-Tech/opendirectory.git /tmp/opendirectory
git -C /tmp/opendirectory sparse-checkout set "skills/tweet-thread-from-blog"
mkdir -p ~/.claude/skills/tweet-thread-from-blog
cp -R "/tmp/opendirectory/skills/tweet-thread-from-blog/." ~/.claude/skills/tweet-thread-from-blog/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

Or take the whole library

This repo ships a .claude-plugin manifest, so Claude Code can install all 57 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.

/plugin marketplace add Varnan-Tech/opendirectory
/plugin

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs COMPOSIO_API_KEY, which you have to obtain separately.

Reproduced in full from Varnan-Tech/opendirectory/blob/62e437ab13408171805a87d16f5cb0151f96ea3c/skills/tweet-thread-from-blog/SKILL.md, which is licensed MIT (repository). 1,021 words, 10 headings.

Tweet Thread from Blog

Convert 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.

Writing Style

Apply these rules to every tweet you write:

  • Active voice only
  • Conversational, like a person typed it on their phone
  • Contractions required: don't, it's, won't, can't, I've
  • Short sentences, one idea per tweet
  • No em dashes — use a period or comma instead
  • No semicolons
  • No markdown or asterisks
  • No hashtags anywhere in the thread

Banned words — do not use any of these: incredible, 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

If a draft tweet contains any banned word, rewrite it before presenting.

CRITICAL RULE

Do not invent specifics. Every claim, stat, and example in the thread must come from the blog post. Never fabricate data, quotes, or outcomes.


Step 1: Check Setup

Confirm input is present. The user must provide one of:

  • A blog post URL
  • Pasted article text

If no input is present, ask: "What blog post or article should I turn into a thread? Share a URL or paste the content."

COMPOSIO_API_KEY is only needed for direct posting to X. Output-only mode works without it.


Step 2: Fetch and Extract Content

If input is a URL: Use WebFetch or Chrome DevTools MCP to fetch the page. Extract:

  • Title
  • Author name
  • Publish date
  • All body text
  • Key statistics and data points
  • Numbered lists or steps
  • Subheadings
  • Any quotes

If input is pasted text: Read it directly.

After fetching, identify:

  • The single most surprising or counterintuitive insight
  • 6-9 supporting insights, data points, or steps
  • Any specific numbers, percentages, or concrete results
  • The core argument or main takeaway

QA 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.


Step 3: Choose Thread Style

Four styles. Auto-detect from content signals. Respect explicit user override.

StyleWhen to UseSignals
Data/InsightEvidence-based article with stats or research findingsNumbers, percentages, study results, data points
How-ToTutorial, guide, or step-by-step articleNumbered lists, step headers, "how to" in title
Story/JourneyPersonal experience, build log, lessons learnedFirst-person narrative, "I learned", "we built"
Hot TakeOpinion piece, contrarian argument"Why X is wrong", "Stop doing X", counterintuitive claim

Decision logic:

  • Article has specific stats or data: Data/Insight
  • Article is structured as steps or tips: How-To
  • Article is first-person narrative: Story/Journey
  • Article argues against a common belief: Hot Take

State the chosen style and reason. If ambiguous, pick one and note it.


Step 4: Read Format Rules

Read references/thread-format.md in full before writing any tweet. Internalize:

  • Hook tweet rules (tweet 1 must stop the scroll)
  • One-insight-per-tweet rule
  • Character limit (280 per tweet, count carefully)
  • Thread numbering format (1/8, 2/8, etc.)
  • CTA tweet rules (final tweet only)
  • No hashtags
  • No em dashes
  • Banned word list

Read references/output-template.md and select the template matching the chosen style.


Step 5: Generate the Thread

Produce three things:

(A) The full thread (7-10 tweets)

Each tweet:

  • Under 280 characters including the tweet number ("1/8 " = 4 characters)
  • Contains exactly one insight, step, or idea
  • Sounds like a human typed it
  • No URLs in tweets 1 through N-1
  • No hashtags

(B) The CTA tweet (final tweet)

  • Summarizes the key takeaway in one sentence
  • Ends with one action: "Read the full post in the replies." or "What's your take?" or "Follow for more like this."
  • Includes the source URL if one was provided

(C) One alternative hook tweet

  • Uses a different format from the primary hook
  • If primary used a stat, offer a question-based hook
  • If primary used a bold claim, offer a before/after hook

Step 6: Self-QA

Run every check before presenting. Fix violations first.

  • Tweet 1 creates a curiosity gap or leads with the most surprising insight
  • Every tweet is under 280 characters (count including tweet number)
  • Each tweet contains exactly one idea
  • No tweet starts with "I" (exception: Story/Journey style)
  • No banned words in any tweet
  • No em dashes in any tweet
  • No hashtags in any tweet
  • No URLs except in the final CTA tweet
  • No invented data. Every stat and example traces to the source.
  • Thread reads naturally in sequence
  • Total tweet count is between 7 and 10

State total tweet count and confirm every tweet is under 280 characters before presenting.


Step 7: Post via Composio or Output

Check for COMPOSIO_API_KEY.

If set: "Thread ready. Confirm to post to X via Composio, or say 'output only' to get the text."

On confirmation:

  1. Post tweet 1 using action TWITTER_CREATION_OF_A_POST with text set to tweet 1 content
  2. Capture the returned tweet ID
  3. Post tweet 2 with reply_in_reply_to_tweet_id = tweet 1 ID, capture its ID
  4. Continue for each tweet in sequence, each replying to the previous tweet's ID
  5. Wait 1 second between posts to avoid rate limiting
  6. After all tweets post: "Thread posted. Tweets 1-N are live."

If not set: Present each tweet in a numbered list inside a code block. Add:

"To enable direct posting, add COMPOSIO_API_KEY to your .env file. See README.md for Composio setup."

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what tweet-thread-from-blog does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.