AIDailyTH
เครื่องมือทั้งหมด / ภาพและวิดีโอ
ชุดแจก · คลิปโปรโมทแอปหรือร้าน

คลิปโปรโมท
แบบโมชั่นกราฟิก

หน้านี้คือวิธีที่เราใช้ทำคลิปโปรโมทระบบหน้าร้านของร้านกาแฟจริงร้านหนึ่ง ให้ Claude Code เขียนทั้งภาพเคลื่อนไหว เสียงเอฟเฟกต์ และตัว render เอง คุณได้คลิปแนวนอน 16:9 กับแนวตั้ง 9:16 จากงานชุดเดียวกัน จะมีเสียงพากย์หรือไม่มีก็ได้ prompt ทุกขั้นเปลี่ยนเป็นแอปหรือร้านของคุณได้ทันที

Claude Code ✓ ทำจากงานจริง 2026-09-27 16:9 + 9:16 มีหรือไม่มีเสียงพากย์
ตัวอย่างจากคลิปจริง
ของที่ต้องมี

เตรียมไว้ในเครื่องก่อนเริ่ม

  • Claude Codeตัวหลักที่เขียนโค้ดทั้งหมดให้ คุณแค่วาง prompt และตรวจผล
  • Node.js และ Google Chromeใช้เปิดหน้าภาพเคลื่อนไหวแล้วแคปทีละเฟรม
  • ffmpegใช้รวมภาพทุกเฟรมกับเสียงเป็นไฟล์ mp4
  • Pythonใช้สร้างเสียงเอฟเฟกต์จากโค้ด ถ้ายังไม่มี บอก Claude ให้ช่วยติดตั้งได้
  • ElevenLabs ทางเลือกใช้เฉพาะแบบมีเสียงพากย์ แบบไม่มีเสียงพูดไม่ต้องใช้
  • แอปหรือหน้าร้านของคุณโค้ดแอป หรืออย่างน้อยหน้าเว็บที่เปิดดูได้ พร้อมข้อมูลตัวอย่างสำหรับอัดจอ

คลิปของคุณจะมีเสียงพากย์ไหม

ต่างกันแค่ขั้นที่ 3 ขั้นอื่นเหมือนกันหมด งานจริงของเราทำไว้ทั้งสองแบบจาก timeline เดียวกัน

เลือกแล้วเปลี่ยนใจได้ตลอด · เว็บจำว่าคุณทำถึงขั้นไหน

ส่วนที่ 1

เตรียมเรื่องให้ครบ ก่อนเขียนโค้ดบรรทัดแรก

งานนี้เสียเวลาน้อยสุดถ้าคิดภาพให้จบก่อน ขั้น 1 ถึง 4 ยังไม่มีภาพเคลื่อนไหวเลย แต่เป็นขั้นที่ทำให้คลิปดูเป็นมืออาชีพ

1

เตรียมของจริง และปิดข้อมูลก่อนอัด

คลิปที่คนเชื่อคือคลิปที่เห็นหน้าจอจริง เราให้ Claude เขียนสคริปต์เปิด Chrome แล้วกดแอปตามฉากที่ต้องการ อัดออกมาเป็นคลิปสั้นทีละฉาก

อย่าอัดจากระบบที่ใช้ขายจริง ใช้โหมดทดสอบหรือข้อมูลตัวอย่างเท่านั้น งานจริงของเรารันแอปในเครื่องต่อกับฐานข้อมูลจำลอง แล้วสร้างออเดอร์ตัวอย่างผ่านหน้าจอเอง

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

prompt เตรียมหน้าจอจริง

prompt 1
ผมจะทำคลิปโปรโมท [ชื่อแอปหรือร้าน] แบบโมชั่นกราฟิก ขั้นแรกช่วยเตรียมหน้าจอจริงให้หน่อย

1. โค้ดแอปอยู่ที่ [โฟลเดอร์โค้ด] (ถ้าไม่มีโค้ด ใช้หน้าเว็บ [ลิงก์] แทน) อ่านอย่างเดียว ห้ามแก้ซอร์สของแอป
2. รันแอปในเครื่องด้วยโหมดทดสอบหรือข้อมูลตัวอย่าง [เช่น ฐานข้อมูลจำลอง หรือบัญชีทดสอบ] ห้ามแตะระบบจริงและฐานข้อมูลจริงเด็ดขาด
3. เขียนสคริปต์ Puppeteer เปิด Chrome แล้วกดตามฉากเหล่านี้ อัดเป็นคลิปสั้นแยกไฟล์ละฉาก
   - [ฉาก 1 เช่น เปิดหน้าขาย แตะเมนู เลือกตัวเลือก ใส่ตะกร้า]
   - [ฉาก 2]
   - [ฉาก 3]
   ใส่วงกลมตรงจุดที่แตะให้คนดูเห็น ใช้ขนาดจอแท็บเล็ต 1600x1000 และมือถือ 390x844
