
Xtracticle
Download X articles & threads as Markdown, Text or PDF
45 followers
Download X articles & threads as Markdown, Text or PDF
45 followers
Xtracticle is a free, open-source tool that extracts long-form articles, threads (floods), and posts from X (formerly Twitter) and saves them as clean Markdown (.md), plain text (.txt), or PDF files. No login. No API key. No rate limits. Just paste the URL, click Extract, and download. It auto-detects threads and merges them into one document. Built with React, TypeScript, and deployed globally on Cloudflare Workers with zero cold start.
This is the 2nd launch from Xtracticle. View more

Xtracticle
Launched this week
Xtracticle turns X (Twitter) Articles, threads and posts into files you own: PDF, Markdown (optional YAML front-matter), EPUB for Kindle, or a ZIP with every image. New since v1: threads unrolled from any post, batch mode (20 links to one ZIP), an iPhone Shortcut, 7 languages, and a free MCP server so Claude, ChatGPT and Cursor can read X posts as Markdown. Tip: swap x.com for xtracticle.com in any post URL. Free, open source, no login.






Free
Launch Team

Framer AI AgentsDesign and publish professional sites with AI
Promoted


the MCP server is the part that caught my eye, I've got a daily claude code loop that already has to deal with X links showing up in research tasks and right now it just can't read them at all. the "swap x.com for xtracticle.com" trick is clever for a human doing it manually, but does the MCP server handle that translation itself, or does the agent still need to know to rewrite the URL before it can call the tool
@galdayan Thanks Gal, that's exactly the use case I built it for. No rewriting needed: the tool takes the X link as-is. x.com and twitter.com links work, mirror links (fxtwitter, nitter, xcancel) and bare post IDs too. So your loop can pass whatever URL it finds straight to read_x_post.
For Claude Code it's one line:
claude mcp add --transport http xtracticle https://xtracticle.com/mcp
A few things that help in a research loop:
- Paste any post of a thread and you get the author's whole thread in order
- Long Articles come back in pages (max_chars / offset), so they don't blow up your context
- Every result includes the title, author, date and source link, so citations are easy
The only link it can't take is the x.com/i/article/... reader URL; it needs the post link (x.com/user/status/...). Also, it's a free server with a per-IP rate limit, so it's fine for a daily loop but not for bulk scraping.
If you try it, I'd love to hear how it behaves in your loop!
@ahmet_deveci that one line setup is exactly what I needed, thanks. going to wire it in this week. one more question before I do - when the per-IP rate limit hits, does the MCP call fail loud (clean error the agent can catch and retry later) or does it degrade quietly, like returning a partial/truncated result that looks valid? for a daily unattended loop the second one is way scarier than the first, since nothing would flag it as broken
@galdayan Great question, and it fails loud. There's no silent degradation by design:
- Rate limit: over 40 requests in 10 seconds from one IP gets an HTTP 429 at the edge for 10 seconds, so the MCP call errors out and your agent can back off and retry. A daily loop won't come close to that.
- Long articles: never silently cut. If a document is split, the result has truncated: true, end and totalChars in the structured output, plus a visible note at the end of the text telling the agent which offset to continue from.
- Deleted/private posts or bad links: the tool returns isError: true with a plain explanation, not an empty or partial result.
The one thing to know: if the upstream data source (FxTwitter) is down, I serve the last copy fetched within the past 7 days instead of failing, and mark it with stale: true in the metadata. If freshness matters for your loop, check that flag.
So for an unattended loop, check isError, truncated and stale, and you'll never get a partial result that looks valid.
@galdayan Glad it helped! If anything looks off once it's running in your loop (a post that converts badly, a weird error, a missing field), open an issue at github.com/ahmetdeveci3112-crypto/Xtracticle/issues or reply here and I'll take a look. Good luck with the setup!