EN ID

X v11.90 Articles Scraper: threadgrab Long-Form 2026

11 Juni 2026 · 8 menit baca · oleh ThreadGrab

Jika Anda melakukan scraping X Articles dengan skrip yang berfungsi pada Maret 2026, kemungkinan skrip itu berhenti bekerja pada akhir Mei. Rilis v11.90 aplikasi seluler X memindahkan entri See All Articles dari tab halaman profil yang tersembunyi ke kontrol bersegmen tingkat atas, dan di belakang layar ia menukar endpoint REST publik dengan rute GraphQL baru. Scraper yang melakukan hard-code pada URL lama sekarang mendapatkan 200 dengan body kosong, format id artikel berubah dari numerik 18-digit menjadi base64 19-digit, dan body artikel kini berupa JSON blob dengan span entitas bernama alih-alih teks biasa. Postingan ini membahas apa yang berubah, mengapa scraper lama Anda rusak, dan cara menggunakan API threadgrab untuk mengambil tata letak v11.90 baru sebagai Markdown bersih dalam satu panggilan.

threadgrab telah diperbarui untuk menangani perubahan v11.90 secara native. Di bawah ini adalah referensi field baru, dua contoh kode siap pakai, dan perbandingan dengan dua pendekatan lain yang telah dicoba pengembang (X GraphQL mentah, dan proyek tweet.md). Jika Anda memelihara alat arsip X publik atau membangun data pelatihan LLM dari kreator long-form, ini adalah jalur terpendek menuju output yang berfungsi pada tahun 2026.

TL;DR. X v11.90 menghentikan /Articles/search.json, mengubah id artikel menjadi base64 19-digit, dan menjadikan body artikel sebagai daftar JSON entitas bernama. API threadgrab menyelesaikan ketiga perubahan tersebut: berikan URL artikel publik dan ia mengembalikan body Markdown bersih dengan **tebal**, [tautan], @sebutan, dan #tagar yang dipertahankan. Pengambilan artikel tunggal: satu GET, tanpa autentikasi, ~1,2 detik. Batch profil: paginasi dengan ?cursor= pada 20 artikel per halaman.

Apa yang Diubah X v11.90 pada Tata Letak Articles

Tiga hal berubah, dan semuanya independen — sebuah scraper dapat bertahan terhadap satu atau dua perubahan tetapi tidak ketiganya sekaligus.

1. Entri See All Articles dipindahkan

Sebelum v11.90, tautan "See All Articles" adalah sebuah tab di halaman profil kreator, tiga baris di bawah Posts, Replies, Media, dan Likes. Di v11.90 ia menjadi item pertama dalam kontrol bersegmen baru di bagian atas header profil, bersebelahan dengan Posts / Replies / Media. Perubahan yang terlihat kecil, tetapi permintaan yang mendasarinya berubah: tab lama memanggil /Articles/search.json?include_replies=false, entri baru memanggil /i/api/graphql/<hash>/ArticleTimeline. Apa pun yang di-hard-code ke jalur lama sekarang mendapatkan 200 dengan array kosong.

2. Format id artikel berubah

Id artikel lama adalah string numerik 18-digit (misalnya 1823456789012345678). Id baru adalah string base64 19 karakter dengan campuran huruf besar/kecil dan digit (misalnya a1B2c3D4e5F6g7H8i9J0). Id baru juga buram — ia tidak menyandikan timestamp publikasi seperti yang lama, sehingga scraper tidak dapat menyimpulkan tanggal publikasi dari id saja. URL yang berfungsi di bulan Maret sekarang 404 karena fragmen id ditolak oleh lapisan routing.

3. Body artikel kini berupa daftar JSON entitas bernama

Body lama adalah teks biasa dengan tanda bintang seperti markdown untuk tebal (**teks**) dan pola URL sudut untuk tautan. Body baru adalah array JSON dari span entitas, di mana setiap span memiliki field type (text, bold, link, mention, hashtag, media_ref) dan payload. Scraper teks naif kehilangan format karena mereka menggabungkan span text tanpa melintasi span bold, link, dan mention. Frasa tebal seperti **Freedom of Reach** tiba sebagai tiga span terpisah: span text berisi string kosong, span bold berisi Freedom of Reach, dan span text akhir. Jika dirangkai dengan salah, tebalnya hilang.