4. ก่อนหน้าโหลด ให้ฉีดสคริปต์ที่เบลอตัวเลขเงินทุกตัว (ยอดขาย กำไร รายจ่าย) และข้อมูลส่วนบุคคลทุกอย่าง (ชื่อ เบอร์โทร ที่อยู่) ด้วย CSS blur ตั้งแต่เฟรมแรก และคอยเบลอของที่โผล่มาใหม่ระหว่างอัดด้วย ราคาเมนูไม่ต้องเบลอ
5. ถ่ายภาพนิ่งเพิ่มหน้าละ 1 ภาพ ถ้าแอปมีโหมดมืดให้ถ่ายทั้งโหมดสว่างและโหมดมืด
6. เสร็จแล้วทำ contact sheet ของทุกคลิป เปิดดูเองว่าไม่มีตัวเลขเงิน ชื่อ หรือเบอร์โทรหลุดแม้แต่เฟรมเดียว ก่อนบอกผมว่าเสร็จ
แก้ได้ ชื่อแอปโฟลเดอร์โค้ดฉากที่อยากอัด
2

ให้เสนอไอเดียภาพก่อน ยังไม่ต้องเขียนบท

คลิปโปรโมทที่ดูแพงไม่ได้มาจากเอฟเฟกต์เยอะ แต่มาจากการมีของชิ้นเดียวเดินเรื่องตลอดคลิป งานจริงของเราใช้ 3 อย่างนี้

hero objectใบจดออเดอร์กระดาษ ขยำเป็นก้อน แล้วคลี่ออกเป็นการ์ดออเดอร์ดิจิทัล บินเข้าจอครัว สุดท้ายยุบเป็นแท่งกราฟ 3 โลกร้านวุ่นช่วงคนแน่น · เวทีเรียบสีแบรนด์ตอนเปิดตัว · หน้าจอจริงตอนโชว์ฟีเจอร์ setup → payoffช็อตแรกเคาน์เตอร์เต็มไปด้วยกระดาษ ช็อตปิดเป็นเคาน์เตอร์เดิมที่ไม่มีกระดาษเลย

prompt ขอไอเดียภาพ

prompt 2
ช่วยคิดไอเดียภาพสำหรับคลิปโปรโมท [ชื่อแอปหรือร้าน] ยาวประมาณ [60-70] วินาที
คนดูคือ [ใครจะดู เช่น เจ้าของร้านเล็ก]
จุดขายที่อยากโชว์: [ข้อ 1] · [ข้อ 2] · [ข้อ 3] · [ข้อ 4]
หน้าจอจริงที่มีอยู่: คลิปอัดจอและภาพนิ่งจากขั้นก่อน

ก่อนเขียนบท ขอสิ่งเหล่านี้
1. hero object 1 ชิ้นที่เดินเรื่องตลอดคลิป แล้วแปลงร่างไปตามแต่ละช่วง (ตัวอย่าง ใบจดออเดอร์กระดาษ กลายเป็นการ์ดออเดอร์ดิจิทัล บินเข้าจอครัว แล้วยุบเป็นแท่งกราฟ)
2. 3 โลกของภาพ คือ โลกปัญหา · โลกเปิดตัว (เวทีเรียบ สีแบรนด์) · โลกหน้าจอจริง
3. setup กับ payoff ให้ช็อตเปิดกับช็อตปิดเป็นฉากเดียวกัน แต่ผลลัพธ์ตรงข้ามกัน
4. โครง 4 องก์ คือ ปัญหา · เปิดตัว · ฟีเจอร์ทีละข้อ · ปิดและชวนติดต่อ

เสนอมา 2-3 แนวให้ผมเลือก บอกด้วยว่าแต่ละแนวเหมาะกับอะไร ห้ามเขียนโค้ดจนกว่าผมจะเลือก
แก้ได้ ความยาวคนดูจุดขาย
3

บทพากย์และเสียง

