# ทักษะการโพสต์อัตโนมัติบน X (Twitter) สำหรับเอเจนต์

> โพสต์อัตโนมัติข้อความ รูปภาพ วิดีโอ และบทความยาวไปยัง X (Twitter) โดยใช้เบราว์เซอร์ Chrome จริง รองรับโหมดต่างๆ รวมถึงปลั๊กอิน Codex Chrome, Computer Use และสคริปต์ CDP เริ่มแชร์เนื้อหาอย่างมีประสิทธิภาพ

- Canonical: https://nanoskill.ai/th/skills/post-to-twitter
- Markdown: https://nanoskill.ai/th/skills/post-to-twitter.md
- Author: JimLiu
- Published: 2026-06-01T07:19:10.429Z
- Updated: 2026-07-25T04:34:26.608Z
- Language: th
- Source type: github
- Popularity signal: 20040

## Sources

- https://github.com/JimLiu/baoyu-skills

## Install

```shell
npx skills add https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-post-to-x
```

## About

ทักษะการโพสต์ไปยัง X (Twitter) มอบโซลูชันที่แข็งแกร่งสำหรับการทำให้การเผยแพร่เนื้อหาบน X เป็นแบบอัตโนมัติ ช่วยให้ผู้ใช้สามารถแชร์ข้อความ รูปภาพ วิดีโอ และบทความยาวๆ ได้อย่างมีประสิทธิภาพ เครื่องมือนี้ถูกออกแบบมาสำหรับใครก็ตามที่ต้องการปรับปรุงการปรากฏตัวบนโซเชียลมีเดีย ไม่ว่าจะเป็นผู้ใช้รายบุคคล ผู้สร้างเนื้อหา หรือนักการตลาด มันทำงานร่วมกับอินสแตนซ์ของเบราว์เซอร์ Chrome จริง เพื่อให้แน่ใจว่าเข้ากันได้กับแพลตฟอร์มของ X พร้อมทั้งเสนอตัวเลือกการควบคุมที่ยืดหยุ่น

ทักษะนี้โดดเด่นด้วยการรองรับโหมดควบคุมเบราว์เซอร์หลายแบบ รวมถึงปลั๊กอินโคเด็กซ์โครม, การใช้คอมพิวเตอร์โครม และโหมดสคริปต์ซีดีพี ความยืดหยุ่นนี้ช่วยให้มันทำงานได้อย่างมีประสิทธิภาพในสภาพแวดล้อมและการตั้งค่าที่แตกต่างกันของผู้ใช้ ฟีเจอร์สำคัญคือความสามารถในการเผยแพร่บทความ X โดยละเอียดได้โดยตรงจากไฟล์ Markdown จัดการงานที่ซับซ้อน เช่น การอัปโหลดภาพปกและการฝังภาพเนื้อหา ซึ่งมีคุณค่าอย่างยิ่งสำหรับการแชร์เนื้อหาเชิงลึก

ผู้ใช้สามารถใช้ประโยชน์จากทักษะนี้สำหรับสถานการณ์ที่หลากหลาย เช่น การอัปเดตโซเชียลมีเดียรายวันแบบอัตโนมัติ การเผยแพร่บล็อกโพสต์หรือรายงานแบบครอบคลุมเป็นบทความ X หรือการอ้างอิงและแสดงความคิดเห็นบนทวีตอื่นๆ อย่างรวดเร็ว มันมาพร้อมกับการตรวจสอบก่อนเผยแพร่ที่มีประโยชน์เพื่อให้แน่ใจว่าสภาพแวดล้อมได้รับการกำหนดค่าอย่างถูกต้อง และให้คำแนะนำที่ชัดเจนสำหรับการแก้ปัญหา ทำให้เข้าถึงได้แม้สำหรับผู้ใช้ที่เพิ่งเริ่มใช้ระบบอัตโนมัติ

## Key features

- **การโพสต์เนื้อหาหลากหลาย**: โพสต์ข้อความ รูปภาพ และวิดีโอไปยัง X (Twitter) ได้อย่างราบรื่น จัดการสื่อประเภทต่างๆ ตามความต้องการแชร์เนื้อหาที่หลากหลาย
- **การเผยแพร่บทความรูปแบบยาว**: เผยแพร่ X Articles จากไฟล์ Markdown รวมถึงภาพปกและภาพเนื้อหาที่ฝังไว้ เหมาะสำหรับโพสต์ที่มีรายละเอียด
- **โหมดควบคุมเบราว์เซอร์ที่ยืดหยุ่น**: รองรับปลั๊กอิน Codex Chrome, Chrome Computer Use และโหมด CDP Script ปรับให้เข้ากับสภาพแวดล้อมการทำงานและความชอบของผู้ใช้ที่หลากหลาย
- **ฟังก์ชันการอ้างทวีต**: อ้างอิงทวีตที่มีอยู่พร้อมความคิดเห็นของคุณได้อย่างง่ายดาย ช่วยอำนวยความสะดวกในการมีส่วนร่วมและการสนทนาบนแพลตฟอร์ม
- **การตรวจสอบสภาพแวดล้อมก่อนเริ่มใช้งาน**: รวมสคริปต์เพื่อตรวจสอบข้อกำหนดเบื้องต้นที่จำเป็น เช่น Chrome, Bun และสิทธิ์การเข้าถึง พร้อมให้คำแนะนำสำหรับปัญหาต่างๆ