Bagaimana threadgrab Menangani Tata Letak Baru

API profil threadgrab membungkus ketiga perubahan. Anda memberikan URL artikel publik atau nama pengguna, dan threadgrab mengembalikan body Markdown datar beserta metadata. Logika konversi menelusuri span entitas bernama dalam urutan dokumen dan menghasilkan Markdown standar: text menjadi teks biasa, bold menjadi **teks**, link menjadi [teks](url), mention menjadi @username, hashtag menjadi #tag, dan media_ref menjadi ![alt](image_url) dengan teks alt diambil dari field alt_text span jika ada.

Hasilnya adalah string Markdown yang berputar bersih melalui renderer mana pun (md2rich, GitHub, Obsidian, pratinjau VS Code, md2pdf). threadgrab tidak menciptakan format yang tidak ditulis oleh penulis asli — jika penulis tidak menebalkan frasa, output tidak akan menebalkannya.

Pengambilan artikel tunggal (curl)

curl -s "https://threadgrab.com/api/profile?url=https://x.com/jack/status/a1B2c3D4e5F6g7H8i9J0" \
  | jq '.article | {title, author, published_at, body_markdown}'

Responsnya adalah objek JSON dengan lima field tingkat atas: title (string), author (objek dengan username, display_name, verified), published_at (string ISO 8601), body_markdown (Markdown yang diformat), dan media (array objek {type, url, alt_text} untuk gambar, video, dan jajak pendapat). Waktu respons rata-rata di edge Cloudflare AS bagian timur: 1,1 hingga 1,4 detik untuk artikel 2.000 kata, 0,6 hingga 0,9 detik untuk artikel 500 kata.

Batch profil (curl dengan paginasi kursor)

USERNAME="naval"
CURSOR=""
LIMIT=20

while true; do
  RESP=$(curl -s "https://threadgrab.com/api/profile/${USERNAME}/articles?cursor=${CURSOR}&limit=${LIMIT}")
  echo "$RESP" | jq '.articles[] | {title, published_at, id: .article_id}'
  CURSOR=$(echo "$RESP" | jq -r '.next_cursor')
  [ -z "$CURSOR" ] || [ "$CURSOR" = "null" ] && break
  sleep 1
done

Perulangan ini menelusuri feed Articles kreator halaman demi halaman. Setiap panggilan mengembalikan 20 artikel ditambah string next_cursor; ketika next_cursor kosong atau null, Anda telah mencapai akhir feed publik. Tidur satu detik di antara panggilan menjaga tingkat permintaan pada batas lunak 1 req/s/IP. Kreator dengan 200 artikel membutuhkan waktu sekitar 11 detik dari awal hingga akhir, termasuk overhead tidur.

Referensi Field: Bentuk Respons threadgrab v11.90

Objek JSON lengkap yang dikembalikan oleh endpoint artikel tunggal memiliki struktur di bawah ini. Field-field ini stabil per threadgrab v1.18 (Juni 2026).

Field Tipe Deskripsi
article_id string Id base64 19 karakter baru (format v11.90). Gunakan untuk caching atau pengambilan ulang nanti.
title string Judul artikel yang ditetapkan oleh penulis. Mungkin kosong untuk Artikel yang sangat pendek.
author.username string Handle X penulis tanpa @ di depan.
author.display_name string Nama tampilan penulis, mungkin berisi emoji dan spasi yang tidak biasa.
author.verified boolean True jika penulis memiliki lencana verifikasi X pada saat pengambilan.
published_at string (ISO 8601) Timestamp UTC dari publikasi asli. Bukan timestamp edit.
body_markdown string Body artikel lengkap sebagai Markdown, dengan tebal, tautan, sebutan, dan tagar yang dipertahankan.
media[] array Daftar objek media, masing-masing dengan type (image / video / poll), url, dan alt_text.
engagement object Snapshot likes, reposts, replies, quotes, dan views pada saat pengambilan. Angka mungkin tertunda 24 jam.
canonical_url string URL publik x.com/<user>/article/<id> dari artikel.