ทาง A ส่งบททั้งหมดเข้า ElevenLabs ครั้งเดียว ไม่แยกทีละประโยค น้ำเสียงจะต่อเนื่องกว่า แล้วส่งไฟล์เสียงกลับเข้า forced alignment ได้เวลาเริ่มและจบของทุกตัวอักษร engine จะใช้เวลานี้ผูกท่าเข้ากับคำที่พูด เช่น การ์ดเด้งตรงคำว่า "แตะรูป" พอดี

บท + tag อารมณ์→ElevenLabs ครั้งเดียว→forced alignment→เวลาทุกคำ

ทาง B ตัวหนังสือบนจอต้องเล่าเรื่องได้เองครบ ทุกฉากมีหัวข้อกับบรรทัดรองสั้นๆ เช่น "ข้อ 01 · ขายไว" ตามด้วย "แตะรูป เลือกหวาน เลือกนม · จบบิลในไม่กี่วินาที" และค้างบนจอให้นานพออ่าน

งานจริงของเราใช้ timeline เดียวกับแบบมีเสียงพากย์ แค่เปลี่ยนธงเป็นโหมดไม่มีเสียงพูด ตัวหนังสือค้างอย่างน้อย 1.8 วินาทีต่อบรรทัด ดนตรีดังขึ้น และทุกท่าสำคัญมีเสียงเอฟเฟกต์

prompt บทและเสียง (ใช้ได้ทั้งสองทาง)

prompt 3
เขียนบทจากไอเดียที่ผมเลือก โหมด: [มีเสียงพากย์ / ไม่มีเสียงพูด]
เขียนเป็นตาราง: ลำดับ · บท · ภาพ · hero object ทำอะไร

ถ้าเป็นแบบมีเสียงพากย์
1. ประโยคสั้น พูดง่าย 1 บรรทัดต่อ 1 ฉาก ใส่ tag อารมณ์หน้าบรรทัด เช่น [curious] [upbeat] [confident] และเว้นจังหวะด้วย <break time="0.15s" />
2. ส่งบททั้งหมดเข้า ElevenLabs ครั้งเดียว โมเดล eleven_v3 เสียง [voice id] อ่านคีย์จากไฟล์ .env ห้ามพิมพ์คีย์ลงในโค้ด
3. เอาไฟล์เสียงกับบทเปล่า (ตัด tag และ break ออก) ส่งเข้า forced alignment ของ ElevenLabs เก็บเวลาทุกตัวอักษรเป็น align.json และเวลาทุกบรรทัดเป็น lines.json
4. ใช้ไฟล์เสียงเต็มความยาว ห้ามตัดท้าย

ถ้าเป็นแบบไม่มีเสียงพูด
1. ทุกฉากมีหัวข้อ + บรรทัดรองสั้นๆ ที่เล่าเรื่องได้เองครบ ดูแบบปิดเสียงก็เข้าใจ
2. ตัวหนังสือค้างบนจออย่างน้อย 1.8 วินาทีต่อบรรทัด
3. กำหนดเวลาแต่ละฉากเองเป็น lines.json ให้ขั้นต่อไปใช้ได้เหมือนกัน
4. ดนตรีดังขึ้นแทนเสียงพูด และทุกท่าสำคัญต้องมีเสียงเอฟเฟกต์
แก้ได้ โหมดvoice id
4

สตอรีบอร์ดรายช็อต (หัวใจของงานนี้)

นี่คือขั้นที่ทำให้งานจบเร็ว เมื่อทุกช็อตมีเลข มีเวลา มีท่ากล้อง เวลาอยากแก้คุณแค่บอกว่า "SH12 ชิปใหญ่ไป" ไม่ต้องอธิบายยาว งานจริงของเรามี 26 ช็อต 4 องก์ ยาว 69 วินาที

คำศัพท์ทรานสิชันที่ใช้

CUTตัดตรง WHIPหวิปแพน เลื่อนเร็วราว 0.25 วินาที ภาพเบลอตามทิศ ZOOM-THRUซูมทะลุวัตถุเข้าฉากใหม่ เช่น ทะลุจอ iPad เข้าไปในแอป WIPEวงกลมสีแบรนด์ขยายจากจุดหนึ่ง ใช้แค่ 3-4 ครั้งทั้งคลิป MORPHรูปร่างหนึ่งแปลงเป็นอีกชิ้น เช่น ใบจดกลายเป็นก้อนกระดาษ

ตัวอย่าง 4 แถวจากงานจริง @คำ คือท่านั้นเกิดตรงเวลาที่เสียงพูดคำนั้น

