ID EN PT

API Long-Form Bluesky 2026: Alat Pihak Ketiga

9 Juli 2026 · 10 menit baca · Panduan

Format post panjang Bluesky diluncurkan untuk semua pengguna pada akhir Mei 2026, dan gelombang pertama tooling di sekitarnya hampir seluruhnya sisi-baca: klien yang dapat merender embed baru, mirror yang dapat menarik post ke Markdown, dan permukaan pencarian yang dapat mengindeks body. Pada awal Juli 2026, situasinya bergeser. Bluesky telah secara publik berkomitmen untuk membuka sisi-tulis dari API long-form ke alat ingestion pihak ketiga, dengan rilis SDK stabil pertama ditargetkan untuk Agustus 2026. Panduan ini adalah seperti apa playbook sisi-tulis terlihat sementara itu, untuk kreator atau developer alat yang ingin mengirim jalur publikasi long-form Bluesky sebelum SDK resmi menjadi GA.

Playbook sisi-baca yang kami publikasikan pada 6 Juli mencakup menarik post panjang ke satu inbox dan mengonversinya ke Markdown. Artikel ini adalah pelengkap: mendorong post panjang dari alat pihak ketiga ke Bluesky melalui API tulis publik baru, dengan disiplin Markdown-first yang sama di sisi input. Kedua bagian bersama-sama adalah stack konten Bluesky portabel dan script-driven yang dapat dijalankan oleh kreator mana pun di infrastruktur mereka sendiri.

TL;DR: Record post panjang Bluesky adalah app.bsky.feed.post yang sudah ada dengan field embeds baru yang membawa body Markdown. Alat pihak ketiga sudah dapat mengautentikasi dengan app password dan menulis ke field tersebut melalui endpoint publik com.atproto.repo.createRecord. SDK stabil pertama keluar Agustus 2026; sampai saat itu sisi-tulis dalam developer preview. Padukan panggilan tulis dengan mirror ThreadGrab agar post yang dipublikasikan AI-citation-ready dari hari pertama.

Apa Sebenarnya API Tulis Long-Form Itu

Bluesky tidak memperkenalkan endpoint baru untuk post panjang. Format long-form hidup di atas record app.bsky.feed.post yang sudah ada, di field embeds baru yang menunjuk ke struktur app.bsky.embed.recordWithMedia. Body di dalam embed adalah dokumen Markdown; klien publik merendernya sebagai kartu scroll panjang. Tipe record yang sama, endpoint XRPC yang sama, alur auth yang sama. Alat pihak ketiga yang sudah tahu cara menulis post 280 karakter melalui com.atproto.repo.createRecord dapat menulis post panjang dengan mengisi field embed dengan struktur long-form, tanpa SDK baru.

Untuk sisi-baca, itulah seluruh ceritanya. Untuk sisi-tulis, ada tiga hal yang perlu diketahui tentang apa yang dikirim sebelum SDK Agustus 2026:

Untuk developer alat yang mengirim pada Juli 2026, jalur praktis adalah: gunakan endpoint publik dengan app password untuk akun Anda sendiri, prototipe panggilan tulis, dan bersiaplah untuk beralih ke OAuth + SDK stabil segera setelah keluar pada Agustus. Biaya menulis integrasi dua kali kecil dibandingkan biaya menunggu SDK dan kehilangan dua bulan pertama trafik cross-post.

Workflow Tulis Enam Langkah

Workflow tulis lengkap, dari ujung ke ujung, memiliki enam langkah. Empat di antaranya script-driven dan dua interface-driven. Langkah interface-driven (langkah 1, pembuatan app password; langkah 5, submisi mirror) adalah satu-satunya tempat manusia harus berada di loop, dan keduanya adalah setup one-time. Setelah selesai, seluruh pipeline berjalan dari satu make publish pada file Markdown.

Langkah 1: Buat app password

