API tweet.md untuk LLM 2026: 5 Alur Kerja Markdown
Jika Anda memperlakukan tweet.md hanya sebagai trik penulisan ulang URL — trik peramban tempat Anda mengganti x.com dengan tweet.md dan postnya tampil sebagai Markdown bersih — Anda sudah melewatkan separuh yang lebih baik. tweet.md juga menyediakan API HTTP kecil yang terdokumentasi baik yang mengambil post, utas, dan profil X yang sama dan mengembalikannya sebagai Markdown polos yang bisa langsung dicerna LLM Anda. Tanpa JSON, tanpa parsing, tanpa tahap pembersihan.
Tingkat gratis mencakup pengujian kasual (5 permintaan post tunggal per IP per bulan kalender, hanya thread=off). Apa pun di luar itu — rantai leluhur, konteks cabang, dump profil, X Articles — memerlukan kunci API berbayar. Panduan ini menelusuri permukaan API, empat metode autentikasi, lima alur kerja LLM yang membayar kembali diri mereka dalam satu sore, dan kapan harus beralih ke ThreadGrab.
Ringkasan singkat: API tweet.md mengembalikan text/markdown, bukan JSON. Tingkat gratis hanya post tunggal. Tingkat berbayar adalah $5 untuk 500 kredit. Lima alur kerja yang benar-benar sepadan: ingest RAG, penarikan kutipan, penggunaan alat oleh agen, sinkronisasi Obsidian, dan Apple Shortcuts di iOS.
Apa yang Sebenarnya Dikembalikan API tweet.md
API ini bertujuan tunggal: diberikan URL post X (atau handle + ID post, atau handle profil), kembalikan dokumen Markdown dengan teks post, handle penulis, stempel waktu, tautan media, statistik keterlibatan, dan tweet yang dikutip atau balasan tertanam yang dirender sebagai blok Markdown bersarang. Keluarannya adalah text/markdown, tidak pernah JSON. tweet.md secara eksplisit menolak format=json.
Ada tiga titik masuk:
- Penulisan ulang peramban: ganti
x.comdengantweet.mddi URL post mana pun. Berfungsi tanpa kunci di peramban yang sama setelah checkout (cookie sesi). Tingkat gratis hanya post tunggal. - Post/utas programatik:
GET https://tweet.md/{handle}/status/{tweetId}saat Anda sudah punya handle dan ID. Bentuk respons sama dengan penulisan ulang peramban. - Programatik dengan URL lengkap:
GET https://tweet.md/i/api/convert?url={encoded_url}saat Anda hanya punya URL x.com lengkap. Ini adalah endpoint yang digunakan agen dan Shortcuts. - Profil:
GET https://tweet.md/{handle}(peramban) atauGET https://tweet.md/i/api/profile?handle={handle}(programatik). Memerlukan kredit.
Keempat endpoint menerima parameter kueri yang sama: format, thread, userinfo, stats, metadata, dan (untuk profil) pinnedpost, latest, replies, articles. Default sedikit berbeda antara gratis dan berbayar: tingkat gratis memaksa thread=off dan userinfo=off; tingkat berbayar default ke thread=ancestors-20 dan userinfo=author saat parameter tersebut dihilangkan.
Autentikasi — Empat Metode, Satu Kunci
tweet.md menerima kunci API yang sama dalam empat cara berbeda. Pilih yang paling cocok dengan runtime Anda.
| Metode | Header / Parameter | Kapan menggunakannya |
|---|---|---|
| Bearer | Authorization: Bearer twmd_key_... | Skrip, agen, dan server (direkomendasikan) |
| Kunci iOS | x-ios-apikey: twmd_key_... | Apple Shortcuts — mengembalikan text/html dengan jeda baris sebagai <br> |
| Parameter URL | ?apikey=twmd_key_... | Pengujian manual cepat (hindari berbagi URL yang memuatnya) |
| Cookie sesi | otomatis setelah checkout/login | Penulisan ulang peramban di peramban yang sama setelah topup |
| IP tepercaya | di daftar putih dashboard | IP server publik — agen beranggaran tetap tanpa mengirim kunci |
Kuncinya terlihat seperti twmd_key_… dan dikirim melalui email setelah checkout Stripe, atau dibuat dari dashboard. IP tepercaya memungkinkan Anda melewati header sepenuhnya untuk IP server tetap — berguna saat menjalankan cron di VPS dengan alamat stabil. Aturan preseden: jika permintaan menyertakan header Bearer dan IP tepercaya, kunci Bearer menang.
Tingkat gratis ada untuk pengujian kasual tetapi bukan yang diinginkan agen produksi. Tingkat gratis memaksa thread=off dan userinfo=off, artinya Anda hanya mendapat post tunggal, tanpa metadata penulis, tanpa konteks balasan. Lima permintaan per IP per bulan kalender. Apa pun di luar smoke-testing memerlukan kunci berbayar.
Endpoint /i/api/convert (Programatik)
Ini adalah endpoint yang paling sering dipanggil agen Anda. Kontraknya sederhana: berikan URL x.com lengkap sebagai parameter kueri, dapatkan dokumen Markdown. Header membawa kunci Bearer.
curl -H "Authorization: Bearer twmd_key_..." \
"https://tweet.md/i/api/convert?url=https%3A%2F%2Fx.com%2Fjack%2Fstatus%2F20&thread=branch-8"
Responsnya adalah utas lengkap yang dirender sebagai Markdown. Parameter thread=branch-8 membatasi respons pada total 8 post: leluhur dulu (rantai di atas post Anda), lalu balasan di bawah. Header respons sebenarnya membawa metadata yang harus ditagih agen Anda:
X-Tweetmd-Posts-Returned— berapa banyak post yang kembali di badanX-Tweetmd-Credits-Charged— kredit yang dipotong untuk panggilan iniX-Tweetmd-Thread-Cap— batas yang Anda minta (mis. 8)X-Tweetmd-Cap-Hit— apakah batas memotong utas yang lebih panjang
Header ini hanya dilampirkan ke respons HTTP, tidak pernah ke badan Markdown. Agen Anda dapat membacanya untuk mencatat penggunaan kredit tanpa mencemari konten yang dicerna LLM.
Endpoint /i/api/profile (Scraping Profil)
Profil ditagih berbeda. Profil dasar berharga 2 kredit, ditambah 1 kredit per post yang dikembalikan di bagian mana pun yang diaktifkan (pinned, latest, replies, articles). Tingkat gratis tidak menyertakan akses profil sama sekali.
curl -H "Authorization: Bearer twmd_key_..." \
"https://tweet.md/i/api/profile?handle=jack&latest=10&replies=5"
Default konservatif: post tersemat aktif, 5 post terbaru, balasan nonaktif, artikel nonaktif. Parameter latest, replies, dan articles masing-masing menerima rentang (latest 5-50, replies dan articles 5-20). Setiap post yang dikembalikan adalah +1 kredit. Untuk dump profil dengan post tersemat, 10 terbaru, dan 5 balasan, Anda menghabiskan 2 + 1 + 10 + 5 = 18 kredit untuk satu profil.
Ini adalah endpoint yang Anda inginkan saat membangun peneliti X atau penarik prospek. Tarik profil sekali, dapatkan bio + statistik + 10 post terbaru sebagai satu dokumen Markdown. LLM Anda dapat mencernanya sebagai konteks untuk email penjangkauan yang dipersonalisasi atau analisis kompetitif.
5 Alur Kerja yang Benar-Benar Sepadan
Lima pola muncul berulang kali di pipeline LLM nyata yang menyentuh tweet.md. Daftar ini tidak lengkap, tetapi setiap pola membayar paket kredit $5 dalam waktu kurang dari satu sore.
Alur Kerja 1: Ingest RAG dari Daftar Tweet Terkurasi
Penggunaan produksi paling umum. Anda memelihara daftar URL post X tentang suatu topik (kerangka kerja agen AI, nasihat indie hacker, riset industri). Pada cron, skrip Anda mengambil setiap URL via /i/api/convert dengan thread=branch-8, memisahkan pada pemisah per post, membuat embedding untuk setiap post dengan model embedding Anda, dan mendorongnya ke vector store Anda. Keluaran Markdown sudah bersih: tanpa penghapusan HTML, tanpa dekode entitas, tanpa parsing JSON. Logika chunking Anda dapat memisahkan pada header # 1/N — Post by … yang dikeluarkan tweet.md.
# Pseudo-pipeline
for url in curated_urls:
md = requests.get(
f"https://tweet.md/i/api/convert",
params={"url": url, "thread": "branch-8", "userinfo": "author"},
headers={"Authorization": f"Bearer {TWEETMD_API_KEY}"},
).text
for chunk in split_on_post_headers(md):
embed_and_store(chunk, metadata={"source": url})
Biaya: 1 kredit per post di utas yang dikembalikan, ditambah 2 untuk penulis. Untuk 50 utas dengan rata-rata 4 post, itu 50 + (50 × 2) = 150 kredit — masih di dalam paket $5.
Alur Kerja 2: Penarikan Kutipan untuk Post Bentuk Panjang
Anda sedang menulis Substack atau bentuk panjang LinkedIn yang sarat riset dan ingin mengutip 10 utas X tertentu. Untuk setiap utas yang dikutip, ambil URL post dengan thread=ancestors untuk mendapatkan rantai balasan lengkap, lalu kutip bagian yang relevan. Karena tweet.md mengembalikan Markdown dengan URL sumber di header post, Anda punya format kutipan siap pakai:
> Original post: https://x.com/exampleuser/status/9000000000000000001
> Captured: 2026-05-17T00:00:00.000Z
>
> Shipping notes: what changed in this release and why.
Anda dapat menempel blok ini langsung ke artikel Anda dengan atribusi yang tepat. Stempel waktu adalah waktu pengambilan, bukan waktu post asli, tetapi tweet.md juga menyertakan waktu post asli sebagai bidang metadata terpisah saat Anda menggunakan userinfo=author.
Alur Kerja 3: Penggunaan Alat oleh Agen (Claude Code / Cursor / skills.sh)
tweet.md menerbitkan SKILL.md resmi di github.com/tweet-md/skill yang terinstal via npx skills add tweet-md/skill. Skill tersebut mengajarkan agen tiga pola: (1) menulis ulang URL x.com dan twitter.com menjadi tweet.md sebelum mengambil, (2) memanggil /i/api/convert saat hanya punya URL X lengkap, (3) memanggil /i/api/profile saat membutuhkan konteks bio. Padukan skill dengan kunci API di lingkungan agen Anda:
export TWEETMD_API_KEY=twmd_key_...
# In Claude Code / Cursor, the agent will now:
# - rewrite x.com/jack/status/20 → tweet.md/jack/status/20 when fetching
# - call /i/api/convert when it has the full URL
# - log credit usage from X-Tweetmd-Credits-Charged headers
Tanpa skill, agen yang menemukan URL x.com memiliki tiga opsi buruk: mengunjungi X langsung (dinding login + pelacakan), mencoba scraping post (rapuh, diblokir deteksi bot X), atau memanggil pengambil web generik (mengembalikan HTML, bukan Markdown, dengan iklan dan piksel pelacakan). Dengan skill, agen menulis ulang URL dan mendapatkan dokumen Markdown bersih dalam satu panggilan HTTP.
Alur Kerja 4: Sinkronisasi Vault Obsidian
Parameter format=obsidian membungkus Markdown yang sama dalam frontmatter YAML. Frontmatter mencakup source, author, author_handle, stempel waktu post, stempel waktu pengambilan, bio (untuk profil), stats, dan tags. Badan adalah teks post dan metadata yang Anda dapatkan dengan format markdown default.
---
source: https://x.com/jack/status/20
author: "jack"
author_handle: jack
posted: 2006-03-21T20:50:14.000Z
captured: 2026-05-17T00:00:00.000Z
tags: [x-post, tweetmd]
---
# X Post — jack — 2006-03-21
Post ID: 20
Source: https://x.com/jack/status/20
...
Pada cron harian, skrip sinkronisasi Anda berjalan melalui folder URL X yang disimpan, mengambil setiap URL dengan format=obsidian, dan menulis hasilnya ke vault Anda. Plugin Dataview Obsidian kemudian dapat mengindeks post berdasarkan penulis, tag, atau tanggal. Frontmatter adalah satu-satunya yang membedakan ini dari sinkronisasi Markdown polos — jika Anda hanya menginginkan Markdown polos, hilangkan format.
Alur Kerja 5: Apple Shortcuts di iOS
Shortcut bawaan terinstal dari halaman docs tweet.md dan menjalankan satu aksi HTTP. Kuncinya di sini adalah header x-ios-apikey — tweet.md mendeteksi permintaan kunci iOS dan mengembalikan text/html dengan jeda baris yang dikonversi menjadi <br>, yang dapat disalin Shortcuts ke catatan dengan bersih.
GET https://tweet.md/jack/status/20
Headers:
x-ios-apikey: twmd_key_...
Shortcut menerima input Share Sheet, mundur ke Clipboard jika dibuka langsung, menulis ulang x.com menjadi tweet.md di URL, memanggil endpoint dengan header iOS, dan menyalin Markdown yang dikembalikan ke clipboard Anda. Dari sana Anda menempel ke Apple Notes, Obsidian Mobile, atau aplikasi apa pun yang menerima teks. Shortcut menyimpan kunci Anda secara lokal; jangan bagikan salinan khusus.
Simpan utas yang penting. ThreadGrab mengarsipkan utas X sebagai Markdown dengan media, pelacakan koreksi, dan ekspor massal. tweet.md membaca post — ThreadGrab menyimpannya.
Coba ThreadGrabRingkasan Cakupan Utas
Parameter thread adalah bagian API yang paling membingungkan. Keempat nilai memetakan empat cakupan percakapan, dan akhiran -N membatasi respons. Pilih cakupan terkecil yang memberi LLM Anda konteks yang dibutuhkan.
| Cakupan | Apa yang kembali | Default | Penggunaan khas |
|---|---|---|---|
off | Hanya post tunggal | Tingkat gratis dipaksa | Kutipan tunggal |
ancestors | Post plus rantai balasan di atasnya hingga akar percakapan | — | Membaca balasan dalam konteks lengkap |
branch | Leluhur dulu, lalu balasan di bawah (cabang sejawat dikecualikan) | branch-15 (berbayar) | Ingest RAG, penarikan kutipan |
all | Seluruh percakapan termasuk cabang sejawat | — | Pemetaan topik, analisis kontroversi |
Sintaks batas adalah scope-N dengan N 2-500 (default 20). branch-8 berarti: habiskan hingga 8 post untuk leluhur dulu, lalu balasan di bawah, tidak peduli seberapa panjang utas sebenarnya. Jika post Anda punya 12 leluhur, branch-8 menghabiskan semua 8 di rantai ke atas dan mengabaikan balasan di bawah. Jika post Anda punya 3 leluhur, branch-8 menghabiskan 3 ke atas dan 5 ke bawah. full dan conversation adalah alias dari branch dan all.
format=markdown vs format=obsidian
Format markdown default mengembalikan badan post dengan stats, media, kutipan, dan X Articles lengkap saat ada. Itulah yang Anda inginkan saat memberi makan LLM atau menyimpan ke catatan teks polos.
Format obsidian menambahkan frontmatter YAML di bagian atas: source, author, author_handle, posted, captured, bio opsional untuk profil, blok stats opsional, dan tags. Badan identik dengan format markdown. Gunakan obsidian saat ingin kueri Dataview berdasarkan penulis atau tanggal, atau saat ingin tampilan grafik Obsidian menunjukkan koneksi antar penulis dan topik.
Tak satu pun format mengembalikan JSON. tweet.md dengan sengaja menolak format=json — filosofi proyeknya adalah Markdown sebagai format pertukaran kanonis untuk konsumen LLM, dan pembungkusan JSON menambah biaya parsing tanpa menambah nilai.
Matematika Harga — Paket Mana yang Dibeli
Tiga paket kredit, $5 / $19 / $49. Biaya per kredit turun seiring ukuran paket bertambah, tetapi jumlah dolar adalah keputusan nyata. Berikut matematika titik impasnya.
| Paket | Kredit | Per kredit | Ambil post tunggal | Utas branch-8 | Dump profil |
|---|---|---|---|---|---|
| $5 | 500 | $0,0100 | ~500 ambilan | ~62 ambilan | ~31 dump |
| $19 (nilai terbaik) | 2.200 | $0,0086 | ~2.200 ambilan | ~275 ambilan | ~138 dump |
| $49 | 6.000 | $0,0082 | ~6.000 ambilan | ~750 ambilan | ~375 dump |
"Ambil post tunggal" mengasumsikan thread=off dan userinfo=off, jadi 1 kredit per panggilan. "Utas branch-8" mengasumsikan 8 post dikembalikan (8 kredit) + 2 untuk metadata penulis = 10 kredit per panggilan. "Dump profil" mengasumsikan tersemat + 10 terbaru + 5 balasan = 18 kredit per panggilan (2 dasar + 1 tersemat + 10 terbaru + 5 balasan).
Paket $19 adalah titik awal yang tepat untuk kebanyakan kreator individu: 2.200 kredit mencakup sekitar 138 dump profil atau 275 utas branch-8. Paket $49 untuk tim yang menjalankan beberapa cron harian atau agen yang mencerna puluhan utas per hari. Paket $5 untuk menguji API sebelum berkomitmen.
Kapan Memadukan tweet.md dengan ThreadGrab
tweet.md dan ThreadGrab bersifat saling melengkapi, bukan bersaing. Versi singkatnya: tweet.md membaca post, ThreadGrab menyimpan post.
| Kemampuan | API tweet.md | ThreadGrab |
|---|---|---|
| Membaca post X sebagai Markdown | Ya (rendering sisi server) | Ya (ekspor lalu baca) |
| Satu panggilan HTTP per post | Ya | Tidak (multi-langkah) |
| Siap pipeline LLM | Ya (text/markdown, tanpa JSON) | Tidak (keluaran Markdown, badan lebih besar) |
| File media diunduh ke disk | Tidak (hanya tautan) | Ya |
| Melacak koreksi post dari waktu ke waktu | Tidak | Ya (ambil ulang + diff) |
| Mengarsipkan profil atau daftar massal | Berbasis kredit, terbatas | Ya (ekspor penuh) |
| Ekspor ke Notion / GitHub / S3 | Tidak | Ya |
| Dapat dihosting sendiri | Tidak | Tidak (hosting cloud) |
| Model harga | Per kredit | Berlangganan / sekali bayar |
Pembagian kerja alami: tweet.md untuk jalur baca dan loop agen (LLM Anda mengambil post, merangkumnya, menjawab pertanyaan tentangnya), ThreadGrab untuk jalur simpan (Anda menemukan utas yang layak dipertahankan, menyimpannya ke penyimpanan Anda sendiri dengan media dan riwayat versi). Kebanyakan kreator aktif akhirnya menggunakan keduanya — tweet.md untuk puluhan bacaan sekali pakai per hari, ThreadGrab untuk beberapa utas per minggu yang layak mendapatkan salinan permanen.
FAQ
Tingkat gratis memberi 5 permintaan post tunggal per IP per bulan kalender dengan thread=off dan userinfo=off dipaksa aktif. Itu cukup untuk pengujian kasual. Apa pun di luar itu (cakupan utas selain off, userinfo, profil, X Articles) memerlukan kunci API berbayar. Paket berbayar terkecil adalah $5 untuk 500 kredit (1 kredit per post yang dikembalikan, ditambah 2 kredit per penulis unik saat userinfo diaktifkan).
Ya. tweet.md menerbitkan SKILL.md di github.com/tweet-md/skill yang diinstal oleh Claude Code, Cursor, dan runtime agen lain via npx skills add tweet-md/skill. Skill tersebut mengajarkan agen untuk menulis ulang URL x.com dan twitter.com menjadi tweet.md sebelum mengambil, dan memanggil /i/api/convert saat hanya punya URL X lengkap. Padukan skill dengan kunci API di env agen Anda (TWEETMD_API_KEY) dan agen menangani sisanya.
thread mengontrol seberapa banyak percakapan yang kembali bersama post yang Anda minta. thread=off mengembalikan hanya post tunggal (tingkat gratis). thread=ancestors mengembalikan post plus rantai balasan di atasnya. thread=branch (default berbayar: branch-15) mengembalikan leluhur dulu, lalu balasan di bawah. thread=all mengembalikan seluruh percakapan termasuk cabang sejawat. Lampirkan -N untuk membatasi total post (2-500, default 20). branch-8 berarti: isi leluhur sampai 8, lalu balasan di bawah, tidak peduli seberapa panjang utas sebenarnya.
Markdown, selalu. tweet.md secara eksplisit menolak format=json. Badan respons adalah teks/markdown dengan judul, metadata post, dan teks post. Dengan format=obsidian Anda mendapat frontmatter YAML di sekitar Markdown yang sama, cocok untuk impor langsung ke vault Obsidian. Biaya kredit dan header (X-Tweetmd-Posts-Returned, X-Tweetmd-Credits-Charged, X-Tweetmd-Thread-Cap, X-Tweetmd-Cap-Hit) dikembalikan dalam header HTTP, tidak pernah ditempel ke badan.
Gunakan API tweet.md saat Anda ingin Markdown bersih untuk pipeline LLM, kueri sekali jalan, loop agen, atau impor Obsidian. Gunakan ThreadGrab saat ingin menyimpan utas: unduh file media (gambar, video, tangkapan layar) ke disk Anda sendiri, lacak koreksi post dari waktu ke waktu, arsipkan profil atau daftar lengkap secara massal, atau simpan pernyataan publik sebagai bukti dengan riwayat versi. tweet.md membaca post. ThreadGrab menyimpan post.