Field body_markdown adalah yang paling penting bagi sebagian besar pemanggil. Ini adalah string tunggal dengan baris baru yang dipertahankan dari sumber, dan sintaks tebal / tautan / sebutan / tagar / gambar dirender sebagai Markdown standar yang akan diinterpretasikan dengan benar oleh renderer mana pun. Jika Anda hanya membutuhkan teks biasa, salurkan hasilnya melalui sed atau alat Markdown-ke-teks favorit Anda untuk menghapus sintaks — konten teks asli dapat diperoleh kembali dalam satu langkah.

Perbandingan: threadgrab vs GraphQL Mentah vs tweet.md

Tiga pendekatan digunakan saat ini untuk scraping X Articles setelah perubahan v11.90. Berikut perbandingannya pada tiga hal yang rusak.

1. API threadgrab (direkomendasikan)

Kelebihan: menangani format id artikel baru, menelusuri body entitas bernama, mengembalikan Markdown bersih dengan format yang dipertahankan, tanpa autentikasi, tanpa token yang perlu dikelola, dibatasi rate pada 1 req/s/IP yang aman.

Kekurangan: hanya Articles publik (tanpa akun yang dilindungi), tidak ada revisi historis (hanya versi terbaru Artikel yang dikembalikan), tidak ada riwayat edit.

2. X GraphQL Mentah /ArticleTimeline

Kelebihan: tanpa perantara, Anda mengontrol header dan bentuk permintaan, Anda dapat menarik data mentah untuk kasus penggunaan yang tidak biasa (analitik engagement, grafik quote-post).

Kekurangan: memerlukan pemeliharaan session cookie atau bearer token khusus aplikasi, hash kueri GraphQL berputar setiap beberapa minggu, body entitas bernama memerlukan kode penelusuran khusus, dan satu permintaan buruk dapat membuat IP Anda dibatasi rate selama 15 menit.

3. tweet.md (proksi lokal sumber terbuka)

Kelebihan: sumber terbuka, berjalan lokal, tanpa server pihak ketiga, Anda dapat melakukan fork untuk output Markdown khusus.

Kekurangan: tweet.md dioptimalkan untuk postingan pendek bergaya thread, bukan untuk body Artikel long-form v11.90; tidak mempertahankan format entitas bernama; memerlukan session cookie X yang berfungsi pada pertama kali dijalankan.

Untuk kasus penggunaan "Saya ingin membaca Artikel ini secara offline sebagai Markdown" atau "Saya ingin membangun korpus postingan long-form untuk pelatihan LLM," threadgrab adalah jalur terpendek. Untuk kasus penggunaan "Saya sedang membangun produk analitik X real-time dan membutuhkan data engagement mentah," rute GraphQL tidak terhindarkan. tweet.md cocok untuk postingan dan thread pendek, tetapi kurang cocok untuk body Artikel baru.

Keterbatasan dan Apa yang Tidak Dilakukan threadgrab

Jujur tentang batasan alat lebih penting daripada menjual berlebihan. Daftar di bawah adalah apa yang tidak dilakukan threadgrab v1.18, per Juni 2026.

FAQ

Apa yang berubah di entri See All Articles X v11.90?

X v11.90 memindahkan entri See All Articles dari tab halaman profil yang tersembunyi ke kontrol bersegmen tingkat atas di header profil kreator. Entri baru menampilkan setiap postingan long-form (Articles, Threads di atas 1.000 karakter, dan Quote-Articles) sebagai daftar terpadu, dipaginasi 20 per halaman. Di belakang layar, entri ini sekarang memanggil endpoint GraphQL baru (/ArticleTimeline) alih-alih rute REST /Articles/search.json yang lama, sehingga scraper yang mengenai endpoint lama mendapatkan 404 atau array kosong.

Mengapa scraper X-Article lama saya rusak setelah v11.90?