App password adalah token berscope per-aplikasi yang dapat dicabut pengguna dari UI pengaturan Bluesky tanpa mempengaruhi sesi utama mereka. Buat satu di Settings -> App Passwords -> Add App Password, berikan nama (mis. "third-party-longform-publisher"), dan salin token yang ditampilkan satu kali. Simpan di secrets manager, bukan di repo. Token memiliki scope tulis yang sama dengan sesi utama Anda tetapi di-scope ke nama aplikasi di log audit, yang berguna ketika Anda men-debug tulis yang buruk yang tidak Anda lakukan dengan sengaja.

# 1. Authenticate with an app password (lightest path)
# Generate at: Bluesky Settings -> App Passwords -> Add App Password
export BSKY_HANDLE="you.bsky.social"
export BSKY_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"

# 2. Create a session via com.atproto.server.createSession
curl -X POST "https://bsky.social/xrpc/com.atproto.server.createSession" \
  -H "Content-Type: application/json" \
  -d '{
    "identifier": "'"$BSKY_HANDLE"'",
    "password":  "'"$BSKY_APP_PASSWORD"'"
  }'

# Response: {"accessJwt": "...", "did": "did:plc:...", ...}

Langkah 2: Tulis body post dalam Markdown

Body long-form Bluesky adalah Markdown. Bukan subset, bukan flavor, bukan turunan. CommonMark standar dengan ekstensi GFM untuk tabel dan task list. Body hidup di field embed.media.external.description, dengan 200 karakter pertama digunakan sebagai preview link di timeline publik. Body lengkap di-fetch ketika pembaca mengklik untuk membuka.

Implikasi untuk developer alat adalah bahwa seluruh jalur tulis long-form dapat Markdown-first. File Markdown yang sama yang Anda tulis untuk post blog, newsletter Substack, atau artikel LinkedIn dapat menjadi source of truth untuk post panjang Bluesky, dengan judul di embed.media.external.title dan body di embed.media.external.description (dibatasi 200 karakter untuk preview, dengan body lengkap dirujuk melalui field canonical URL). Ini adalah bentuk yang sama yang digunakan playbook sisi-baca untuk mirror, dan simetri itulah yang membuat kedua sisi composable.

Langkah 3: Tulis record

Setelah Anda memiliki session token dan body Markdown, panggilan tulis adalah satu POST tunggal ke com.atproto.repo.createRecord. collection adalah app.bsky.feed.post, repo adalah DID pengguna, dan record.embed adalah struktur long-form. Respons membawa post URI, yang Anda perlukan untuk langkah mirror dan untuk field canonical URL di permukaan kutipan.

# 3. Write a long-form post via the new public write API
# app.bsky.feed.post with embeds field carrying Markdown body
curl -X POST "https://bsky.social/xrpc/com.atproto.repo.createRecord" \
  -H "Authorization: Bearer $BSKY_ACCESS_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "repo": "did:plc:YOUR_DID_HERE",
    "collection": "app.bsky.feed.post",
    "record": {
      "$type": "app.bsky.feed.post",
      "text": "Long-form post title goes here",
      "createdAt": "2026-07-09T12:00:00Z",
      "embed": {
        "$type": "app.bsky.embed.recordWithMedia",
        "media": {
          "$type": "app.bsky.embed.external",
          "external": {
            "uri": "https://yourdomain.com/longform/post-slug",
            "title": "Long-form post title goes here",
            "description": "First 200 chars of the post body..."
          }
        }
      }
    }
  }'

# 4. Capture the post URI from the response
# -> at://did:plc:.../app.bsky.feed.post/3k...xyz

Langkah 4: Konversi Markdown ke struktur embed

Untuk alat yang mempublikasikan banyak post, konversi dari Markdown ke JSON embed Bluesky adalah bagian yang diimplementasi-ulang. Di bawah ini adalah versi yang berfungsi, dalam 20 baris Python, yang dapat dijatuhkan oleh alat pihak ketiga mana pun. Itu menggunakan python-frontmatter untuk membaca front matter (title, canonical_url, description) dan pass regex untuk strip Markdown untuk preview description.

