
Tweetkit X
io.github.nsozturk由 GitHub 帳號 nsozturk 發布v0.3.0更新於 Oct 25, 2026
Post, delete & read on X (Twitter) using your own logged-in web session — no paid API.
概覽
本機 MCP 伺服器,讓助理使用你自己已登入的瀏覽器工作階段 Cookie 在 X(Twitter)上發文、刪除、讀取與搜尋,不必付費使用 API。
- 可以做什麼
- 驗證:貼上 Cookie 標頭,或匯入 HAR、storage-dump 壓縮檔、Cookie JSON 檔,並用 auth_status、set_session_cookie、import_cookie_from_file 檢查與設定工作階段,工具會說明要複製什麼且不會回傳 Cookie。發布內容:發推文(可附圖片、回覆)、發串推、引用推文、長文筆記,以及排程發文與取消排程。刪除內容:刪除單一或一批推文,並以子字串或正規表示式找出自己的推文以便清理。互動:按讚、轉推、收藏、置頂、追蹤、封鎖、靜音,每項都有對應的復原操作。讀取資訊:首頁時間軸、回覆、通知、書籤、個人檔案、追蹤者、追蹤中、按讚者、轉推者,以及搜尋整個 X 並支援搜尋運算子。
- 適用情境
- 適合希望助理在不付費使用官方 API、也不註冊開發者應用的情況下,發布、清理或瀏覽自己 X 帳號的情境,例如排程發文、草擬串推,或依關鍵字找出並刪除舊推文。
- 執行需求
- 以本機程序執行,從 PyPI 安裝 tweetkit-x 並加上 mcp 附加元件(Python),通常透過 uvx 或 tweetkit-mcp 指令啟動。需要包含 auth_token 與 ct0 的已登入 X 工作階段 Cookie,可透過 TWEETKIT_COOKIE、TWEETKIT_COOKIE_FILE、Cookie 檔案或 macOS 鑰匙圈(TWEETKIT_COOKIE_KEYCHAIN)提供。需要連線至 x.com 的網路存取。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Tweetkit X,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
[tweetkit-x — post, delete and read on X (Twitter) from Python & MCP using your own web session]
tweetkit-x
Post, delete & read on X (Twitter) — from Python and as an MCP server — using your own logged-in browser session.
No paid API. No developer app. No OAuth dance. Just your session cookie.
[PyPI] [Python] [License] [MCP] [X API] [Runs with]
Quick start · Get your cookie · Python · CLI · MCP server · How it works · Disclaimer
Why
Since February 6, 2026, X's official API has no free tier for new developers — it's pay-per-use: ~$0.015 per post, ~$0.20 per post with a link, plus per-read charges. For publishing your own tweets (a bot posting your content, a scheduled thread, a cleanup script that deletes old posts), that's a recurring bill for something your browser already does for free.
tweetkit-x skips the API entirely. It replays the exact internal HTTP calls your browser makes when you click Post, Delete, or scroll your profile — authenticated with the session cookie you already have. Post, delete, and read the full timeline, at zero API cost.
⚠️ Automating your web session is against X's Terms of Service. This is a grey-area tool for personal automation. Account risk is entirely yours. See the Disclaimer.
Features
- ✅ Post — text, up to 4 images, GIF & video (with alt text), replies, threads, quote-tweets, long-form note tweets, and scheduled tweets
- 🗑️ Delete — one id, a list of ids, or "find matching & delete" cleanup loops
- ❤️ Engage — like, retweet, bookmark, follow, block, mute, pin — each with an undo
- 🌐 Search all of X — the real
SearchTimeline(operators likefrom:,min_faves:,filter:media), plus local regex over your own tweets - 📖 Read — your home feed, any timeline, a tweet's replies/conversation, followers/following, likers/retweeters, bookmarks, a user's likes, notifications, and full profiles
- 🔌 MCP server — 40 tools; drop into Claude Desktop / Claude Code / Cursor; tools that explain the cookie and set it up with one paste
- 🔑 Frictionless auth — paste a
Cookie:header, drop a HAR file, or a storage-dump zip; store in a file or the macOS Keychain - 🐍 Python API and a CLI (
tweetkit …) - 🪶 Tiny footprint — no headless browser, no Selenium
Quick start
Getting your session cookie
The only secret tweetkit needs is your X session cookie — the same Cookie: header your logged-in browser sends. It must contain at least two values:
❗
auth_tokenis HttpOnly, so adocument.cookiecopy in the JS console will NOT include it. Use one of the reliable methods below.
Method A — copy the Cookie: header (most reliable, one paste)
- Open x.com while logged in.
- Open DevTools (F12) → the Network tab.
- Click any request to
x.com(e.g.HomeTimeline). - Under Request Headers, find
cookie:and copy the entire value. - Feed it in:
Method B — an F12 "Preserve log" HAR file
- Open x.com logged in → DevTools (F12) → Network.
- Tick "Preserve log", then reload / click around so requests are captured.
- Right-click any request → "Save all as HAR" (or use the ⬇ export icon).
- Import it:
Modern Chrome can redact cookies from exported HARs. If tweetkit reports
auth_tokenmissing, either enable "Allow to generate HAR with sensitive data" in the Network settings, or fall back to Method A / Method C.
Method C — the storagedump browser extension (zip)
The easiest no-DevTools route. storagedump (a Chrome extension built by this project's author) exports a tab's browser storage — including the HttpOnly auth_token, which document.cookie can't reach — as a .zip containing cookies.json. On x.com (logged in), click the extension → export, then:
tweetkit reads the extension's native format, { "data": [ { "key": "...", "value": "..." }, ... ] }, and also accepts a plain list or a {name: value} map. Cookie-Editor / EditThisCookie JSON exports (--file export.json) work too.
Install: storagedump on the Chrome Web Store.
Where the cookie is stored
By default tweetkit import writes ~/.config/tweetkit/cookie.txt (chmod 600; also git-ignored). Prefer the macOS Keychain? Add --keychain <slug>:
Resolution order at runtime (first hit wins): explicit arg → TWEETKIT_COOKIE → TWEETKIT_COOKIE_FILE → ./cookie.txt → ~/.config/tweetkit/cookie.txt → Keychain (TWEETKIT_COOKIE_KEYCHAIN).
Python usage
Every write returns {'ok': True, 'id': '...', 'url': '...'} on success, or {'ok': False, 'status': ..., 'error': '...'} on failure — easy to log or retry.
See examples/ for a full "find my $XMR tweets and delete them" cleanup loop.
CLI usage
A thread.txt is just tweets separated by blank lines.
MCP server
tweetkit ships a first-class MCP server so an AI client can post/delete/read for you — and it walks the user through auth, explaining what the cookie is and setting it up with a single paste.
Configure your client
Claude Desktop / Claude Code / Cursor — add to your MCP config (claude_desktop_config.json, .mcp.json, …):
Already pip installed? Use the console script directly:
If you don't set any cookie env var, that's fine — the server starts unauthenticated and asks the user to set the cookie from inside the chat (below).
Frictionless auth, from inside the chat
The server describes each value and offers the lowest-effort path. A typical first run:
- The client calls
auth_status→ not authenticated. - The server’s instructions tell the assistant to ask you for your cookie and explain what
auth_tokenandct0are and how to copy them. - You paste the
Cookie:header once →set_session_cookie("<paste>")→ stored (Keychain or file) and activated. Or pointimport_cookie_from_file("~/Downloads/x.com.har")at a HAR / storage-dump zip.
The raw cookie is never echoed back.
Tools
Not (yet) supported: DMs, polls (create/vote), Lists, profile editing, Spaces, hide-reply. These need a captured HAR of that exact action to pin down the endpoint — easy to add on request.
How it works
When you act in the browser, x.com calls a handful of internal endpoints. tweetkit reproduces them 1:1:
x-client-transaction-id— X requires an anti-bot header derived from the page'sondemand.sJS and a home fetch. Generated with the standalonex-client-transaction-idpackage.- Media upload (images) —
POST upload.x.com/i/media/upload.jsonasINIT→APPEND→FINALIZE, yielding amedia_id. - Write / delete —
POST /i/api/graphql/<queryId>/CreateTweetand.../DeleteTweet. - Read —
GET /i/api/graphql/<queryId>/UserTweets(paginated by cursor), plusUserByScreenNameto resolve@handles.
Auth is just your cookie + the public web bearer token (the same non-secret bearer embedded in x.com for every visitor) + the ct0 CSRF value echoed as x-csrf-token.
The GraphQL query IDs live in
tweetkit_x/constants.py. X rotates them every few weeks; if a call starts failing, refresh them from a fresh HAR (the file has step-by-step notes).
Security
- The cookie is the only secret. It's stored chmod 600 in
~/.config/tweetkit/cookie.txtor the macOS Keychain, and.gitignoreblockscookie.txt,.env,*.har, and*.zip. - tweetkit never prints the cookie value — importers report only which cookies were found and their lengths.
- The bundled bearer is X's public web bearer, identical for every visitor — not a secret.
Disclaimer
This project automates your own X web session for personal use. Automating the web session is against X's Terms of Service, and using it may put your account at risk of rate-limiting, suspension, or ban. You are solely responsible for how you use it. Provided as-is, without warranty. Not affiliated with X Corp.
License
MIT © 2026 ns0bj
來源:README.md,提交 f7e7076
工具
0版本歷史
1- v0.3.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分