## Use cases

- **อัปเดตโซเชียลมีเดียโดยอัตโนมัติ**: ครีเอเตอร์และนักการตลาดสามารถกำหนดเวลาและทำให้การโพสต์ปกติ รวมถึงข้อความ รูปภาพ และวิดีโอ เป็นไปโดยอัตโนมัติ เพื่อรักษาการแสดงตนบน X โดยไม่ต้องดำเนินการด้วยตนเอง
- **เผยแพร่ X Articles โดยละเอียด**: นักข่าว บล็อกเกอร์ และนักวิเคราะห์สามารถเผยแพร่บทความรูปแบบยาวจาก Markdown โดยตรง พร้อมด้วยสื่อสมบูรณ์ เพื่อแชร์เนื้อหาเชิงลึกกับผู้ชมบน X
- **อ้างอิงและแสดงความคิดเห็นอย่างมีประสิทธิภาพ**: ผู้ใช้สามารถอ้างอิงทวีตได้อย่างรวดเร็วและเพิ่มความคิดเห็น ทำให้กระบวนการมีส่วนร่วมกับหัวข้อที่กำลังมาแรงหรือเนื้อหาของผู้ใช้รายอื่นบน X เป็นไปอย่างคล่องตัว

## Result preview

ดูโพสต์บนทวิตเตอร์เกี่ยวกับเครื่องมือเพิ่มประสิทธิภาพการทำงานด้วย AI พร้อมรูปภาพและแฮชแท็กที่เกี่ยวข้องซึ่งเตรียมไว้สำหรับการเผยแพร่