เลื่อนตารางไปทางขวาได้

ช็อตเวลากล้อง/ท่าสิ่งที่เกิดทรานสิชันออกเสียง
SH067.80-12.10พื้นหมึกเข้ม push-in ช้าใบจดทุกใบถูกดูดเข้ากลาง MORPH เป็นก้อนกระดาษขยำ · ข้อความ "กำไรวันนี้ =" ตัวเลขหมุนแบบสล็อต แล้วล็อกเป็น "???" ตรง @เท่าไหร่ZOOM-THRU ก้อนกระดาษriser · thud ตอนล็อก
SH1123.20-25.40ซูมใกล้ 1.6 เท่าบนชีท (คมเพราะสร้างจากโค้ด)ชีทตัวเลือก [rebuilt] เลื่อนขึ้น · @เลือกหวาน แตะ "หวานน้อย" · @เลือกนม แตะ "นมโอ๊ต"ต่อเนื่องclick x2 · pop เบา
SH1225.40-28.00ถอยกล้องเห็นเต็มหน้ารายการบินโค้งเข้าตะกร้า · @จบบิล กดรับเงิน · @คิวออก ชิป "คิว #14" เด้งใหญ่กลางจอ · กรอบเล็ก [real] มุมขวาล่าง ป้าย "หน้าจอจริง"WHIP ลงwhoosh · click · impact
SH1533.24-36.00กล้องตามการ์ดที่บินโค้งไปขวาbadge 03 "ครัวเห็นทันที" · @เด้งเข้าจอครัว การ์ดลงคอลัมน์งานใหม่ของจอครัว [rebuilt] ธีมมืด · @เรียงตามคิว การ์ดอื่นเลื่อนเรียงต่อเนื่องwhoosh · notify

ตารางว่างให้คัดลอก เอาไปวางในไฟล์ STORYBOARD.md หรือให้ Claude เติมตาม prompt ข้างล่าง

template สตอรีบอร์ด
## องก์ [1] · [ชื่อองก์ เช่น ปัญหา] ([เวลาเริ่ม] - [เวลาจบ])
| ช็อต | เวลา | กล้อง/ท่า | สิ่งที่เกิด | ทรานสิชันออก | เสียง |
|---|---|---|---|---|---|
| SH01 | 0.00-1.50 | [เช่น push-in ช้า] | [เกิดอะไร · @คำ ที่ผูกเวลา] | [CUT / WHIP / ZOOM-THRU / WIPE / MORPH / ต่อเนื่อง] | [เอฟเฟกต์] |
| SH02 |  |  |  |  |  |
| SH03 |  |  |  |  |  |

prompt ทำสตอรีบอร์ด

prompt 4
จากบทและเวลาในไฟล์ lines.json ทำสตอรีบอร์ดรายช็อตเป็นไฟล์ STORYBOARD.md

1. ช็อตละ 1.5-4 วินาที ตั้งชื่อ SH01, SH02, ... ยึดเวลาตามเสียง แบ่งเป็นองก์ตามโครงที่เลือกไว้
2. คอลัมน์: ช็อต · เวลา · กล้อง/ท่า · สิ่งที่เกิด · ทรานสิชันออก · เสียง
3. ผูกจังหวะกับคำด้วย @คำ เช่น @แตะรูป แปลว่าท่านี้เกิดตรงเวลาที่เสียงพูดคำนี้
4. ทรานสิชันใช้ชุดนี้เท่านั้น: CUT · WHIP · ZOOM-THRU · WIPE · MORPH · WIPE ใช้แค่ 3-4 ครั้งทั้งคลิป และห้ามใช้ท่าเดิมติดกัน
5. ระบุทุกครั้งว่า UI ไหนเป็น [rebuilt] (สร้างใหม่จากโค้ดแอป) และไหนเป็น [real] (คลิปอัดจอจริง)
6. มีของใหม่เข้าจอราว 1 วินาทีครั้ง ห้ามภาพนิ่งเกิน 1.5 วินาที
7. เขียนหัวข้อแยกว่าแนวตั้ง 9:16 จัดวางต่างจากแนวนอนยังไง

ทำเสร็จให้ผมอ่านก่อน ยังไม่ต้องเขียนโค้ด
แก้ได้ ความยาวช็อตชุดทรานสิชัน
ส่วนที่ 2

สร้างคลิปจากโค้ด