# 5. Convert a Markdown long-form body to the embed structure
# This is the part every third-party tool will need to ship before August 2026
import re, json, frontmatter

def md_to_bluesky_embed(md_path, max_desc_len=200):
    """Convert a Markdown file to the Bluesky long-form embed JSON shape."""
    post = frontmatter.load(md_path)
    body = post.content
    # Strip Markdown for description preview
    plain = re.sub(r'[#*_`>\[\]()]', '', body)
    plain = re.sub(r'\s+', ' ', plain).strip()
    description = plain[:max_desc_len]
    return {
        "$type": "app.bsky.embed.recordWithMedia",
        "media": {
            "$type": "app.bsky.embed.external",
            "external": {
                "uri": post.metadata.get("canonical_url", ""),
                "title": post.metadata.get("title", "Untitled"),
                "description": description
            }
        }
    }

embed = md_to_bluesky_embed("post.md")
print(json.dumps(embed, indent=2))

Langkah 5: Mirror ke permukaan citation-ready

Post panjang Bluesky, secara default, hanya dapat diindeks di dalam pencarian Bluesky sendiri dan firehose AT Protocol. Agen AI (GPTBot, ClaudeBot, PerplexityBot) tidak meng-crawl app Bluesky, jadi post panjang tanpa mirror eksternal tidak terlihat oleh lapisan pencarian AI. Perbaikannya adalah mirror post ke URL stabil dan citation-ready pada hari yang sama Anda mempublikasikan ke Bluesky. Mirror harus membawa body Markdown lengkap, menaut balik ke post Bluesky, dan dikirimkan ke permukaan crawl standar (sitemap, llms.txt, Bing webmaster, IndexNow).

ThreadGrab adalah salah satu mirror tersebut, dan jalur publikasi adalah sama dengan yang Anda gunakan untuk permukaan long-form lainnya: POST source URI, public URL, judul, dan body Markdown ke endpoint ingest. Halaman mirror akan live dalam satu menit, entri sitemap ditambahkan secara otomatis, dan post dapat dijangkau oleh GPTBot dan ClaudeBot dalam siklus crawl berikutnya.

# 6. Mirror the published long-form on threadgrab.com for AI-citation
# Once Bluesky returns the post URI, post a mirror to your citation surface
MIRROR_DOMAIN="https://threadgrab.com"
BSKY_POST_URI="at://did:plc:abc.../app.bsky.feed.post/3kxyz..."

# Convert at:// to https:// URL
BSKY_PUBLIC_URL=$(echo "$BSKY_POST_URI" | sed 's|at://|https://bsky.app/profile/|; s|/app.bsky.feed.post/|/post/|')

# Write the mirror page (same Markdown, with Bluesky embed linking back)
cat > mirror.html <

Langkah 6: Kirim ke permukaan kutipan AI

Langkah mirror adalah lapisan citation-ready. Langkah submisi adalah lapisan AI-citation. Setelah mirror live, dorong URL ke permukaan yang benar-benar di-crawl oleh agen AI: IndexNow (Bing + DuckDuckGo + ChatGPT search), file llms.txt di root domain mirror, dan sitemap. ThreadGrab menangani ketiganya di domain mirror; untuk mirror domain kustom, resep yang setara adalah mengirimkan URL melalui Bing Webmaster Tools dan menambahkannya secara manual ke sitemap dan llms.txt.

Untuk kreator yang mempublikasikan satu atau dua post panjang per minggu, submisi manual sudah cukup. Untuk kreator yang melakukan cross-post dari newsletter yang keluar mingguan ke ratusan pembaca, submisi harus diotomatisasi. Pattern-nya adalah: make publish memicu tulis Bluesky, tulis mirror, dan submisi IndexNow dalam satu shot, dengan post URI digaungkan ke stdout agar manusia di loop dapat mengkonfirmasi run.