Tiga alasan. Pertama, endpoint /Articles/search.json sudah tidak digunakan lagi pada akhir Mei 2026 dan sekarang mengembalikan 200 dengan body kosong untuk sebagian besar akun. Kedua, X menambahkan field article_id baru di v11.90 yang merupakan string base64 19-digit, menggantikan id numerik 18-digit lama; scraper yang mencoba membuat URL dari pola id lama mendapatkan 404. Ketiga, body artikel kini disajikan sebagai JSON blob dengan span entitas bernama (tebal, tautan, sebutan, tagar) alih-alih teks biasa dengan tanda bintang seperti markdown, sehingga scraper teks naif kehilangan formatnya.

Bagaimana cara scraping tata letak artikel X v11.90 baru dengan threadgrab?

Berikan URL artikel atau article_id baru ke API threadgrab. threadgrab menyelesaikan endpoint GraphQL /ArticleTimeline yang baru, mengambil body JSON entitas bernama, meratakannya ke Markdown (mempertahankan tebal, tautan, sebutan, dan tagar), dan mengembalikan teks bersih beserta metadata. Permintaan tipikal adalah GET https://threadgrab.com/api/profile?url=https://x.com/<user>/article/<id> tanpa autentikasi, dan responsnya adalah objek JSON dengan title, body_markdown, author, published_at, dan array media.

Bisakah saya melakukan batch-scrape setiap artikel dari profil kreator?

Ya. Gunakan endpoint batch profil threadgrab: GET https://threadgrab.com/api/profile/<username>/articles?cursor=<next_cursor>&limit=20. Responsnya menyertakan field next_cursor yang Anda berikan ke panggilan berikutnya hingga Anda mendapatkan kursor kosong. Endpoint ini dipaginasi 20 artikel sekaligus untuk mencerminkan paginasi X sendiri, dan berfungsi dengan tata letak v11.90 yang baru. Untuk batch-scrape tunggal 100+ artikel, perkirakan waktu panggilan 8 hingga 15 detik tergantung pada lampiran media.

Apakah threadgrab mempertahankan format tebal, tautan, dan sebutan dari body artikel baru?

Ya. Body artikel X v11.90 yang baru adalah daftar JSON span entitas (setiap span memiliki field type: text, bold, link, mention, hashtag, atau media_ref). threadgrab menelusuri daftar dan menghasilkan Markdown standar: span bold menjadi **teks**, span link menjadi [teks](url), span mention menjadi @username, span hashtag menjadi #tag, dan span media_ref menjadi ![alt](image_url). Outputnya berputar bersih melalui renderer Markdown mana pun (md2rich, GitHub, Obsidian) tanpa kehilangan format asli.

Apakah scraping artikel X v11.90 dengan threadgrab legal dan sesuai batas rate?

threadgrab hanya mengambil Articles publik, yang merupakan halaman web publik yang secara eksplisit diterbitkan X ke web terbuka untuk pengindeksan dan berbagi. API threadgrab memberlakukan batas rate 1 permintaan per detik per IP dan batas lunak 5.000 pengambilan artikel per hari, jauh di bawah ambang batas anti-penyalahgunaan X. Scraping konten publik untuk bacaan pribadi, penelitian, atau pengarsipan umumnya diizinkan berdasarkan Ketentuan Layanan X; menerbitkan ulang atau mengkomersialkan teks yang diambil tanpa izin penulis tidak diizinkan.

Coba pada Artikel Publik

Cara tercepat untuk melihat tata letak v11.90 baru berputar melalui threadgrab adalah dengan memilih Artikel publik apa pun di x.com, salin URL, dan jalankan contoh curl artikel tunggal di atas. Anda akan mendapatkan respons JSON bersih dalam waktu 1,5 detik di edge AS atau UE, dengan body dalam Markdown yang dapat Anda tempel ke Obsidian, GitHub gist, atau konverter md2rich untuk pratinjau berdampingan tentang bagaimana format dirender.

Scraping Artikel X sekarang — tanpa login, tanpa instalasi.

threadgrab menangani tata letak v11.90, id artikel baru, dan body entitas bernama. Tempel URL publik x.com/<user>/article/<id> mana pun.

Buka ThreadGrab

Bacaan Terkait