Free

ให้ Claude เขียน thread ทวีตหลายภาษาโดยไม่เกินลิมิต

Thread หลายภาษาไม่ใช่ปัญหาการแปล: บอกว่า 'write' ไม่ใช่ 'translate' แล้วกรองดราฟต์ด้วยสคริปต์ .length บนเครื่อง


วันนี้เผยแพร่ 5 บทความ แต่ละบทความมี thread ทวีต 6 ภาษา (en / zh / ja / ko / ar / id) ภาษาละ 4 ทวีต — รวม 120 ทวีต

4 ใน 5 ต้องมาตัดทอน thread ภาษาจีน ตัวเลขดิบ (script พิมพ์ออกมาในรูปแบบ 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

รูปแบบเดิมทุกครั้ง: เขียน 4 ทวีตภาษาอังกฤษก่อน (แต่ละทวีต 230–260 ตัวอักษร ใกล้เพดาน 280) จากนั้นให้ Claude "สร้างเวอร์ชันจีนจากทั้งสี่" เวอร์ชันจีนเกิน 140 เกือบทุกครั้ง

นี่ไม่ใช่บั๊ก แต่เป็นคำที่ผิด ทันทีที่คุณพูด "translate" Claude จะเริ่มทำทีละประโยค — แต่ thread หลายภาษาไม่ใช่ปัญหาการแปล แต่ละภาษาต้องเขียนใหม่จากศูนย์ภายใต้งบประมาณตัวอักษรของตัวเอง บทความนี้อธิบายวิธีให้ดราฟต์แรกของ Claude ใกล้ลิมิตทันที ไม่ต้องเผา 3–5 รอบในการตัด


ต้นตอ: X คิดน้ำหนัก CJK สองเท่า × Claude ดีฟอลต์แปลตามตัว

กฎการนับตัวอักษรของ X

ลิมิตความยาวของ X ไม่ใช่ "จำนวนตัวอักษร" แต่เป็น weighted characters:
- อักษรละติน ตัวเลข เครื่องหมายวรรคตอน: 1 weight ต่อตัวอักษร
- อักษร CJK (จีน/ญี่ปุ่น/เกาหลี), emoji บางตัว: 2 weight ต่อตัวอักษร
- เพดานรวมต่อทวีต: 280 weight

ในทางปฏิบัติ:
- ทวีตภาษาอังกฤษ: เพดาน 280 ตัวอักษร
- ทวีตภาษาจีนล้วน: เพดาน 140 ตัวอักษร (140 × 2 = 280)
- ผสม: ตัวอักษรต่อตัวนับ 1 หรือ 2

ดังนั้น "แปลทวีตอังกฤษ 260 ตัวอักษรเป็นจีน" ไม่ได้หมายถึงเวอร์ชันจีน 260 ตัวอักษร — เวอร์ชันจีนมีพื้นที่จริงประมาณ 130 ตัวอักษร เครื่องหมายวรรคตอน เครื่องหมายคำพูด และ backtick ของต้นฉบับอังกฤษยังกินพื้นที่ และตัวอักษรจีนทุกตัวนับเป็นสองเท่า การแปลตามตัวแทบจะการันตีว่าเกิน

คำว่า "translate" จุดโหมดตามตัวของ Claude

เมื่อ Claude เห็น "translate these 4 EN tweets to ZH" การเคลื่อนไหวแรกของมันคือ คงโครงสร้างประโยคอังกฤษไว้ แล้วเปลี่ยนคำเป็นจีนเท่านั้น:

  • EN: "Production 400/500 isn't like local. User's already staring at a blank screen after hitting Pay."
  • ZH ตามตัวของ Claude: "生产环境的 400/500 和本地并不相同。用户已经点击了『付款』并看着一个空白屏幕。" (40 ตัวอักษรจีน)

ความหมายถูก แต่:
- คง "并不相同" ไว้ (ยาวกว่า "不同" หนึ่งตัว)
- คง "已经点击了" ไว้ ("刚点完" สั้นกว่า)
- คง "并看着一个空白屏幕" ไว้ ("看着空白屏" สั้นกว่า)

ความซ้ำซ้อนทุกจุดที่คงไว้กินตัวอักษร สะสมข้าม 4 ทวีต เกิน 20–40 ตัวอักษรได้สบาย ๆ และเกินลิมิตไปแล้ว

Prompt ที่ได้ผล: "เขียนใหม่" ไม่ใช่ "แปล"

เทียบสองการเขียน:

ที่ไม่ได้ผล:

"Translate these 4 English tweets to Chinese, Japanese, Korean, Arabic, Indonesian."

ที่ได้ผล:

"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"

ความต่าง:

  1. "write" แทน "translate" — จุดโหมดประพันธ์ของ Claude ไม่ใช่โหมดแปล
  2. "fresh pass" / "same argument" — อนุญาตให้ Claude จัดประโยคใหม่
  3. "don't preserve EN sentence structure" — บล็อกพฤติกรรมดีฟอลต์ตรง ๆ
  4. "cut detail if needed" — อนุญาตให้ทิ้งเนื้อหาเพื่อความยาว (ถ้าไม่ให้ Claude เก็บทุกข้อเท็จจริงและเกิน)
  5. งบประมาณที่ชัดเจนต่อภาษา — "≤ 140 chars" ได้ผลกว่า "short" 100 เท่า

Sanity check เฉพาะเครื่อง: Ruby + .length

อย่านับด้วยตา เขียนสคริปต์เล็ก ๆ ให้รันทุกดราฟต์:

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 คืน Unicode codepoints — ตัวอักษร CJK แต่ละตัวนับเป็น 1 X คิดน้ำหนัก CJK เป็น 2 แต่ ลิมิตทวีตจีน 140 codepoints (เพราะ 140 × 2 = 280 weighted) ดังนั้น .length ตรงกับเพดานของ X โดยตรง เคสขอบ:

  • จำนวน codepoints ของ emoji (🧵 เป็น 1 codepoint แต่ emoji บางตัวเป็นลำดับหลาย codepoint)
  • อักขระความกว้างศูนย์ (ZWJ ฯลฯ)

สำหรับทวีต CJK ส่วนใหญ่ .length ของ Ruby ต่างจากการนับของ X ±1 ตัวอักษร ใช้เป็นประตูเฉพาะเครื่องชนะการทดลองโพสต์บน X 100 เท่า

กับดัก emoji และ backtick

เมื่อต้องตัดทวีตจีน สองประเภทนี้โดนก่อน:

Backtick

การอ้างโค้ดแบบ `kamal exec` ในบริบทจีนกิน 1 ตัวอักษรต่อ backtick — 2 ตัวอักษรต่อการอ้าง ไม่ได้ให้ค่าทางความหมาย วิธีแก้:

  • ใช้ทวิภาค (colon): "命令 kamal exec" สั้นกว่า "`kamal exec`"
  • ถ้าจำเป็นต้องเก็บ backtick ให้เฉพาะตัวระบุหลัก ไม่ใช่ทั้งบรรทัด shell

Emoji

🧵 เฉพาะทวีตแรก emoji อื่นในทวีตจีน — คิดสองรอบ เพราะ emoji แต่ละตัวโดยพื้นฐานคือ 2 ตัวอักษร (1 codepoint + บางครั้งมี ZWJ modifier)

วรรคตอน fullwidth vs halfwidth

  • วรรคตอน CJK (「」、,。——): 2 weight ต่อตัวอักษร
  • วรรคตอน ASCII ("",-): 1 weight ต่อตัวอักษร
  • เมื่อทวีตจีนปนเครื่องหมายคำพูด: ใช้เครื่องหมายคำพูด halfwidth ('X') — ประหยัด 2 ตัวอักษรต่อคู่เทียบกับ fullwidth (「X」)

ทิศทาง 4 ข้อที่ Claude พลาดดีฟอลต์ ต้องสกัด

เวลาให้ Claude สร้าง thread หลายภาษา บล็อก 4 ข้อนี้:

1. แปลตามตัวโดยคงโครงสร้าง EN

อาการ: ประโยคจีนที่มีวลีอย่าง "并不相同", "已经点击了", "一个空白屏幕" — ชัดเจนว่าเป็นการลอกจากอังกฤษ

สกัด: เขียนใน prompt โดยตรง "don't preserve EN sentence structure" / "use natural ZH phrasing"

2. ไม่ตรวจความยาวเอง

อาการ: Claude เสร็จแล้วบอก "done" เอาต์พุตเกินลิมิตแต่มันไม่รู้

สกัด: ให้ Claude นับความยาวแต่ละทวีตเอง ("count each tweet's char length and flag any over the limit") หรือใช้สคริปต์เฉพาะเครื่องเป็นประตู ผมเลือกสคริปต์ — Ruby แม่นกว่า

3. ไม่คิดน้ำหนักเครื่องหมายคำพูดและ emoji

อาการ: เวลา Claude นับ มันลืม weight เพิ่มเติมของ emoji และเครื่องหมายคำพูด fullwidth

สกัด: อย่าถาม Claude ว่า "เกินลิมิตไหม" — รัน .length เฉพาะเครื่อง แล้วให้ตัดตามตัวเลข

4. ตำแหน่ง 🧵 ไม่คงเส้นคงวา

อาการ: บางครั้งทุกทวีตมี 🧵 บางครั้งเฉพาะทวีตแรก บางครั้งไปอยู่ที่ 4/4

สกัด: ตรึงใน prompt — "🧵 only on tweet 1" Claude ไม่รู้ธรรมเนียมภาพของ thread เป็นดีฟอลต์

เช็กลิสต์

6 กฎให้ดราฟต์แรก thread หลายภาษาชิดลิมิต:

  1. พูด "write" ไม่ใช่ "translate" Translate จุดโหมดตามตัว = คงโครงสร้าง EN = เกิน
  2. งบประมาณชัดเจนต่อภาษา "≤ 140 chars" ได้ผลกว่า "short" 100 เท่า
  3. อนุญาตให้ตัดเนื้อหา "cut detail if needed" บอก Claude ว่ายอมเสียข้อเท็จจริงเพื่อความยาวได้
  4. Ruby .length เฉพาะเครื่องเป็นประตู แม่นกว่า Claude นับเอง เร็วกว่าทดลองโพสต์บน X
  5. ในภาษาจีน ตัด backtick และ emoji ก่อน backtick 1 ตัว = 1 อักษร, emoji 1 ตัว = 2 อักษร
  6. ตรึงตำแหน่ง 🧵 ใน prompt Claude ไม่รู้ธรรมเนียม thread ดีฟอลต์

ข้อคิดจริง: Claude เขียน thread หลายภาษาได้ถูก — แต่ปฏิกิริยาดีฟอลต์ของมันคือ "แปล" งานคุณคือผ่าน prompt หมุนไปโหมด "ประพันธ์อิสระต่อภาษา" เพิ่มประตู .length แล้ว thread จีนของบทความสุดท้ายวันนี้ดราฟต์แรกออกมา 140/140 พอดี — ไม่ต้องตัด