Xtracticle
概览
作者提供的说明(英文原文)
Read public X (Twitter) posts, threads and X Articles as clean Markdown. Read-only, no auth.
PopNx MCP 的三大支柱
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
- 用户评价i暂无评价评价功能将在后续阶段与账户功能一起开放
- 我们的基础检查i3 项中通过 3 项依据公开信息检查;尚未扫描代码
- 使用情况i非常新★ –
它能帮你做什么
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
- 连接方式: 在云端运行
- 传输方式: Streamable HTTP
- 分类: 营销与社交媒体
安装
选择你使用的 AI 应用,然后复制设置。
安装之前
- 基础检查:3 项中通过 3 项
- 在作者的服务器上运行:你向它提出的内容会经过他们的服务器。
- 可以做 1 件事(工具) read_x_post
- 注册中心没有列出需要填写的密钥。
你需要
- 在云端运行无需安装任何东西,通过互联网连接
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
- 打开 Settings → Connectors
- 点击 Add custom connector
- 粘贴下面的地址,然后点击 Add
- 如果要求登录,请登录作者的服务
https://xtracticle.com/mcp在终端中运行这条命令
claude mcp add --transport http xtracticle https://xtracticle.com/mcp或者自己复制设置
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"xtracticle": {
"url": "https://xtracticle.com/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
或者自己复制设置
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"xtracticle": {
"type": "http",
"url": "https://xtracticle.com/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
- 打开网页版 ChatGPT → Settings → Connectors (Apps)
- 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
- 粘贴下面的地址,起个名字,然后保存
- 如果要求登录,请登录作者的服务
https://xtracticle.com/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它能做什么
工具名称和描述与服务器在 2026年11月8日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
read_x_postFetches a public X (Twitter) post and returns it as clean Markdown with title, author, date and source link. X Articles (long-form) keep headings, lists, links, quotes and images; for a thread, any post of it returns the author's whole self-thread in order (other people's replies
基础检查i
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月9日
- ✓ 通过
作者与仓库一致
注册名称已通过域名 xtracticle.com 验证(注册中心会核实域名所有权)
- … 尚未检查
仍在维护
我们还没有从 GitHub 读取这个仓库
- … 尚未检查
有许可证
我们还没有从 GitHub 读取这个仓库
- ✓ 通过
端点有响应
在 34 毫秒内响应(HTTP 200)
- – 不适用
使用 OAuth 登录
无需登录
- ✓ 通过
工具描述中没有隐藏指令
已读取 1 个工具描述,未发现针对 AI 的隐藏指令
与“营销与社交媒体”中的其他服务器比较i
- 星标数多于此分类中其他 3622 个服务器的 0%
- 发布到注册中心的时间比此分类中其他 3622 个服务器的 44% 更新
- 基础检查结果等于或优于此分类中其他 3622 个服务器的 100%
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
常见问题
Xtracticle 安全吗?
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
它需要哪些密钥或代码?
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在我的电脑上运行还是在云端?
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
它还在维护吗?
GitHub 仓库最后更新于–,最新版本(3.2.0)于36天前进入注册中心。
哪些应用可以使用它?
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
有什么可以替代它?
同一分类中有:MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
替代选择
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Google Analytics MCP
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
BibiGPT YouTube Video Summarizer
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
作者的 README
打开 README
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Xtracticle Download X (Twitter) Articles, threads & posts as PDF, Markdown, EPUB/Kindle, text or a ZIP with images. Free, open source, no login required.
Features • Getting Started • Architecture • SEO & AI • API • Contributing
Live: xtracticle.com — or just change x.com to xtracticle.com in any post URL.
Features
Export formats
| Format | What you get |
|---|---|
| A4, print-ready; title/author/date/source header, images, page numbers, clickable source link. Rendered page by page so long articles never produce blank PDFs and lines are never cut. | |
| Markdown | Headings, bold/italic/strikethrough, links, nested lists, quotes, code, dividers, images, video thumbnails. Optional YAML front-matter (Obsidian properties, Hugo/Jekyll/Astro). |
| EPUB 3 | Reflowable e-book with embedded images and metadata — Kindle (Send to Kindle), Kobo, Apple Books. |
| ZIP + images | Markdown + every image stored locally — an offline archive that survives deleted posts. |
| Text | Clean .txt. |
| Obsidian | Copies the Markdown and opens a new note via obsidian://new. |
Content
- 📝 X Articles — full Draft.js conversion: cover, inline images, videos, captions, embedded posts
- 🧵 Threads from any post — paste the first, a middle or the last post; the whole self-thread is assembled (other people's replies are excluded)
- 💬 Posts — line breaks, photos, videos and quoted posts
- 🔗 Flexible input — x.com, twitter.com, mobile, fxtwitter/vxtwitter/fixupx, nitter/xcancel links,
/i/web/status/, bare IDs, links inside shared text
Workflow
- 🔁 URL swap —
xtracticle.com/{user}/status/{id}opens a post directly, with rich link previews (Open Graph) when shared - 📚 Batch mode — up to 20 links → one ZIP of Markdown files
- 🔖 Bookmarklet and PWA share target (share from the X app on Android)
- 🔊 Listen — read aloud with the browser's text-to-speech
- 📱 iPhone/iPad Shortcut — share a post from the X app straight to Xtracticle (
public/shortcuts/) - 🤖 MCP server + Markdown API — AI assistants read X posts as Markdown (
/mcp,/api/markdown/:id) - 📜 History, 🌙 dark mode, 🌍 English, Español, Português, 日本語, 简体中文, العربية, Türkçe (Arabic is right-to-left)
- 📈 Analytics events —
extract,download(format),copy,share,listen,batch_extract, errors — in GA4
Getting Started
git clone https://github.com/ahmetdeveci3112-crypto/Xtracticle.git
cd Xtracticle npm install npm run dev
The dev server runs at http://localhost:5173. /api/* is served by the same handler as the Worker (src/shared/api.ts), and every landing page is rendered on the fly — no wrangler needed.
| Script | Description |
|---|---|
npm run dev | Vite dev server with the API |
npm run build | Production build → dist/ (all landing pages, 404, sitemap) |
npm run preview:worker | Build and run the real Worker locally with wrangler dev (SSR status pages, 404s, _headers) |
npm run lint | Type-check the app and the Worker |
Deployment
Cloudflare Workers + Static Assets, deployed automatically on push to main (build: npm run build, deploy: npx wrangler deploy). No environment variables.
wrangler.json:
run_worker_first— only/api/*,/mcp,/video/*and/*/status/*hit the Worker; everything else is served straight from the CDNnot_found_handling: "404-page"— unknown URLs return a real404(no soft-404s)public/_headers— security headers,Link:, download headers for the iOS Shortcut
Architecture
Browser ──► Cloudflare
├─ Static assets (dist/) /, /x-article-to-pdf, /tr/, … , 404.html, sitemap.xml └─ Worker (src/worker.ts) ├─ /api/thread/:id, /api/tweet/:id ──► src/shared/api.ts ──► FxTwitter API │ (edge cache, 5 min) └─ /{user}/status/{id} ──► app shell + per-post OG tags + preloaded JSON (noindex)
src/ ├── App.tsx UI: extraction, exports, batch mode, deep links ├── i18n.ts UI strings (en, tr, es, pt, ja, zh) ├── lib/export.ts PDF (jsPDF + html2canvas-pro), EPUB, ZIP (fflate), Obsidian ├── lib/url.ts Input + path parsing ├── lib/analytics.ts GA4 event helper ├── shared/fx.ts FxTwitter client (v2 thread endpoint + v1 fallback), shared by Worker & dev server ├── shared/api.ts JSON API handler with edge caching ├── shared/convert.ts Posts / threads / Draft.js articles → Markdown + text + metadata (app + Worker) ├── shared/markdown.ts GET /api/markdown/:id ├── shared/mcp.ts Remote MCP server (POST /mcp) ├── shared/text.ts Title extraction └── worker.ts Cloudflare Worker (API + status-page SSR) site/ ├── blocks.ts Types + localized shared blocks (shortcuts, privacy) ├── pages.ts English pages (one per search intent) + page registry ├── pages-{es,pt,ja,zh,ar,tr}.ts The same pages, localized (linked by group) ├── curated.ts Weekly “Best X Articles” pages from site/curated/*.json ├── guides.ts /guides — informational guides ├── mcp-page.ts /mcp-server — MCP setup docs ├── render.ts Head/meta/JSON-LD/content/footer rendering └── plugin.ts Vite plugin: emits every page, 404.html and sitemap.xml
Heavy export libraries are dynamically imported, so the initial page only loads React + the app.
SEO & AI Discoverability
| Layer | Implementation |
|---|---|
| Intent pages | /x-article-to-pdf, /x-article-to-markdown, /x-thread-to-pdf, /x-article-to-epub, /save-x-articles-to-obsidian, /thread-reader-app-alternative — each with unique, visible HTML content and FAQ |
| Languages | Every page in 7 languages (/, /es/…, /pt/…, /ja/…, /zh/…, /ar/…, /tr/…) + UI in 7 languages; first-visit language banner, remembered choice redirects (never for crawlers) |
| Crawlable content | Content is static HTML outside the React root — no JS needed to index it |
| Structured data | WebApplication, FAQPage (matches visible FAQ), BreadcrumbList |
| i18n | Reciprocal hreflang for every translation group + x-default |
| Share pages | /{user}/status/{id} get post-specific OG/Twitter tags; noindex, follow |
| Sitemap / 404 | Generated at build; real 404 status for unknown URLs |
| AI | /llms.txt, /llms-full.txt, AI crawlers allowed in robots.txt |
API
GET /api/thread/:id → { tweets: Tweet[], count, isThread } # self-thread containing :id
GET /api/tweet/:id → Tweet GET /api/markdown/:id → text/markdown # ?format=markdown|text&thread=0|1&front_matter=0|1 POST /mcp → MCP (Streamable HTTP, stateless), tool read_x_post
Tweet mirrors the FxTwitter status object (text, author, media, quote, article, …). Responses are edge-cached for 5 minutes — please be gentle.
Weekly “Best X Articles”
/best-x-articles is a hand-reviewed weekly selection built from site/curated/*.json (title, author and a one-sentence summary in our own words — never the article text).
npm run curate -- 2026-W41 https://x.com/user/status/123 https://x.com/other/status/456
→ site/curated/2026-w41.json with title/author/lang filled in; write "intro", "topic" and "summary"
npm run build # issues with an empty summary are skipped automatically
The newest issue is shown on /best-x-articles (its /best-x-articles/ page canonicals to the hub until the next issue); older issues stay at /best-x-articles/ .
Contributing
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes
- Open a Pull Request
Notes:
- Landing page copy lives in
site/pages.ts; runnpm run buildto see the generated HTML - Keep
src/shared/*free of DOM/Node-only APIs — it runs in both the Worker and the dev server - Test Worker-only behavior (SSR, 404, headers) with
npm run preview:worker
License
MIT