คลิปทั้งคลิปคือหน้าเว็บหนึ่งหน้า ที่เลื่อนเวลาไปจุดไหนก็ได้ภาพเดิมทุกครั้ง นี่คือเหตุผลที่แก้ทีละช็อตได้ และ render ออกมาไม่เพี้ยน

5

ให้ Claude สร้าง engine และ player

ภาพเคลื่อนไหวเขียนด้วย HTML CSS JavaScript และ GSAP บน timeline หลักตัวเดียวที่หยุดไว้เสมอ แล้วเลื่อนไปเวลาที่ต้องการด้วยคำสั่งเดียว แต่ละช็อตอยู่คนละไฟล์ แก้ SH12 ไม่ไปกระทบ SH13

ตัวช่วยที่คุ้มสุดคือ player หน้าเว็บที่กดเล่น เลื่อน และกระโดดไปช็อตไหนก็ได้ เช่นเปิด player.html#SH12 ก็ไปช็อตนั้นทันที ไม่ต้อง render ทั้งคลิปเพื่อดูช็อตเดียว

Spaceเล่น หรือหยุด
← →ถอยหรือเดินหน้าทีละ 1 เฟรม
[ ]ไปช็อตก่อนหน้าหรือช็อตถัดไป
?mode=vo|novoมีหรือไม่มีเสียงพากย์
?layout=h|vแนวนอน 16:9 หรือแนวตั้ง 9:16

prompt สร้าง engine และ player

prompt 5
สร้าง engine โมชั่นกราฟิกตาม STORYBOARD.md ในโฟลเดอร์ build/ เขียนเองทั้งหมด ไม่ใช้ template วิดีโอสำเร็จรูป

1. HTML/CSS/JS + GSAP · timeline หลักตัวเดียวแบบ paused คุมด้วย seek(t) เท่านั้น ห้าม autoplay
2. ช็อตละไฟล์ shots/SH01.js, shots/SH02.js, ... แก้ช็อตเดียวต้องไม่กระทบช็อตอื่น
3. window.__setT(t) = seek ไปเวลา t แล้วรอภาพทุกรูปในเฟรม decode เสร็จก่อนค่อยคืนค่า · ข้อความที่พิมพ์ทีละตัวหรือตัวเลขที่วิ่ง ต้องคำนวณจากเวลา t ทุกเฟรม ไม่ใช้ตัวจับเวลาแยก
4. ตอนเปิดหน้า รอฟอนต์ [ชื่อฟอนต์] ทุกน้ำหนักที่ใช้โหลดครบ (document.fonts.load ด้วยตัวอักษรไทย แล้ว document.fonts.ready) และภาพ decode ครบ ค่อยตั้ง window.__ready = true
5. ธง URL: ?mode=vo|novo  ?layout=h|v (16:9 = 1920x1080 · 9:16 = 1080x1920)  ?render=1 ซ่อนแผงควบคุม
6. หาเวลาของคำจาก align.json ด้วยการค้นข้อความ ห้ามพิมพ์ตัวเลขเวลาเอง
7. player.html มีปุ่มเล่น/หยุด แถบเลื่อน เวลาและชื่อช็อตปัจจุบัน รายการช็อตกดกระโดดได้ · เปิด player.html#SH12 แล้วไปช็อตนั้นเลย · คีย์ลัด Space เล่น/หยุด · ลูกศรซ้ายขวาทีละเฟรม · [ ] ช็อตก่อน/ถัดไป · ตอนพรีวิวเล่นเสียงพากย์ ดนตรี และเอฟเฟกต์ตรงเวลา
8. สีหลัก [รหัสสีแบรนด์] · ฟอนต์ [ชื่อฟอนต์] · ห้าม emoji บนจอ

เริ่มจากทำ SH01 ถึง SH03 ให้ผมดูใน player ก่อน แล้วค่อยทำช็อตที่เหลือ
แก้ได้ สีแบรนด์ฟอนต์
6

UI สร้างใหม่จากโค้ดจริง + คลิปจริงเป็นหลักฐาน

คลิปอัดจอพอซูมเข้าจะแตก เทคนิคที่ทำให้งานดูคมคือให้ Claude อ่านโค้ดแอปจริง (สี ฟอนต์ ขอบมน โครงการ์ด) แล้วสร้างหน้าจอขึ้นมาใหม่ด้วย HTML CSS หน้าตาเหมือนแอป แต่ซูมเท่าไหร่ก็คม