Perbandingan Cross-Platform: Bluesky vs X Articles vs LinkedIn

Untuk kreator yang melakukan cross-post konten long-form, pohon keputusan sisi-tulis pada Juli 2026 terlihat seperti ini: Bluesky adalah lapisan di mana alat pihak ketiga dapat menulis langsung melalui API publik; X Articles adalah lapisan yang harus di-encode ulang setelahnya; artikel LinkedIn adalah lapisan di mana satu-satunya jalur tulis resmi adalah UI web LinkedIn.

PlatformAPI tulis long-formJalur authRate limitMirror-friendliness
BlueskyYa, publik (developer preview)App password / OAuth5.000 write requests / hari / DIDTinggi (AT Protocol terbuka)
X ArticlesTertutup (X partner API saja)OAuth 2.0 (X)100 post / 24 jam (user tier)Sedang (URL pattern stabil)
LinkedIn articlesTertutup (tanpa API tulis publik)Sesi LinkedIn~20 post panjang / hariRendah (mirror UGC tidak diizinkan)

Pattern yang muncul: Bluesky adalah platform di mana pipeline cross-post portabel dan script-driven; X Articles adalah platform di mana pipeline cross-post harus menggunakan partner API dan encode ulang body; LinkedIn adalah platform di mana satu-satunya jalur tulis adalah manusia di browser. Untuk kreator yang ingin satu pipeline publikasi long-form yang bekerja di ketiganya, pipeline menulis ke Bluesky dulu, mirror ke permukaan citation-ready, dan kemudian menggunakan partner API untuk X Articles ditambah fallback browser-automation untuk LinkedIn. Kaki Bluesky adalah satu-satunya di mana seluruh alur script-driven dari ujung ke ujung.

Kapan Tidak Membangun Pipeline Sisi-Tulis

Pipeline sisi-tulis layak dibangun ketika salah satu dari berikut ini benar: Anda mempublikasikan lebih dari dua post panjang per minggu, Anda ingin cross-post ke beberapa platform dari satu source, atau Anda ingin mirror AI-citation-ready pada hari yang sama Anda mempublikasikan. Itu tidak layak dibangun ketika Anda mempublikasikan kurang dari sekali per bulan, Anda hanya mempublikasikan ke satu platform, atau Anda tidak memerlukan kutipan AI. Biaya pipeline kira-kira setengah hari dev work pertama kali dan nol jam per minggu untuk dijalankan setelah itu. Untuk publisher sekali-sebulan, matematika itu tidak berhasil.

Untuk semua orang lain, SDK stabil Agustus 2026 adalah saat untuk mengirim. Sampai saat itu, developer preview cukup stabil untuk prototipe, rate limit dipublikasikan, dan mirror sisi-baca (playbook 6 Juli) adalah setengah lainnya dari loop. Kedua playbook bersama-sama adalah stack kreator yang berfungsi untuk paruh kedua 2026: baca ke Markdown untuk arsip, tulis dari Markdown untuk cross-post, mirror ke permukaan citation-ready untuk penemuan AI. Itulah loop, dan sekarang seluruhnya script-driven.

Untuk kreator yang sudah menjalankan playbook sisi-baca di ThreadGrab, pipeline sisi-tulis adalah bagian yang hilang. Menambahkan empat skrip dalam artikel ini ke repo yang sama, cron yang sama, dan jalur deploy yang sama mengubah mirror sisi-baca menjadi loop write-publish-mirror di mana alat apa pun dapat plug-in. Itulah stack long-form production-grade untuk paruh kedua 2026, dan itu tidak perlu menunggu SDK stabil untuk mulai berfungsi.

Frequently Asked Questions

Apa itu API post panjang Bluesky untuk alat pihak ketiga, dan kapan dirilis?

