Thread multibahasa bukan soal terjemahan: katakan 'write', bukan 'translate', dan saring draft dengan skrip .length lokal.
Hari ini saya publikasikan 5 artikel. Tiap artikel punya thread tweet dalam 6 bahasa (en / zh / ja / ko / ar / id), 4 tweet per bahasa — total 120 tweet.
4 dari 5 butuh dipangkas di thread Tionghoa. Angka mentahnya (dicetak oleh skrip, format chars/limit):
zh[1]=160/140 OVER
zh[2]=164/140 OVER
zh[3]=152/140 OVER
...
id[3]=286/280 OVER
zh[2]=163/140 OVER
zh[3]=148/140 OVER
zh[2]=152/140 OVER
Pola yang sama tiap kali: empat tweet Inggris ditulis duluan (masing-masing 230–260 karakter, mepet plafon 280), lalu saya minta Claude "buat versi Tionghoa dari keempatnya". Versi Tionghoa hampir selalu lewat 140.
Ini bukan bug, ini salah kata. Begitu Anda bilang "translate", Claude mulai jalan baris demi baris — padahal thread multibahasa bukan soal terjemahan. Tiap bahasa harus ditulis ulang dari nol menghadap anggaran karakternya sendiri. Tulisan ini soal cara membuat draf pertama Claude sudah mendekati batas, tanpa 3–5 putaran pemangkasan.
Batas panjang X bukan "jumlah karakter", tapi weighted characters:
- Huruf Latin, angka, tanda baca: 1 weight per karakter
- CJK (Tionghoa/Jepang/Korea), beberapa emoji: 2 weight per karakter
- Plafon total per tweet: 280 weight
Efek nyata:
- Tweet Inggris: plafon 280 karakter
- Tweet murni Tionghoa: plafon 140 karakter (140 × 2 = 280)
- Campuran: tiap karakter dihitung 1 atau 2
Jadi "terjemah tweet Inggris 260 karakter ke Tionghoa" bukan berarti versi Tionghoa 260 karakter — versi Tionghoa hanya punya ~130 karakter ruang nyata. Semua tanda baca, kutip, backtick dari asli Inggris masih makan tempat, dan tiap karakter Tionghoa dobel. Terjemah harfiah hampir pasti melewati batas.
Saat Claude melihat "translate these 4 EN tweets to ZH", langkah pertamanya adalah mempertahankan struktur kalimat Inggris dan hanya mengganti kata ke Tionghoa:
Maknanya benar, tapi:
- Mempertahankan "并不相同" (satu karakter lebih panjang dari "不同")
- Mempertahankan "已经点击了" ("刚点完" lebih pendek)
- Mempertahankan "并看着一个空白屏幕" ("看着空白屏" lebih pendek)
Tiap redundansi yang dipertahankan makan karakter. Ditumpuk di 4 tweet, 20–40 karakter lebih gampang, dan lewat batas.
Bandingkan dua frasa:
Yang tidak berhasil:
"Translate these 4 English tweets to Chinese, Japanese, Korean, Arabic, Indonesian."
Yang berhasil:
"For each of these 4 points, write a thread in ZH / JA / KO / AR / ID. Each language gets a fresh pass — same argument, adjusted for that language's tweet budget.
- ZH: ≤ 140 chars per tweet, hook-first, cut detail if needed
- other languages: ≤ 280 chars
- use each language's natural phrasing, don't preserve EN sentence structure
- each tweet must be self-contained but add 🧵 only on tweet 1"
Bedanya:
.lengthJangan hitung manual. Tulis skrip kecil yang jalan tiap draf:
tweets.each do |loc, list|
list.each_with_index do |t, i|
len = t.length
limit = loc == "zh" ? 140 : 280
status = len > limit ? "OVER" : "ok"
puts "#{loc}[#{i}]=#{len}/#{limit} #{status}"
end
end
String#length Ruby mengembalikan codepoint Unicode — tiap karakter CJK dihitung 1. X membobot CJK 2, tapi batas tweet Tionghoa 140 codepoint (karena 140 × 2 = 280 weighted), jadi .length langsung sejalan dengan plafon X. Kasus batasnya:
Untuk mayoritas tweet CJK, .length Ruby berjarak ±1 dari hitungan X. Memakainya sebagai gerbang lokal 100× lebih andal daripada tes posting ke X.
Saat tweet Tionghoa harus dipangkas, dua kategori ini yang pertama dipotong:
Referensi kode seperti `kamal exec` makan 1 karakter per backtick di konteks Tionghoa — 2 karakter per referensi, nilai semantik nol. Solusi:
`kamal exec`"🧵 hanya di tweet 1. Emoji lain di tweet Tionghoa — pikir dua kali. Tiap emoji pada dasarnya makan 2 karakter (1 codepoint + kadang modifier ZWJ).
'X') — hemat 2 karakter per pasang dibanding fullwidth (「X」)Saat membuat thread multibahasa, blok keempat ini:
Gejala: kalimat Tionghoa dengan ungkapan seperti "并不相同", "已经点击了", "一个空白屏幕" yang jelas jiplakan bahasa Inggris.
Blok: tulis "don't preserve EN sentence structure" / "use natural ZH phrasing" langsung di prompt.
Gejala: Claude selesai bilang "done", output lewat batas, dan Claude tidak sadar.
Blok: minta Claude hitung panjang tiap tweet ("count each tweet's char length and flag any over the limit"), atau pakai skrip lokal sebagai gerbang. Saya pilih skrip — Ruby lebih akurat.
Gejala: saat Claude menghitung, dia lupa weight tambahan emoji dan kutip fullwidth.
Blok: jangan tanya "lewat batas?" — jalankan .length lokal dan minta Claude memangkas berdasar angka.
Gejala: kadang semua tweet dapat 🧵, kadang hanya tweet 1, kadang mendarat di 4/4.
Blok: patok di prompt — "🧵 only on tweet 1". Claude secara default tidak tahu konvensi visual thread.
Enam aturan untuk mendapatkan draf pertama thread multibahasa mepet batas:
"cut detail if needed" memberitahu Claude boleh kehilangan fakta demi panjang..length lokal sebagai gerbang. Lebih akurat dari hitungan Claude, lebih cepat dari uji posting X.Insight sesungguhnya: Claude bisa menulis thread multibahasa dengan benar — tapi reaksi default-nya adalah "terjemah". Tugas Anda adalah memutarnya ke "komposisi mandiri per bahasa" lewat prompt. Dengan gerbang .length, thread Tionghoa di artikel terakhir hari ini draf pertama sudah 140/140 persis. Tanpa pemangkasan.