ส่วนคลิปอัดจอจริงยังใช้อยู่ ในกรอบ iPad หรือมือถือที่วาดด้วย CSS หรือเป็นกรอบเล็กมุมจอติดป้าย "หน้าจอจริง" ให้คนดูรู้ว่าไม่ได้แต่งขึ้น

ห้ามสร้าง UI ที่แอปไม่มีจริง ชื่อสินค้า ราคา รูป ดึงจากข้อมูลจริง ส่วนข้อมูลคนใช้ตัวอย่าง เช่น "ลูกค้า A" และกราฟไม่ใส่ตัวเลข

prompt UI จากโค้ดจริง

prompt 6
ช็อตที่เป็น [rebuilt] ให้สร้าง UI ใหม่ด้วย HTML/CSS จากโค้ดจริงของแอปใน [โฟลเดอร์โค้ด] (อ่านอย่างเดียว ห้ามแก้)

1. ดึงสี ฟอนต์ ขอบมน เงา จากไฟล์ธีมหรือ CSS ของแอป ทั้งโหมดสว่างและโหมดมืด แล้วจัดโครงการ์ด ปุ่ม ตะกร้า ให้เหมือนหน้าจอจริง
2. ชื่อสินค้า ราคา และรูป ใช้ของจริงจาก [ไฟล์เมนูหรือข้อมูลสินค้า]
3. ข้อมูลคนใช้ตัวอย่าง เช่น "ลูกค้า A" และ "08x-xxx-xxxx" · กราฟไม่ใส่ตัวเลข
4. ห้ามสร้างหน้าจอหรือปุ่มที่แอปไม่มีจริง
5. ช็อตที่เป็น [real] ให้แปลงคลิปอัดจอเป็นภาพ JPG ทีละเฟรม 30fps ย่อให้พอดีกรอบ แล้วเปลี่ยนภาพตามเวลา t ในกรอบ iPad หรือมือถือที่วาดด้วย CSS หรือเป็นกรอบเล็กมุมจอติดป้าย "หน้าจอจริง"
6. เสร็จแล้วซูม 1.6 เท่าในช็อตที่ใกล้ที่สุด เปิดดูเองว่ายังคมและตัวหนังสือไทยไม่แตก
แก้ได้ โฟลเดอร์โค้ดไฟล์ข้อมูลสินค้า
7

เสียงเอฟเฟกต์สร้างจากโค้ด

ไม่ต้องไปหาไฟล์เสียงทีละอัน ให้ Claude เขียนโค้ดสังเคราะห์เสียงเอง งานจริงของเรามีเสียงวูบ (whoosh) เสียงป๊อป เสียงกระแทก เสียงคลิก เสียงติ๊ก เสียงกระดิ่ง เสียงกระดาษ และอื่นๆ รวม 25 เสียง

จุดสำคัญคือเวลาของเสียงทุกเสียงมาจาก timeline เดียวกับภาพ แก้เวลาท่าไหน เสียงก็ขยับตามเอง ไม่ต้องพิมพ์เวลาสองที่

prompt เสียงเอฟเฟกต์และมิกซ์

