Xtracticle
概要
作者による説明(英語の原文)
Read public X (Twitter) posts, threads and X Articles as clean Markdown. Read-only, no auth.
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi1項目中1項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況iとても新しい★ –
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: クラウドで動く
- トランスポート: Streamable HTTP
- カテゴリ: マーケティング・SNS
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:1項目中1項目に合格
- 作者のサーバーで動きます。あなたが頼んだ内容は、作者のサーバーを通ります。
- レジストリには、入力が必要なキーは載っていません。
必要なもの
- クラウドで動くインストール不要。インターネット経由でつながります
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルの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に従ってください。
できること
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名はドメイン xtracticle.com で確認済みです(レジストリがドメインの所有を確認しています)
- … 未チェック
今もメンテナンスされている
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- … 未チェック
エンドポイントが応答する
まだチェックしていません。エンドポイントは順番にチェックしています
- … 未チェック
OAuthでサインイン
まだチェックしていません。エンドポイントは順番にチェックしています
- … 未チェック
ツールの説明に隠れた指示がない
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
マーケティング・SNSのほかのサーバーとの比較i
- このカテゴリのほかの3601件のうち0%よりスターが多い
- このカテゴリのほかの3601件のうち45%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの3601件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Xtracticleは安全ですか?
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は–、最新バージョン(3.2.0)がレジストリに届いたのは36 日前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
代わりに使えるものは?
同じカテゴリには:MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況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