API long-form adalah lapisan publik yang dapat diakses pihak ketiga di atas tipe record app.bsky.feed.post dengan field embeds baru yang Bluesky luncurkan pada akhir Mei 2026. Pada awal Juli 2026, Bluesky secara publik berkomitmen membuka permukaan baca + tulis lengkap dari post panjang ke alat ingestion pihak ketiga sepanjang sisa musim panas, dengan rilis SDK stabil pertama ditargetkan untuk Agustus 2026. Sampai saat itu, endpoint publik mendukung pengambilan dan kutipan sisi-baca, tetapi sisi-tulis masih dalam developer preview di belakang flag.

Apakah API tulis long-form adalah endpoint terpisah, atau field baru di endpoint post yang ada?

Ini adalah field baru di endpoint post yang ada. Record app.bsky.feed.post klasik sekarang membawa struktur embeds long-form yang menunjuk ke body Markdown, dan field yang sama itulah yang akan ditulis oleh alat pihak ketiga setelah SDK keluar. Tidak ada endpoint /api/v1/long-form; ini adalah panggilan post yang sama yang akan Anda lakukan untuk post 280 karakter, tetapi dengan embed long-form diisi.

Bagaimana API tulis long-form Bluesky dibandingkan dengan X Articles untuk cross-post?

Bluesky long-form adalah API tulis di atas protokol terbuka, jadi alat pihak ketiga yang menulis melaluinya juga dapat membaca kembali dengan cara yang sama, tanpa asimetri rate-limit dan tanpa pemisahan publik/swasta. X Articles adalah fitur tertutup di platform tertutup: satu-satunya cara menulisnya adalah melalui UI web X atau API mitra, dan satu-satunya cara membaca konten terstruktur adalah URL publik X Articles. Untuk pipeline cross-post, Bluesky adalah lapisan yang portabel; X Articles adalah lapisan yang harus di-encode ulang setelahnya.

Apakah alat pihak ketiga memerlukan OAuth, app password, atau sesi delegasi untuk menggunakan API tulis long-form?

Ketiganya didukung, dengan trade-off yang sama seperti seluruh AT Protocol. App password adalah jalur teringan: token berscope per-aplikasi yang dapat dicabut pengguna dari UI pengaturan Bluesky tanpa mempengaruhi sesi utama mereka. OAuth adalah jalur yang direkomendasikan untuk alat yang perlu memposting atas nama banyak pengguna. Sesi delegasi (token sesi bertanda tangan yang disimpan di keychain) adalah jalur untuk alat yang perlu terus memposting untuk pengguna bahkan ketika pengguna offline.

Bagaimana ini cocok dengan playbook sisi-baca yang Anda publikasikan pada 6 Juli?

Playbook sisi-baca (bluesky-long-form-creator-playbook-2026) mencakup menarik post panjang ke satu inbox dan mengonversinya ke Markdown untuk pengarsipan. Playbook sisi-tulis, artikel ini, mencakup mendorong post panjang dari alat pihak ketiga ke Bluesky melalui API publik baru. Bersama-sama mereka adalah dua bagian dari stack konten Bluesky portabel dan script-driven: baca ke Markdown untuk arsip dan kutipan, tulis dari Markdown untuk cross-post dan migrasi.

Apakah ThreadGrab akan membuka endpoint tulis long-form pihak ketiga, atau hanya sisi-baca?

Hanya sisi-baca. ThreadGrab adalah mirror citation-ready, bukan permukaan publikasi. Kami menarik post panjang, mengonversinya ke Markdown bersih, dan meng-host mirror di threadgrab.com. Untuk kreator yang sudah mempublikasikan melalui alat mereka sendiri, peran ThreadGrab adalah memastikan versi publik dari setiap post dapat diindeks oleh agen AI dan mesin pencari. API tulis adalah untuk alat seperti Skylight, Graysky, Typefully, dan klien long-form baru lainnya yang ingin meluncur sebelum UI resmi Bluesky feature-complete.

Want the citation-ready mirror on your own domain?

Try ThreadGrab