prompt 7
สร้างเสียงเอฟเฟกต์ด้วยโค้ด Python (numpy) ตั้ง seed ตายตัวให้รันกี่ครั้งก็ได้เสียงเดิม เก็บไว้ที่ audio/sfx/*.wav

1. whoosh = noise ผ่าน band-pass ที่กวาดความถี่ · pop = sine ที่เสียงตกลง · impact = เสียงเบสต่ำ + noise สั้นๆ · click · tick · ding · sparkle · riser · เสียงกระดาษ [เพิ่มเสียงที่คลิปคุณต้องใช้]
2. ใน engine ทุกท่าที่ควรมีเสียง ให้เรียก sfx(ชื่อ, เวลา) จาก timeline เดียวกับภาพ แล้วส่งออกเป็น cues.json ห้ามพิมพ์เวลาเสียงซ้ำอีกที่
3. มิกซ์ด้วย ffmpeg: เสียงพากย์ 0 dB · ดนตรี [ไฟล์เพลง] ประมาณ -17 dB และลดลงอีกเล็กน้อยตอนมีเสียงพูด · เอฟเฟกต์ประมาณ 0.35 · amix normalize=0 แล้วตามด้วย alimiter กันเสียงแตก
4. โหมดไม่มีเสียงพูด: ดนตรีประมาณ -12 dB ไม่ต้องลดตอนพูด และเอฟเฟกต์หนาขึ้น ทุกท่าสำคัญมีเสียง
5. ใช้เสียงพากย์เต็มความยาว ห้ามตัดท้ายไฟล์
แก้ได้ รายชื่อเสียงไฟล์เพลง
ส่วนที่ 3

ออกไฟล์ แล้วตรวจทีละช็อต

8

Render ทีละเฟรม แล้วรวมเสียง

Puppeteer เปิด player ในโหมด render แล้วแคปทีละเฟรม 30 เฟรมต่อวินาที คลิป 69 วินาทีเท่ากับ 2,070 ภาพ จากนั้น ffmpeg รวมภาพกับเสียงเป็น mp4 แนวตั้ง 9:16 ใช้ engine ตัวเดิม แค่จัดวางใหม่ ตัวหนังสือด้านบน อุปกรณ์ตรงกลาง กรอบหน้าจอจริงด้านล่าง และเว้นขอบบนล่างไว้ไม่ให้ปุ่มของแอปโซเชียลบัง

prompt ตัว render

prompt 8
เขียน build/render.mjs สำหรับออกไฟล์วิดีโอ

1. เปิดเว็บเซิร์ฟเวอร์ในเครื่อง แล้วใช้ Puppeteer + Chrome เปิด player.html?render=1&mode=[vo|novo]&layout=[h|v] รอ window.__ready
2. แบ่งงานเป็นหลาย worker โดย 1 worker = 1 browser แยกกัน ห้ามเปิดหลายแท็บใน browser เดียว (แท็บที่อยู่ข้างหลังจะไม่วาดภาพ) · ตั้งจำนวนได้ด้วย --workers
3. ทีละเฟรม 30fps: await __setT(เฟรม/30) แล้ว screenshot เป็น JPEG เก็บในโฟลเดอร์เฟรม
4. render เฉพาะช่วงได้ด้วย --from SH20 --to SH23 โดยทับเฉพาะเฟรมช่วงนั้น
5. เฟรมครบแล้ว มิกซ์เสียง แล้วใช้ ffmpeg รวมเป็น mp4 H.264 crf 18 yuv420p เสียง AAC 192k และ +faststart
6. แนวตั้ง layout=v ใช้ engine เดียวกัน จัดวางใหม่: ตัวหนังสือบน อุปกรณ์กลาง กรอบหน้าจอจริงล่าง เว้นขอบบน 120px และล่าง 260px ไม่ให้ปุ่มของแอปโซเชียลบัง
7. ตั้งชื่อไฟล์ [ชื่องาน]_[16x9|9x16]_[vo|novo]_[วันที่].mp4
แก้ได้ ชื่อไฟล์ขอบ safe zone

คำสั่งที่เราใช้จริง (Claude รันให้ได้ หรือพิมพ์เองใน terminal)

แนวนอน มีเสียงพากย์
node build/render.mjs --mode vo --layout h --workers 4
แนวตั้ง ไม่มีเสียงพูด เครื่อง RAM น้อย
node build/render.mjs --mode novo --layout v --workers 2
render ใหม่เฉพาะช่วง
node build/render.mjs --mode vo --layout h --from SH20 --to SH23
9

ตรวจและแก้ทีละช็อต

อย่าดูแค่เล่นผ่านรอบเดียว ให้ทำ contact sheet คือภาพเล็กเรียงเป็นตาราง ภาพละ 1 วินาที มีเวลาและเลขเฟรมกำกับ เห็นทั้งคลิปในไม่กี่แผ่น ช่วงทรานสิชันเร็วๆ ให้ทำแบบละเอียด 10 ภาพต่อวินาที

contact sheet→จดเป็นเลขช็อต→แก้ช็อตนั้น→render เฉพาะช่วง

เวลาบอกแก้ ให้พูดเป็นเลขช็อตเสมอ เช่น

SH12 ชิปคิวใหญ่เกินไป ย่อลง 20% แล้วเลื่อนขึ้นไม่ให้ทับกรอบหน้าจอจริง แก้เสร็จ render เฉพาะ SH12 แล้วทำ contact sheet ช่วงนั้นให้ดู

prompt ตรวจคลิป

prompt 9
ตรวจคลิปที่ render แล้วทุกเวอร์ชัน

1. ทำ contact sheet ภาพละ 1 วินาที มีเวลาและเลขเฟรมบนภาพ แบ่งเป็นหลายแผ่นให้อ่านออก แล้วเปิดดูเองทุกแผ่น
2. ช่วง WHIP และ ZOOM-THRU ทำ contact sheet ละเอียด 10 ภาพต่อวินาที หาเฟรมว่างหรือเฟรมกระตุก
3. เช็คทีละข้อ: ตัวหนังสือไทยไม่แตกและไม่ล้นกรอบ · ไม่มีของทับข้อความ · ไม่มีฉากว่าง · ไม่มีตัวเลขเงิน ชื่อ หรือเบอร์โทรหลุด · คลิปในจอขยับจริง (เทียบเฟรมติดกัน) · ภาพตรงกับคำที่พูด · ระดับเสียงด้วย ffmpeg ebur128
4. รายงานเป็นเลขช็อต เช่น "SH14 ข้อความทับมือถือ" แก้ทีละช็อต แล้ว render เฉพาะช่วงนั้นด้วย --from --to
ห้ามบอกว่าเสร็จจนกว่าจะเปิดดูผลเองแล้ว
ส่วนท้าย

หลุมที่เราเจอจริงระหว่างทำ

บอก Claude ไว้ก่อนตั้งแต่แรก ประหยัดเวลาแก้ได้เยอะ

ตอน WHIP มีเฟรมว่างโผล่ขึ้นมา 1-2 เฟรม
เกิดเมื่อฉากที่ออกกับฉากที่เข้าขยับด้วยจังหวะคนละตัว เลยมีเฟรมที่ทั้งคู่ออกนอกจอ วิธีแก้คือให้ทั้งสองฉากใช้เส้นความเร็วเดียวกัน ขอบชิดกันทุกเฟรม แล้วเช็คด้วย contact sheet แบบละเอียด
ข้อความถูกอุปกรณ์หรือการ์ดทับ
กำหนดโซนตัวหนังสือให้ชัดในแต่ละ layout และบอก Claude ว่าข้อความต้องอยู่บนสุดเสมอ แนวตั้งเจอบ่อยกว่าเพราะพื้นที่แคบ ต้องเช็คทั้ง 16:9 และ 9:16 แยกกัน
ตัวเลขหมุนแบบสล็อตมีเศษตัวเลขโผล่ขอบบนล่าง
ให้แต่ละคอลัมน์โชว์แค่ตัวเลขปัจจุบันกับตัวถัดไป ซ่อนส่วนที่ล้นกรอบ แล้วใส่เงาจางที่ขอบบนและล่าง เศษตัวอักษรจะไม่หลุดออกมา
render แล้วบางช่วงภาพค้าง หรือไม่ขยับ
ถ้าเปิดหลายแท็บใน browser เดียวเพื่อแคปขนานกัน แท็บที่อยู่ข้างหลังจะไม่วาดภาพ ให้แยกเป็น 1 browser ต่อ 1 worker และให้ engine รอภาพ decode ครบก่อนแคปทุกเฟรม
เครื่องค้างหรือ render ล่มกลางทาง
แต่ละ worker คือ Chrome หนึ่งตัว กิน RAM เยอะ งานจริงของเราแนวนอนใช้ 6 worker แต่แนวตั้งลดเหลือ 2 ถ้าเครื่อง RAM น้อยให้เริ่มที่ --workers 2
เฟรมแรกๆ ตัวหนังสือเป็นฟอนต์อื่น แล้วค่อยเปลี่ยน
ต้องรอฟอนต์โหลดครบก่อนเริ่มแคป โหลดทุกน้ำหนักที่ใช้ด้วยตัวอักษรไทยจริง แล้วรอ document.fonts.ready ค่อยบอกว่าพร้อม
ภาษาไทยขึ้นบรรทัดใหม่กลางคำ
ภาษาไทยไม่มีเว้นวรรคระหว่างคำ เบราว์เซอร์เลยตัดผิดที่ได้ ให้แบ่งบรรทัดเองทีละวลี แต่ละบรรทัดอยู่คนละกล่อง และสั่งไม่ให้ตัดบรรทัดในกล่องนั้น
DONE ครบแล้ว

ได้คลิปโปรโมทของตัวเองแล้ว

ทำเสร็จแล้วเอามาอวดกันในคอมเมนต์ที่เพจได้นะ แล้วติดตามไว้ ชุดแจกต่อไปจะมาอีกเรื่อยๆ

ติดตาม AIDailyTH ดูเครื่องมืออื่น
เริ่มต้นเลือกทางที่ใช่ก่อน