![the demo of Post to X Agent Skill](https://file.nanoskill.ai/post-to-x-demo-1.jpg)

![the demo of Post to X Agent Skill](https://file.nanoskill.ai/post-to-x-demo-2.jpg)

![the demo of Post to X Agent Skill](https://file.nanoskill.ai/post-to-x-demo-3.jpg)

## Result walkthrough

### ขั้นตอนที่ 1：ติดตั้ง

เพิ่มทักษะให้กับเอเจนต์ของคุณ

![a simple demonstration of the first step in using Post to X](https://file.nanoskill.ai/post-to-x-step-1.jpg)

### ขั้นตอนที่ 2：แชร์ไอเดียโพสต์

ระบุไอเดียทวีต รูปภาพ วิดีโอ หรือบทความของคุณ และขอให้ทักษะนี้เตรียมเนื้อหาสำหรับการเผยแพร่บน X

![a simple demonstration of the second step in using Post to X](https://file.nanoskill.ai/post-to-x-step-2.jpg)

### ขั้นตอนที่ 3：ตรวจสอบก่อนเผยแพร่

ตรวจสอบโพสต์ที่สร้างขึ้นและยืนยันก่อนที่จะเผยแพร่

![a simple demonstration of the first step in using Post to X](https://file.nanoskill.ai/post-to-x-step-3.jpg)

## Skill definition

# โพสต์ไปยัง X (Twitter)

โพสต์ข้อความ รูปภาพ วิดีโอ และบทความยาวไปยัง X ผ่านเบราว์เซอร์ Chrome จริง

ใน Codex อย่าสับสนเส้นทางเบราว์เซอร์เหล่านี้:
- **ปลั๊กอิน Codex Chrome / `@chrome` / ส่วนขยาย Chrome**: ใช้สกิล `chrome:Chrome` ที่มาพร้อมกันและไคลเอนต์เบราว์เซอร์ Node REPL ของมัน นี่เป็นสิ่งจำเป็นเมื่อผู้ใช้พูดว่า "ปลั๊กอิน Codex Chrome", "Codex 自带的 Chrome 插件", `@chrome` หรือคล้ายกัน
- **Chrome Computer Use**: ใช้ `mcp__computer_use__.*` กับ UI ของ Google Chrome ที่มองเห็นได้เฉพาะเมื่อผู้ใช้ขอ Computer Use หรือไม่ระบุความชอบปลั๊กอิน Chrome และ Computer Use พร้อมใช้งาน
- **โหมดสคริปต์ CDP**: ใช้เป็นทางเลือกสำรองเฉพาะเมื่อโหมดที่เลือกไม่พร้อมใช้งานหรือผู้ใช้ร้องขอโหมด CDP/สคริปต์อย่างชัดเจน

## ไดเรกทอรีสคริปต์

**สำคัญ**: สคริปต์ทั้งหมดอยู่ในไดเรกทอรีย่อย `scripts/` ของสกิลนี้

**คำแนะนำการดำเนินการสำหรับเอเจนต์**:
1. กำหนดเส้นทางไดเรกทอรีของไฟล์ SKILL.md นี้เป็น `{baseDir}`
2. เส้นทางสคริปต์ = `{baseDir}/scripts/<script-name>.ts`
3. แทนที่ `{baseDir}` ทั้งหมดในเอกสารนี้ด้วยเส้นทางจริง
4. แก้ไขรันไทม์ `${BUN_X}`: ถ้ามีการติดตั้ง `bun` → `bun`; ถ้ามี `npx` → `npx -y bun`; ถ้าไม่มี แนะนำให้ติดตั้ง bun

**การอ้างอิงสคริปต์**:
| สคริปต์ | วัตถุประสงค์ |
|--------|---------|
| `scripts/x-browser.ts` | โพสต์ปกติ (ข้อความ + รูปภาพ), ทางเลือกสำรอง CDP |
| `scripts/x-video.ts` | โพสต์วิดีโอ (ข้อความ + วิดีโอ), ทางเลือกสำรอง CDP |
| `scripts/x-quote.ts` | ทวีตอ้างอิงพร้อมความคิดเห็น, ทางเลือกสำรอง CDP |
| `scripts/x-article.ts` | การเผยแพร่บทความยาว (Markdown), ทางเลือกสำรอง CDP |
| `scripts/md-to-html.ts` | การแปลง Markdown → HTML |
| `scripts/copy-to-clipboard.ts` | คัดลอกเนื้อหาไปยังคลิปบอร์ด |
| `scripts/paste-from-clipboard.ts` | ส่งการกดแป้นวางจริง |
| `scripts/check-paste-permissions.ts` | ตรวจสอบสภาพแวดล้อมและสิทธิ์ |

## การเลือกโหมดการดำเนินการ (จำเป็น)

เลือกหนึ่งโหมดก่อนที่จะโต้ตอบกับ X:

1. ถ้าผู้ใช้ร้องขอปลั๊กอิน Codex Chrome, `@chrome`, ส่วนขยาย Chrome หรือ "Codex 自带的 Chrome 插件" อย่างชัดเจน ให้ใช้ **โหมดปลั๊กอิน Codex Chrome** อย่าเรียก Computer Use ก่อน
2. ถ้าผู้ใช้ร้องขอ Chrome Computer Use อย่างชัดเจน ให้ใช้ **โหมด Chrome Computer Use** อย่าตกไปใช้ CDP, Playwright, เบราว์เซอร์ในแอป หรือปลั๊กอิน Chrome โดยไม่บอกผู้ใช้และขออนุมัติ
3. ถ้าผู้ใช้ร้องขอโหมด CDP/สคริปต์อย่างชัดเจน ให้ใช้ **โหมดสคริปต์ CDP**
4. ในกรณีอื่น ให้ใช้ **โหมด Chrome Computer Use** ก่อน สำหรับ **บทความ X ที่เป็น Markdown พร้อมรูปภาพเนื้อหาท้องถิ่น** ให้ใช้ขั้นตอนตัวแก้ไข X ที่ทดสอบแล้ว: แทรกรูปภาพในเนื้อหาทีละภาพจากแถบเครื่องมือ (`แทรก` -> `สื่อ` -> ปุ่มไอคอนกล่องโต้ตอบ `เพิ่มรูปภาพหรือวิดีโอ`) ที่ตัวยึดตำแหน่ง แล้วลบข้อความตัวยึดตำแหน่ง ใช้โหมดสคริปต์ CDP เฉพาะเมื่อโหมดควบคุมเบราว์เซอร์ที่เลือกไม่พร้อมใช้งาน หรือขั้นตอนอัปโหลด/เลือกผ่าน UI ไม่น่าเชื่อถือ

อย่าใช้เบราว์เซอร์ในแอปสำหรับขั้นตอนการเผยแพร่ X

## โหมดปลั๊กอิน Codex Chrome

ใช้โหมดนี้เมื่อผู้ใช้ร้องขอปลั๊กอิน Codex Chrome, `@chrome` หรือเส้นทางส่วนขยาย Chrome สิ่งนี้ใช้โปรไฟล์ Chrome และการเข้าสู่ระบบ X จริงของผู้ใช้ผ่านปลั๊กอิน Chrome ที่มาพร้อมกัน ไม่ใช่ Computer Use และไม่ใช่ CDP

**การตั้งค่า**
1. โหลดสกิล `chrome:Chrome` ก่อนทำงานกับเบราว์เซอร์
2. ใช้ `tool_search` สำหรับ `node_repl js` ถ้าเครื่องมือ `js` ของ Node REPL ยังไม่ปรากฏ
3. เริ่มต้นไคลเอนต์เบราว์เซอร์ Chrome ตามที่สกิล Chrome ระบุไว้ จากนั้นเรียกใช้คำสั่งเบา ๆ เช่น `browser.user.openTabs()` เพื่อตรวจสอบการเชื่อมต่อส่วนขยาย
4. ถ้าคำสั่งเบาครั้งแรกล้มเหลว ให้รอ 2 วินาทีแล้วลองอีกครั้งหนึ่ง ถ้ายังล้มเหลว ให้ทำตามขั้นตอนตรวจสอบและกู้คืนของสกิล Chrome ถ้าผ่านการตรวจสอบแต่การสื่อสารยังล้มเหลว ให้ถามผู้ใช้ก่อนที่จะเปิดหน้าต่าง Chrome ใหม่ อย่าเปลี่ยนไปใช้ Computer Use หรือ CDP โดยไม่บอกกล่าว

**กฎทั่วไป**
- ใช้ `browser.tabs.*`, `tab.playwright.*`, `tab.cua.*` และ API ตัวเลือกไฟล์ของปลั๊กอิน Chrome สำหรับการกระทำ UI ของ X
- อนุญาตให้ใช้คำสั่งเชลล์สำหรับการประมวลผล Markdown ล่วงหน้าและการเตรียมคลิปบอร์ด HTML แบบสมบูรณ์ สำหรับรูปภาพในเนื้อหาของบทความ X อย่าพึ่งพาการวางรูปภาพจากคลิปบอร์ด ให้ใช้ขั้นตอนอัปโหลด `แทรก` -> `สื่อ` ของตัวแก้ไข
- ถ้าการอัปโหลดไฟล์ล้มเหลวด้วย `ไม่อนุญาต` ให้บอกผู้ใช้: `เพื่อเปิดใช้งานการอัปโหลดไฟล์ ให้ไปที่ chrome://extensions ใน Chrome คลิก รายละเอียด ใต้ส่วนขยาย Codex และเปิดใช้งาน "อนุญาตให้เข้าถึง URL ไฟล์" ดู https://developers.openai.com/codex/app/chrome-extension#upload-files สำหรับรายละเอียด`
- ถ้าปลั๊กอิน Chrome รายงานว่า `native pipe is closed` ให้ลองเรียกเบราว์เซอร์แบบเบาอีกครั้งหลังจาก 2 วินาที จากนั้นรันการตรวจสอบสภาพของสกิล Chrome ถ้า Chrome กำลังทำงานอยู่ ส่วนขยายเปิดใช้งาน และ native host manifest ถูกต้อง ให้ขออนุญาตเปิดหน้าต่าง Chrome ใหม่แล้วลองอีกครั้ง อย่าส่งคำสั่งเบราว์เซอร์ผ่าน pipe ที่เสียหาย
- อย่าคลิก `เผยแพร่`, `โพสต์` หรือการส่งใด ๆ ที่มองเห็นภายนอกโดยไม่ได้รับการยืนยันขั้นสุดท้ายอย่างชัดเจนจากผู้ใช้ในการสนทนาปัจจุบัน

**บทความ X**
1. แปลง Markdown และเก็บแมปรูปภาพ:
   ```bash
   ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
   ```
2. อ่านผลลัพธ์ JSON สำหรับ `title`, `coverImage` และ `contentImages` (`placeholder` → `localPath`)
3. เปิดหรือสร้างร่างบทความที่ `https://x.com/compose/articles`
4. อัปโหลดปกด้วยขั้นตอนตัวเลือกไฟล์ของปลั๊กอิน Chrome ถ้าการอัปโหลดถูกบล็อกโดยสิทธิ์ส่วนขยาย ให้หยุดและรายงานการแก้ไขสิทธิ์ข้างต้น
5. กรอกชื่อเรื่อง แล้วคัดลอก HTML แบบสมบูรณ์:
   ```bash
   ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
   ```
6. วางลงในเนื้อหาบทความด้วยการกดแป้นวางจริงผ่านปลั๊กอิน Chrome บน macOS ใช้ `Meta+V`
7. ตรวจสอบว่าข้อความในตัวแก้ไขมีเนื้อหาบทความและตัวยึดตำแหน่ง `XIMGPH_` อย่าพึ่งพา `tab.clipboard.readText()` เป็นหลักฐานของคลิปบอร์ดระบบหลังจากเขียนคลิปบอร์ดผ่านเชลล์ บน macOS ตรวจสอบด้วย `pbpaste` ถ้าจำเป็น
8. สำหรับแต่ละรายการ `contentImages` ตามลำดับตัวยึดตำแหน่ง:
   - ค้นหาข้อความตัวยึดตำแหน่งที่มองเห็น (`XIMGPH_N`) แล้วคลิกเพื่อวาง caret ที่นั่น
   - เปิดเมนูแถบเครื่องมือ `แทรก` -> `สื่อ`
   - ในโมดอล คลิกปุ่มไอคอนที่มี `aria-label="Add photos or video"` อย่าคลิกข้อความ/พื้นที่วาง หรืออินพุตไฟล์ที่ซ่อนอยู่
   - ใช้ตัวเลือกไฟล์เพื่ออัปโหลด `localPath` ของรูปภาพนั้น
   - หลังจากรูปภาพปรากฏขึ้น ถ้า `XIMGPH_N` ยังคงอยู่เหนือรูปภาพ ให้เลือกตัวยึดตำแหน่งนั้นอย่างแน่นอนแล้วกด `Delete` ก่อน ใช้ `Backspace` เฉพาะเมื่อ `Delete` ล้มเหลวและข้อความที่เลือกตรงกับตัวยึดตำแหน่งจริง
   - ตรวจสอบว่าจำนวน `XIMGPH_N` นั้นเป็น `0`
9. เปิดดูตัวอย่างและตรวจสอบชื่อเรื่อง ปก เนื้อหา ลิงก์ และรูปภาพ
10. ขอการยืนยันอย่างชัดเจนก่อนคลิก `เผยแพร่`

## ค่ากำหนด (EXTEND.md)

ตรวจสอบ EXTEND.md ตามลำดับความสำคัญ — อันแรกที่พบจะถูกใช้:

| ลำดับ | เส้นทาง | ขอบเขต |
|----------|------|-------|
| 1 | `.baoyu-skills/baoyu-post-to-x/EXTEND.md` | โปรเจกต์ |
| 2 | `${XDG_CONFIG_HOME:-$HOME/.config}/baoyu-skills/baoyu-post-to-x/EXTEND.md` | XDG |
| 3 | `$HOME/.baoyu-skills/baoyu-post-to-x/EXTEND.md` | โฮมผู้ใช้ |

ถ้าไม่พบ ให้ใช้ค่าเริ่มต้น

**EXTEND.md รองรับ**: โปรไฟล์ Chrome เริ่มต้น

## ข้อกำหนดเบื้องต้น

- Google Chrome หรือ Chromium
- รันไทม์ `bun`
- การเรียกใช้ครั้งแรก: เข้าสู่ระบบ X ด้วยตนเอง (เซสชันถูกบันทึก)

## การตรวจสอบก่อนบิน (ไม่บังคับ)

ก่อนการใช้งานครั้งแรก แนะนำให้รันการตรวจสอบสภาพแวดล้อม ผู้ใช้สามารถข้ามได้หากต้องการ

```bash
${BUN_X} {baseDir}/scripts/check-paste-permissions.ts
```

ตรวจสอบ: Chrome, การแยกโปรไฟล์, Bun, การช่วยการเข้าถึง, คลิปบอร์ด, การกดแป้นวาง, ข้อขัดแย้งของ Chrome

**ถ้าการตรวจสอบใดล้มเหลว** ให้คำแนะนำการแก้ไขต่อรายการ:

| การตรวจสอบ | การแก้ไข |
|-------|-----|
| Chrome | ติดตั้ง Chrome หรือตั้งค่าตัวแปรสภาพแวดล้อม `X_BROWSER_CHROME_PATH` |
| ไดเรกทอรีโปรไฟล์ | โปรไฟล์ที่แชร์ที่ `baoyu-skills/chrome-profile` (ดูส่วนโปรไฟล์ Chrome ใน CLAUDE.md) |
| รันไทม์ Bun | `brew install oven-sh/bun/bun` (macOS) หรือ `npm install -g bun` |
| การช่วยการเข้าถึง (macOS) | การตั้งค่าระบบ → ความเป็นส่วนตัวและความปลอดภัย → การช่วยการเข้าถึง → เปิดใช้งานแอปเทอร์มินัล |
| การคัดลอกคลิปบอร์ด | ตรวจสอบให้แน่ใจว่ามี Swift/AppKit (เครื่องมือบรรทัดคำสั่ง Xcode บน macOS: `xcode-select --install`) |
| การกดแป้นวาง (macOS) | เหมือนกับการแก้ไขการช่วยการเข้าถึงด้านบน |
| การกดแป้นวาง (Linux) | ติดตั้ง `xdotool` (X11) หรือ `ydotool` (Wayland) |

## ข้อมูลอ้างอิง

- **โพสต์ปกติ**: ดู `references/regular-posts.md` สำหรับขั้นตอนด้วยตนเอง การแก้ไขปัญหา และรายละเอียดทางเทคนิค
- **บทความ X**: ดู `references/articles.md` สำหรับคู่มือการเผยแพร่บทความยาว

---

## โหมด Chrome Computer Use

ใช้โหมดนี้เมื่อผู้ใช้ร้องขอ Chrome Computer Use อย่างชัดเจน หรือเมื่อไม่มีการระบุความชอบปลั๊กอิน Chrome และ Codex สามารถควบคุม `Google Chrome` ด้วย Computer Use สิ่งนี้ใช้หน้าต่าง Chrome, คุกกี้, การเข้าสู่ระบบ, ส่วนขยาย และเซสชัน X ที่มีอยู่ของผู้ใช้

**กฎทั่วไป**:
- เริ่มต้นแต่ละเทิร์นของผู้ช่วยที่ควบคุม Chrome โดยเรียก `get_app_state` สำหรับ `Google Chrome`
- ชอบการกระทำตามดัชนีองค์ประกอบเมื่อพร้อมใช้งาน ใช้พิกัดเฉพาะสำหรับการเลือกข้อความในตัวแก้ไขหรือการเลือกแบบลาก
- อย่าใช้เบราว์เซอร์ในแอป, ปลั๊กอิน Chrome, Playwright หรือ CDP สำหรับการกระทำ UI ของ X ในโหมดนี้ เว้นแต่ผู้ใช้อนุมัติการเปลี่ยนโหมด
- อย่าคลิก `เผยแพร่`, `โพสต์` หรือการส่งใด ๆ ที่มองเห็นภายนอกโดยไม่ได้รับการยืนยันขั้นสุดท้ายอย่างชัดเจนจากผู้ใช้ในการสนทนาปัจจุบัน

**โพสต์ปกติ**:
1. เปิดหรือนำทาง Chrome ไปที่ `https://x.com/compose/post`
2. พิมพ์ข้อความโพสต์ลงในตัวเขียนโดยใช้ Computer Use
3. สำหรับแต่ละรูปภาพ ให้รัน:
   ```bash
   ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts image /absolute/path/to/image.png
   ```
4. วางด้วย Computer Use (`super+v` บน macOS, `control+v` บน Windows/Linux) แล้วรอจนกว่า X จะอัปโหลดสื่อเสร็จ
5. ขอการยืนยันก่อนคลิก `โพสต์`

**โพสต์วิดีโอ**:
1. เปิดหรือนำทาง Chrome ไปที่ `https://x.com/compose/post`
2. พิมพ์ข้อความโพสต์ลงในตัวเขียน
3. ใช้ UI อัปโหลดสื่อ/ตัวเลือกไฟล์ที่มองเห็นเพื่อแนบวิดีโอ
4. รอให้การอัปโหลดและประมวลผลเสร็จสิ้น
5. ขอการยืนยันก่อนคลิก `โพสต์`

**ทวีตอ้างอิง**:
1. เปิด URL ของทวีตใน Chrome
2. ใช้ UI อ้างอิง/รีโพสต์ที่มองเห็นเพื่อเลือก อ้างอิง
3. พิมพ์ความคิดเห็น
4. ขอการยืนยันก่อนคลิก `โพสต์`

**บทความ X**:
1. แปลง Markdown และเก็บแมปรูปภาพ:
   ```bash
   ${BUN_X} {baseDir}/scripts/md-to-html.ts article.md --save-html /tmp/x-article-body.html > /tmp/x-article.json
   ```
2. อ่านผลลัพธ์ JSON สำหรับ `title`, `coverImage` และ `contentImages` (`placeholder` → `localPath`)
3. ใน Chrome เปิด `https://x.com/compose/articles` สร้างหรือเปิดร่าง อัปโหลดปกหากมี และกรอกชื่อเรื่อง
4. คัดลอก HTML แบบสมบูรณ์ไปยังคลิปบอร์ด:
   ```bash
   ${BUN_X} {baseDir}/scripts/copy-to-clipboard.ts html --file /tmp/x-article-body.html
   ```
5. วางลงในเนื้อหาบทความด้วย Computer Use
6. สำหรับแต่ละรายการ `contentImages` ตามลำดับตัวยึดตำแหน่ง:
   - ค้นหาข้อความตัวยึดตำแหน่งที่มองเห็นเช่น `XIMGPH_3` แล้วคลิกเพื่อตั้งจุดแทรก
   - เปิดเมนูแบบเลื่อนลง `แทรก` ของแถบเครื่องมือ เลือก `สื่อ` จากนั้นคลิกปุ่มไอคอนในโมดอลที่ระบุว่า `เพิ่มรูปภาพหรือวิดีโอ`
   - ใช้ตัวเลือกไฟล์ดั้งเดิมเพื่อเลือก `localPath` ของรูปภาพ
   - รอจนกว่าบล็อกรูปภาพจะปรากฏขึ้นและกิจกรรมการอัปโหลดใด ๆ เสร็จสิ้น
   - ถ้าตัวยึดตำแหน่งยังคงอยู่เหนือรูปภาพที่แทรก ให้เลือกข้อความตัวยึดตำแหน่งนั้นอีกครั้งอย่างแน่นอนแล้วกด `Delete` ก่อน ใช้ `Backspace` เฉพาะเมื่อ `Delete` ล้มเหลวและข้อความที่เลือกตรงกับตัวยึดตำแหน่งจริง
7. ตรวจสอบว่าไม่มีตัวยึดตำแหน่ง `XIMGPH_` เหลืออยู่และรูปภาพที่คาดหวังปรากฏขึ้น
8. เปิดดูตัวอย่างและตรวจสอบชื่อเรื่อง ปก เนื้อหา ลิงก์ และรูปภาพ
9. ขอการยืนยันอย่างชัดเจนก่อนคลิก `เผยแพร่`

ถ้าการเลือกของ Computer Use, การอัปโหลดผ่านแถบเครื่องมือ หรือการควบคุมตัวเลือกไฟล์ไม่น่าเชื่อถือ ให้หยุดและรายงานอุปสรรค แทนที่จะเปลี่ยนไปใช้ปลั๊กอิน Chrome หรือ CDP โดยไม่บอกกล่าว

---

## โหมดสคริปต์ CDP (ทางเลือกสำรอง)

ใช้ส่วนสคริปต์ด้านล่างเฉพาะเมื่อโหมดควบคุมเบราว์เซอร์ที่เลือกไม่พร้อมใช้งาน ไม่น่าเชื่อถือ หรือไม่ได้ร้องขออย่างชัดเจน สคริปต์เหล่านี้เปิดหรือใช้ซ้ำอินสแตนซ์ Chrome จริงผ่าน CDP และเปิดเบราว์เซอร์ไว้เพื่อตรวจสอบ

อย่าใช้โหมดสคริปต์ CDP เมื่อผู้ใช้ร้องขอปลั๊กอิน Codex Chrome หรือ Chrome Computer Use อย่างชัดเจน เว้นแต่ผู้ใช้อนุมัติทางเลือกสำรองหลังจากที่คุณอธิบายอุปสรรค

---

## การเลือกประเภทโพสต์

เว้นแต่ผู้ใช้ระบุประเภทโพสต์อย่างชัดเจน:
- **ข้อความล้วน** + ภายใน 10,000 ตัวอักษร → **โพสต์ปกติ** (สมาชิก Premium รองรับสูงสุด 10,000 ตัวอักษร, ไม่ใช่ Premium: 280 ตัวอักษร)
- **ไฟล์ Markdown** (.md) → **บทความ X**

## โพสต์ปกติ

```bash
${BUN_X} {baseDir}/scripts/x-browser.ts "สวัสดี!" --image ./photo.png
```

**พารามิเตอร์**:
| พารามิเตอร์ | คำอธิบาย |
|-----------|-------------|
| `<text>` | เนื้อหาโพสต์ (ตำแหน่ง) |
| `--image <path>` | ไฟล์รูปภาพ (ทำซ้ำได้, สูงสุด 4) |
| `--profile <dir>` | โปรไฟล์ Chrome ที่กำหนดเอง |

**หมายเหตุ**: สคริปต์เปิดเบราว์เซอร์พร้อมเนื้อหาที่กรอกไว้ ผู้ใช้ตรวจสอบและเผยแพร่ด้วยตนเอง

**หมายเหตุโหมด Codex**: ถ้าผู้ใช้ร้องขอปลั๊กอิน Codex Chrome อย่างชัดเจน ให้ใช้ **โหมดปลั๊กอิน Codex Chrome** ในกรณีอื่น ถ้าเปิดใช้งาน Chrome Computer Use ให้ใช้ **โหมด Chrome Computer Use** แทนการรัน `x-browser.ts`

---

## โพสต์วิดีโอ

ข้อความ + ไฟล์วิดีโอ

```bash
${BUN_X} {baseDir}/scripts/x-video.ts "ดูนี่สิ!" --video ./clip.mp4
```

**พารามิเตอร์**:
| พารามิเตอร์ | คำอธิบาย |
|-----------|-------------|
| `<text>` | เนื้อหาโพสต์ (ตำแหน่ง) |
| `--video <path>` | ไฟล์วิดีโอ (MP4, MOV, WebM) |
| `--profile <dir>` | โปรไฟล์ Chrome ที่กำหนดเอง |

**หมายเหตุ**: สคริปต์เปิดเบราว์เซอร์พร้อมเนื้อหาที่กรอกไว้ ผู้ใช้ตรวจสอบและเผยแพร่ด้วยตนเอง

**หมายเหตุโหมด Codex**: ถ้าผู้ใช้ร้องขอปลั๊กอิน Codex Chrome อย่างชัดเจน ให้ใช้ **โหมดปลั๊กอิน Codex Chrome** ในกรณีอื่น ถ้าเปิดใช้งาน Chrome Computer Use ให้ใช้ **โหมด Chrome Computer Use** แทนการรัน `x-video.ts`

**ขีดจำกัด**: ปกติสูงสุด 140 วินาที, Premium สูงสุด 60 นาที การประมวลผล: 30-60 วินาที

---

## ทวีตอ้างอิง

อ้างอิงทวีตที่มีอยู่พร้อมความคิดเห็น

```bash
${BUN_X} {baseDir}/scripts/x-quote.ts https://x.com/user/status/123 "ข้อมูลเชิงลึกที่ยอดเยี่ยม!"
```

**พารามิเตอร์**:
| พารามิเตอร์ | คำอธิบาย |
|-----------|-------------|
| `<tweet-url>` | URL ที่จะอ้างอิง (ตำแหน่ง) |
| `<comment>` | ข้อความความคิดเห็น (ตำแหน่ง, ไม่บังคับ) |
| `--profile <dir>` | โปรไฟล์ Chrome ที่กำหนดเอง |

**หมายเหตุ**: สคริปต์เปิดเบราว์เซอร์พร้อมเนื้อหาที่กรอกไว้ ผู้ใช้ตรวจสอบและเผยแพร่ด้วยตนเอง

**หมายเหตุโหมด Codex**: ถ้าผู้ใช้ร้องขอปลั๊กอิน Codex Chrome อย่างชัดเจน ให้ใช้ **โหมดปลั๊กอิน Codex Chrome** ในกรณีอื่น ถ้าเปิดใช้งาน Chrome Computer Use ให้ใช้ **โหมด Chrome Computer Use** แทนการรัน `x-quote.ts`

---

## บทความ X

บทความ Markdown แบบยาว (ต้องใช้ X Premium)

```bash
${BUN_X} {baseDir}/scripts/x-article.ts article.md
${BUN_X} {baseDir}/scripts/x-article.ts article.md --cover ./cover.jpg
```

**พารามิเตอร์**:
| พารามิเตอร์ | คำอธิบาย |
|-----------|-------------|
| `<markdown>` | ไฟล์ Markdown (ตำแหน่ง) |
| `--cover <path>` | รูปปก |
| `--title <text>` | แทนที่ชื่อเรื่อง |

**Frontmatter**: รองรับ `title`, `cover_image` ใน YAML front matter

**หมายเหตุโหมด Codex**: ถ้าผู้ใช้ร้องขอปลั๊กอิน Codex Chrome อย่างชัดเจน ให้ปฏิบัติตาม **โหมดปลั๊กอิน Codex Chrome** ข้างต้น ถ้าผู้ใช้ร้องขอ Chrome Computer Use อย่างชัดเจน ให้ปฏิบัติตาม **โหมด Chrome Computer Use** ในกรณีอื่น ให้ใช้ Chrome Computer Use ก่อน สำหรับบทความ Markdown ที่มีรูปภาพเนื้อหาท้องถิ่น ให้ใช้ขั้นตอนอัปโหลดรูปภาพ `แทรก` -> `สื่อ` ของแถบเครื่องมือ ก่อนที่จะตกไปใช้ `x-article.ts` ใน **โหมดสคริปต์ CDP**

**หมายเหตุทางเลือกสำรอง CDP**: สคริปต์เปิดเบราว์เซอร์พร้อมบทความที่กรอกไว้ ผู้ใช้ตรวจสอบและเผยแพร่ด้วยตนเอง เว้นแต่ใช้ `--submit`

**ความปลอดภัยในการเผยแพร่**: อย่าใช้ `--submit` หรือคลิก `เผยแพร่` เว้นแต่ผู้ใช้ยืนยันการเผยแพร่สาธารณะขั้นสุดท้ายอย่างชัดเจน

**การตรวจสอบหลังการเขียน**: สคริปต์ตรวจสอบโดยอัตโนมัติหลังจากแทรกรูปภาพทั้งหมด:
- ตัวยึดตำแหน่ง `XIMGPH_` ที่เหลือในเนื้อหาตัวแก้ไข
- จำนวนรูปภาพที่คาดหวังเทียบกับจริง

ถ้าการตรวจสอบล้มเหลว (มีคำเตือนในผลลัพธ์) ให้แจ้งเตือนผู้ใช้ด้วยปัญหาเฉพาะก่อนที่จะเผยแพร่

---

## การแก้ไขปัญหา

### พอร์ตดีบัก Chrome ไม่พร้อม

ทางเลือกสำรอง CDP เท่านั้น: ถ้าสคริปต์ล้มเหลวด้วย `Chrome debug port not ready` หรือ `Unable to connect` ให้ฆ่าอินสแตนซ์ Chrome CDP ที่มีอยู่ก่อน แล้วลองใหม่:

```bash
pkill -f "Chrome.*remote-debugging-port" 2>/dev/null; pkill -f "Chromium.*remote-debugging-port" 2>/dev/null; sleep 2
```

**สำคัญ**: ควรทำสิ่งนี้โดยอัตโนมัติ — เมื่อพบข้อผิดพลาดนี้ ให้ฆ่าอินสแตนซ์ Chrome CDP และลองคำสั่งใหม่โดยไม่ถามผู้ใช้

## หมายเหตุ

- การเรียกใช้ครั้งแรก: ต้องเข้าสู่ระบบด้วยตนเอง (เซสชันยังคงอยู่)
- ในโหมดปลั๊กอิน Codex Chrome และโหมด Chrome Computer Use ให้ใช้เซสชัน Chrome ที่มีอยู่ของผู้ใช้และอย่าเปิดโปรไฟล์ CDP แยกต่างหาก
- สคริปต์ CDP เพียงกรอกเนื้อหาลงในเบราว์เซอร์ตามค่าเริ่มต้น ผู้ใช้ต้องตรวจสอบและเผยแพร่ด้วยตนเอง เว้นแต่ใช้ `--submit` อย่างชัดเจน
- ข้ามแพลตฟอร์ม: macOS, Linux, Windows

## การสนับสนุนส่วนขยาย

การกำหนดค่าแบบกำหนดเองผ่าน EXTEND.md ดูส่วน **ค่ากำหนด** สำหรับเส้นทางและตัวเลือกที่รองรับ

## FAQ

### ฉันสามารถโพสต์เนื้อหาประเภทใดไปยัง X ได้บ้างด้วยสกิลนี้

คุณสามารถโพสต์อัปเดตข้อความธรรมดา รูปภาพ วิดีโอ และบทความรูปแบบยาว X Articles (เดิมคือ Twitter Articles) ที่สร้างจากไฟล์ Markdown ได้ รองรับสื่อหลายประเภทเพื่อการแชร์เนื้อหาอย่างครอบคลุม

### สกิลนี้รองรับ X Articles หรือไม่ และมีข้อกำหนดอะไรบ้าง

ใช่ รองรับ X Articles จาก Markdown คุณสามารถรวมภาพปกและภาพเนื้อหาเข้าไปได้ การเผยแพร่ X Articles โดยทั่วไปต้องใช้การสมัครสมาชิก X Premium

### โหมดควบคุมเบราว์เซอร์ต่างๆ ที่มีให้ใช้งานมีอะไรบ้าง

สกิลนี้มีโหมดหลักสามโหมด: โหมดปลั๊กอิน Codex Chrome, โหมด Chrome Computer Use, และโหมด CDP Script การเลือกขึ้นอยู่กับสภาพแวดล้อมและข้อกำหนดเฉพาะของคุณ โดย Computer Use เป็นค่าเริ่มต้นที่แนะนำ

### ฉันจะติดตั้งสกิล 'โพสต์ไปยัง X' ได้อย่างไร

คุณสามารถติดตั้งสกิลได้โดยใช้คำสั่ง: \`npx skills add https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-post-to-x\` ตรวจสอบว่าคุณได้ติดตั้ง \`bun\` หรือ \`npx\` ไว้แล้ว

### ต้องมีการตรวจสอบด้วยตนเองก่อนเผยแพร่โพสต์ไปยัง X หรือไม่

ตามค่าเริ่มต้น สกิลจะเติมเนื้อหาลงในเบราว์เซอร์ และคุณต้องตรวจสอบและเผยแพร่ด้วยตนเอง ตัวเลือก \`--submit\` สำหรับสคริปต์ CDP ควรใช้เมื่อได้รับการยืนยันจากผู้ใช้อย่างชัดเจนสำหรับการเผยแพร่สู่สาธารณะขั้นสุดท้ายเท่านั้น

### ฉันควรทำอย่างไรหากพบข้อผิดพลาด 'พอร์ตดีบัก Chrome ไม่พร้อม'

หากข้อผิดพลาดนี้เกิดขึ้นในโหมดสำรอง CDP คุณควรยกเลิกอินสแตนซ์ Chrome CDP ที่มีอยู่และลองคำสั่งใหม่อีกครั้ง สกิลถูกออกแบบมาให้ลองทำสิ่งนี้โดยอัตโนมัติ
