พื้นฐานที่ต้องรู้ก่อนเริ่ม (อ่าน 2 นาที)
3 คำนี้จะโผล่ตลอดทั้งเล่ม เข้าใจก่อนแล้วทุกอย่างจะง่ายขึ้นมาก — และมันเชื่อมโยงกันด้วยเหตุผลเดียว
AI agent จำบทสนทนาได้ จำกัด เปรียบเหมือนโต๊ะทำงานที่มีพื้นที่จำกัด — คุยกันยาว ๆ ไปเรื่อย ๆ ของเก่าจะถูกดันตกโต๊ะ (= มัน "ลืม" สิ่งที่คุยตอนต้น) และยิ่งบทสนทนายาว ยิ่งเปลือง token
👉 ปัญหานี้คือเหตุผลที่เราต้องมี 2 เครื่องมือข้างล่าง เพื่อ "ฝากความจำ" ไว้นอกโต๊ะ
เป็นไฟล์ข้อความธรรมดาที่ agent อ่านทุกครั้งที่เปิดงานใหม่ ใช้จดกฎ/วิธีทำงาน/ค่าตั้งต้นสำคัญไว้ → พอเปิด session ใหม่ มันอ่านสมุดนี้แล้ว "จำได้" ทันที ไม่ต้องเล่าใหม่
(
.md = ไฟล์ Markdown ข้อความล้วน เปิด/แก้ด้วยโปรแกรมอะไรก็ได้ · CLAUDE.md คือชื่อไฟล์ที่ Claude Code อ่านอัตโนมัติ)
เมื่อเราสอน agent ทำอะไรจนนิ่งแล้ว เก็บวิธีนั้นเป็น skill (ไฟล์ชุดคำสั่ง) ครั้งหน้าเรียกครั้งเดียวมันทำครบเลย ไม่ต้องอธิบายใหม่ทุกครั้ง
ข้อดี: ประหยัด context + ได้ผลสม่ำเสมอ เพราะความฉลาดถูกฝังในไฟล์ ไม่ต้องพึ่งความจำชั่วคราว
ใช้กับทุก session
หลักคิดง่าย ๆ ที่ทำให้สั่งงาน agent แล้วได้งานตรงใจ ไม่ต้องแก้วนหลายรอบ:
- บอกให้ครบ 3 อย่างในคำสั่งเดียว: บริบท → เป้าหมาย → ข้อจำกัด
เช่น "ผมทำงานโฆษณา (บริบท) อยากได้โปสเตอร์ 2 ภาพ (เป้าหมาย) ห้ามใช้ภาพคนจริง (ข้อจำกัด)" ยิ่งบอกครบ agent ยิ่งเดาใจถูก - งานใหญ่ ให้สั่งวางแผนก่อนเสมอ — เติมท้ายคำสั่งว่า "วางแผนให้ดูก่อน อย่าเพิ่งเขียนโค้ด" จะได้เห็นว่ามันเข้าใจตรงกับเราไหม ก่อนลงมือทำจริงแล้วเสียเวลา
- ทำให้นิ่งก่อน แล้วค่อยเก็บเป็น skill — ลองสั่งจนได้ผลลัพธ์ที่พอใจซ้ำ ๆ ก่อน แล้วค่อยบอกให้มันจำเป็น "skill" (เหมือนปุ่มลัด) เพื่อเรียกใช้ครั้งหน้าได้เลย
- ปิดท้ายทุก session ด้วยการให้มันจดบันทึก — สั่งให้ อัปเดต CLAUDE.md หรือ pack skill เสมอ
CLAUDE.mdคือสมุดโน้ตของโปรเจกต์ที่ agent อ่านทุกครั้งที่เปิดงานใหม่ ถ้าไม่จด พอเปิด session ใหม่มันจะลืม
อ่าน CLAUDE.md แล้วบอกผมว่าตอนนี้มี skill อะไรบ้าง และยิงภาพยังไง
- Nano Banana 2 (เร็ว ถูก) — ค่าโรงงานมันจะสร้างแค่ 1 ภาพต่อครั้ง แม้สั่ง 2 ภาพ ต้องตั้งค่าให้ปลดล็อกก่อนถึงจะได้หลายภาพ และมีปุ่มปรับความเข้มงวดเนื้อหา (safety) ที่ GPT ไม่มี
- GPT Image 2 (คุณภาพสูง เหมาะงาน commercial) — กำหนดสัดส่วนภาพด้วยขนาดพิกเซลจริง ไม่ใช่เลือกจากตัวเลือกสำเร็จ และคุมคุณภาพได้ ควรล็อกไว้ที่ระดับกลางเพื่อกัน credit บานปลาย
แต่ละขั้นมีป้ายบอกว่าควรใช้โมเดล Claude ตัวไหนรัน เพื่อให้ได้คุณภาพดี + ประหยัด token
หลักคิด: จ่ายแพง (Opus/high) ตอน "สร้างของยาก" · ประหยัด (Sonnet) ตอน "ใช้ของที่สร้างไว้แล้ว"
/model — สลับกลาง session ได้ ไม่เสีย context · ป้ายนี้คือโมเดล Claude ที่รันงาน คนละตัวกับโมเดลสร้างภาพ (Nano/GPT) ด้านบน
ตั้งค่าเชื่อมต่อ fal.ai (API key)
หลักการเก็บให้ปลอดภัย: เราจะให้ Claude ตั้งโครงไฟล์ให้ → เราเป็นคนเอา key ไปวางเอง → สคริปต์จะอ่าน key จากที่ซ่อนไว้ ผลคือ Claude ไม่เคยเห็นค่า key ของเราเลย ปลอดภัยตั้งแต่ต้น
1.1Sonnet · highขั้น A — ให้ Claude ตั้งโครงโปรเจกต์ให้ก่อน (ยังไม่ต้องมี key)
ผมทำ agent ยิงภาพผ่าน fal.ai ช่วยตั้งโครงโปรเจกต์ให้ใช้ได้ข้าม session: - สร้าง .env.example (มีบรรทัด FAL_KEY=your_fal_key_here) - สร้าง .gitignore กัน .env / node_modules / output หลุด git - package.json type module + ติดตั้ง @fal-ai/client และ tsx ผมจะใส่ FAL_KEY เองทีหลัง ห้ามถาม/อ่าน/พิมพ์ค่า key ของผม วางแผนให้ดูก่อน
1.2🙋 ทำเองขั้น B — เราวาง key เอง (Claude ไม่ยุ่งด้วย)
cd เข้าโฟลเดอร์โปรเจกต์ก่อนเสมอ!ก่อนพิมพ์คำสั่ง
cp/Copy-Item ข้างล่าง ต้องพา Terminal "เข้าไปอยู่ใน" โฟลเดอร์โปรเจกต์ก่อน ด้วยคำสั่ง cdถ้าข้ามขั้นนี้ Terminal จะยังอยู่ที่โฟลเดอร์บ้าน (สังเกตเห็น
~ % หน้าบรรทัด) แล้วจะเจอ error ว่า .env.example: No such file or directory เพราะมันไปหาไฟล์ผิดโฟลเดอร์เงื่อนไข: ขั้น 1.1 (ให้ Claude สร้าง
.env.example) ต้องทำเสร็จในโฟลเดอร์นี้ก่อน ไฟล์ถึงจะมีให้ก๊อป🍎 สำหรับ macOS
ขั้นแรก เข้าโฟลเดอร์โปรเจกต์ — เปิด Terminal แล้วพิมพ์ cd เว้นวรรค 1 ที จากนั้น ลากโฟลเดอร์โปรเจกต์จาก Finder มาวางในหน้าต่าง Terminal (มันจะเติม path ให้เองอัตโนมัติ) แล้วกด Enter:
cd '/path/to/โฟลเดอร์โปรเจกต์ของคุณ' # ← ลากโฟลเดอร์จาก Finder มาวางแทน path นี้ ls -a # เช็คว่ามาถูกที่ ต้องเห็นไฟล์ .env.example ในลิสต์
'...' (การลากจาก Finder จะใส่ให้เองอยู่แล้ว) · ถ้า ls -a แล้ว ไม่เห็น .env.example แปลว่ายังไม่ได้ทำขั้น 1.1 ในโฟลเดอร์นี้เห็น .env.example แล้วค่อยรันต่อ ทีละบรรทัด:
cp .env.example .env # ก๊อปไฟล์ตัวอย่างเป็นไฟล์จริงชื่อ .env open -e .env # เปิดไฟล์ .env ด้วยโปรแกรม TextEdit
🪟 สำหรับ Windows
ขั้นแรก เข้าโฟลเดอร์โปรเจกต์ — เปิด PowerShell (เปิดโฟลเดอร์โปรเจกต์ใน File Explorer → พิมพ์ powershell ในแถบ address ด้านบนแล้วกด Enter — วิธีนี้จะพาเข้าโฟลเดอร์ให้เลย) หรือพิมพ์ cd เว้นวรรค แล้ว ลากโฟลเดอร์จาก File Explorer มาวาง แล้วกด Enter:
cd 'C:\path\to\โฟลเดอร์โปรเจกต์ของคุณ' # ← ลากโฟลเดอร์มาวางแทน path นี้ dir -Force # เช็คว่ามาถูกที่ ต้องเห็นไฟล์ .env.example ในลิสต์
'...' · ถ้า dir -Force แล้ว ไม่เห็น .env.example แปลว่ายังไม่ได้ทำขั้น 1.1 ในโฟลเดอร์นี้เห็น .env.example แล้วค่อยรันต่อ ทีละบรรทัด:
Copy-Item .env.example .env # ก๊อปไฟล์ตัวอย่างเป็นไฟล์จริงชื่อ .env notepad .env # เปิดไฟล์ .env ด้วยโปรแกรม Notepad
จากนั้น (ทั้ง Mac และ Windows เหมือนกัน)
ในไฟล์ที่เปิดขึ้นมา จะเห็นข้อความว่า FAL_KEY=your_fal_key_here ให้แก้ให้เป็นแบบนี้ แล้ว เซฟ (กด Ctrl+S บน Windows / Cmd+S บน Mac):
FAL_KEY=[API KEY]
[API KEY] คือจุดที่เราเอา key จริงไปวางทับ — ไป copy key มาจาก https://fal.ai/dashboard/keysวางทับให้เหลือแค่
FAL_KEY=fal_xxxxxxxx (ไม่ต้องมีวงเล็บเหลี่ยม ไม่ต้องมีเครื่องหมายคำพูด)
1.3Sonnet · highขั้น C — กลับมาให้ Claude ทดสอบว่าใช้ได้จริง
สร้างสคริปต์ยิงภาพ scripts/generate.ts ที่อ่าน FAL_KEY จาก env เท่านั้น ห้ามอ่านหรือ print ค่าใน .env แล้วทดสอบยิง nano banana 2 มา 1 ภาพ ถ้าได้ภาพ = key ใช้งานได้
ถ้าภาพออก = เสร็จ! key พร้อมใช้ทุก session ในโฟลเดอร์นี้แล้ว
1.4📖 อ่านเอง✅ กฎกันพลาดเรื่อง key (อ่านครั้งเดียว จำไว้ตลอด)
- ❌ อย่าพิมพ์ key ลงช่องแชต Claude โดยตรง
- ❌ อย่าสั่ง Claude ว่า
cat .envหรือ "เปิดอ่านไฟล์ .env ให้หน่อย" (key จะไหลเข้าแชต) - ❌ อย่าส่ง path ของไฟล์ key ให้ Claude เปิดดู
- ✅ ไฟล์
.envถูกกันด้วย .gitignore แล้ว จะไม่หลุดขึ้น git/อินเทอร์เน็ต - ⚠️ ถ้าเผลอทำ key โผล่ที่ไหน → เข้า fal dashboard กดปุ่ม regenerate เพื่อสร้าง key ใหม่ ตัวเก่าจะใช้ไม่ได้ทันที
1.5🙋 ทำเอง(ตัวเลือกเสริม) อยากใช้ key เดียวกันกับทุกโปรเจกต์
🍎 macOS
เปิด Terminal พิมพ์:
echo 'export FAL_KEY="[API KEY]"' >> ~/.zshrc source ~/.zshrc
🪟 Windows
เปิด PowerShell พิมพ์ (วาง key จริงทับ [API KEY]):
setx FAL_KEY "[API KEY]"
👉 วาง key จริงทับ
[API KEY] แล้วทุกโปรเจกต์/ทุก session อ่าน key นี้ได้เลย ไม่ต้องทำไฟล์ .env รายโปรเจกต์1.6🔴 Opus · highทำสคริปต์กลางให้สมบูรณ์ (หัวใจที่ทำให้ตั้งค่าครั้งเดียวอยู่ถาวร)
เรื่องการเก็บไฟล์: ภาพที่ยิงในการคุย (session) เดียวกันจะเซฟ รวมอยู่โฟลเดอร์เดียว โฟลเดอร์ไม่รก พอเปิดการคุยใหม่ค่อยแยกโฟลเดอร์ใหม่ ตั้งชื่อไฟล์เป็นวันเวลาที่เจนเพื่อกันไฟล์ทับกัน · ส่วน setting + prompt ของแต่ละภาพยังถูกเก็บไว้เพื่อใช้ต่อภายหลัง
ปรับ scripts/generate.ts ให้สมบูรณ์: - บล็อก DEFAULTS เก็บค่า default ต่อโมเดลไว้ที่เดียว (aspect/resolution/quality/safety) - nano-banana-2 = fal-ai/nano-banana-2 , GPT image2 = openai/gpt-image-2 รองรับทั้ง gen และ edit - รับ args: --model --prompt --n --image - img-to-image (สำคัญ): --image รองรับทั้ง URL และ path ในเครื่อง ถ้าเป็น path ในเครื่องให้ auto-upload ขึ้น fal storage ก่อน (fal รับภาพอ้างอิงเป็น URL เท่านั้น — ใช้ fal.storage.upload) ใส่ซ้ำได้หลายรูป; เมื่อมี --image ให้สลับไปใช้ endpoint /edit ของโมเดลอัตโนมัติ (เช่น fal-ai/nano-banana-2/edit) ห้ามส่งภาพเข้า endpoint สร้างภาพปกติ - เซฟภาพลง output/<ชื่อ-session>/ — แยกโฟลเดอร์ "ตาม session" เท่านั้น (ขึ้น session ใหม่ค่อยสร้างโฟลเดอร์ใหม่ / อยู่ session เดิมเซฟรวมโฟลเดอร์เดิม) ห้ามแยกซับโฟลเดอร์รายรอบ - ตั้งชื่อไฟล์ภาพเป็นวันเวลาที่เจน เช่น 2026-06-19_14-30-05.png เพื่อกันชื่อชนกัน - เขียน manifest.json ไฟล์เดียวไว้ในโฟลเดอร์ session เดียวกับภาพ — เก็บเป็นรายการ ภาพละ 1 entry (ชื่อไฟล์ + prompt + setting ที่ใช้จริง + ระบุว่ามาจากคำสั่งเจนครั้งไหน/batch ไหน) ยิงภาพใหม่ในโฟลเดอร์เดิมให้ append ต่อท้าย ไม่เขียนทับ เปิดหน้า model บน fal.ai เช็คชื่อ param ล่าสุดก่อนแก้ โดยเฉพาะ limit_generations ของ nano-banana-2
1.7Sonnet · mediumให้ Claude จดบันทึกลง CLAUDE.md ก่อนปิด session
เขียน CLAUDE.md: โปรเจกต์ใช้ fal.ai, key อยู่ .env (ผมเติมเอง ห้ามอ่าน), ยิงภาพผ่าน scripts/generate.ts เท่านั้น, default อยู่ที่ DEFAULTS เพิ่มกติกาสำคัญลง CLAUDE.md ด้วย: ห้ามยิง/สร้างภาพเองโดยที่ผมไม่ได้สั่ง — ยิงเฉพาะเมื่อผมสั่งชัดเจนเท่านั้น, ห้ามเจนภาพ "ตัวอย่าง/ทดลอง/มาให้ดูเฉย ๆ", ถ้าคิดว่าควรเจนเพื่อทดสอบให้ถามผมก่อนทุกครั้งแล้วรอผมตอบตกลง, ตอนวางแผน/อธิบายให้ใช้ข้อความเท่านั้นไม่ต้องยิงภาพประกอบ
ตั้งค่า default + สร้าง skill ของ 2 โมเดล
2.1Sonnet · mediumทดสอบว่า key ยังใช้ได้ข้าม session
คุณลองทดสอบสร้างภาพด้วย nano banana 2 จำนวน 1 ภาพ ผ่าน key api ของ Fal ai ที่ผมเชื่อมไว้
2.2Sonnet · mediumขอดูค่า default ปัจจุบันของแต่ละโมเดล
ผมอยากทราบ default เริ่มต้นในการยิงภาพของแต่ละโมเดล ทั้งคุณภาพ, สัดส่วน, ความละเอียด, และ safety tolerance เพื่อที่ผมจะปรับเปลี่ยนได้ตามต้องการ
2.3Sonnet · highปรับ default ให้นิ่งถาวร
- ข้อ 1 สั่งให้ภาพชัดระดับ 4K เสมอ (ถ้าโมเดลทำไม่ได้ก็ให้เอาที่สูงสุดเท่าที่ได้)
- ข้อ 2 กำหนดสัดส่วนเริ่มต้นของแต่ละโมเดล — GPT Image 2 ต้องแปลงสัดส่วนเป็นขนาดพิกเซลจริง เพราะมันไม่ได้เลือกสัดส่วนจากตัวเลือกสำเร็จเหมือน Nano Banana
- ข้อ 3 ล็อกคุณภาพ GPT ไว้ที่ระดับกลาง เพราะระดับสูงกิน credit เยอะมาก ป้องกันค่าใช้จ่ายบานปลายโดยไม่ตั้งใจ
- ข้อ 4 เปิดปุ่ม safety ของ Nano ให้กว้างสุด (GPT ไม่มีปุ่มนี้)
- ข้อ 5 ปลดล็อก Nano ให้ยิงได้มากกว่า 1 ภาพจริง (ค่าโรงงานมันล็อกไว้ที่ 1 ภาพ)
ปรับ default ถาวรตามกติกานี้ — แก้ทั้งใน DEFAULTS ของ scripts/generate.ts และเขียนเป็นกติกาภาษาคนใน CLAUDE.md ด้วย: 1) สร้างภาพระดับ 4K เสมอ ถ้าติดเงื่อนไขของโมเดล ให้ใช้ความละเอียดสูงสุดเท่าที่ทำได้ 2) nano banana 2 → default ratio 4:5 | GPT image2 → default ratio 3:4 (GPT image2 ใช้ image_size กำหนดขนาดเอง ขอบหาร 16 ลงตัว ให้แปลง 3:4 เป็นขนาดจริง) 3) GPT image2 → quality "medium" เท่านั้น แม้ผมสั่ง "คุณภาพสูงสุด" ก็ห้ามตีความเป็น high (กัน credit บาน) 4) nano banana 2 → safety_tolerance = 6 (GPT image2 ไม่มี param นี้) 5) nano banana 2 → ตั้ง limit_generations = false เพื่อให้ยิงได้มากกว่า 1 ภาพจริง ทำเสร็จสรุปให้ผมว่าแก้ตรงไหนบ้าง
2.4Sonnet · mediumยิงภาพยืนยันว่า default ใหม่ทำงานจริง
ยิง nano-banana-2 และ gpt-image-2 อย่างละ 2 ภาพ ด้วย prompt เดียวกัน "premium product KV, studio bg" เพื่อเช็คว่าออกมา 2 ภาพจริง และตรงตาม default ใหม่
2.5Sonnet · highสร้าง skill แยกของแต่ละโมเดล
คุณช่วยสร้าง skill ยิงภาพ nano banana2 และ GPTimage2 โดยแยกเป็นคนละ skill กัน เพื่อที่ผมจะตั้งค่าและกำหนดกติกาได้แตกต่างกัน — ทั้งคู่เรียก scripts/generate.ts, ใส่ allowed-tools ให้รันได้ไม่ต้องกดอนุญาต, description ให้ trigger ด้วยคำว่า "ยิงภาพ/เจนภาพ/แก้ภาพ" ใส่กฎในตัว skill ด้วยว่า: ยิงภาพเฉพาะเมื่อถูกเรียกพร้อมคำสั่งชัดเจนเท่านั้น ไม่เจนเองตอนถูกโหลดหรือตอนวางแผน
2.6🔴 Opus · highตรวจว่าแนบรูปอ้างอิงได้ไหม (img-to-image)
⚠️ จุดที่พังบ่อย: fal.ai รับภาพอ้างอิงเป็น ลิงก์ (URL) เท่านั้น ไม่รับไฟล์ในเครื่อง และต้องยิงผ่านโหมด "แก้ภาพ" (endpoint /edit) คนละช่องกับการสร้างภาพใหม่ ถ้าสคริปต์ไม่ได้ทำ 2 อย่างนี้ การแนบรูปจะใช้ไม่ได้ — prompt ด้านล่างจึงสั่งให้ตรวจและแก้ให้ครบ พร้อมทดสอบจริง
คุณช่วยตรวจสอบให้หน่อยว่า ทั้ง 2 skill นี้สามารถยิงภาพแบบแนบ ref หรือ img to img ได้ไหม ถ้ายังทำไม่ได้ ให้แก้ scripts/generate.ts ให้รองรับ: 1) --image เป็น path ในเครื่องแล้ว auto-upload ขึ้น fal storage (fal รับภาพอ้างอิงเป็น URL เท่านั้น — ใช้ fal.storage.upload) 2) เมื่อมี --image ให้สลับไปใช้ endpoint /edit ของโมเดลอัตโนมัติ ไม่ใช่ส่งภาพเข้า endpoint สร้างภาพปกติ เปิดหน้า model บน fal.ai เช็คชื่อ edit endpoint + ชื่อ param ภาพ (image_url/image_urls) ล่าสุดก่อนแก้ แล้วทดสอบยิง img-to-image จริงอย่างละ 1 ภาพให้ดู
พอท่อส่งรูปทำงานแล้ว ยังมีอีกด่าน — วิธีเขียน prompt ถ้าเขียนผิด ภาพที่ออกมาจะ "ไม่เหมือนรูปต้นแบบ" เพราะโมเดลจะวาดใหม่หมดแทนที่จะแก้จากของเดิม
สาเหตุ: ถ้า prompt ยาว/บรรยายฉากทั้งหมด โมเดลจะเข้าใจว่า "อยากได้ภาพใหม่ตามคำบรรยาย" แล้วทิ้ง ref → ต้องเขียนแบบ "สั่งแก้" ไม่ใช่ "สั่งสร้าง"
สูตรเขียน prompt แก้ภาพ:
- ขึ้นต้นด้วย "จากภาพที่แนบ..." (based on the attached image...)
- บอก เฉพาะส่วนที่จะเปลี่ยน ส่วนเดิมไม่ต้องบรรยายซ้ำ
- เติมท้าย "เก็บองค์ประกอบเดิม (ตัวแบบ/มุม/สี/สัดส่วน) ให้เหมือนเดิม"
- ใช้ รูปหลักรูปเดียว ก่อน (แนบหลายรูปพร้อมกันทำให้โมเดลงงว่าจะเกาะอันไหน)
| ❌ แบบที่ทำให้ไม่เหมือน ref | ✅ แบบที่เกาะ ref |
|---|---|
product on white background | จากภาพที่แนบ เปลี่ยนพื้นหลังเป็นสีขาว เก็บตัวสินค้าให้เหมือนเดิมทุกอย่าง |
add a crown to the product | จากภาพที่แนบ เพิ่มมงกุฎบนตัวสินค้า ห้ามเปลี่ยนรูปทรง/สี/มุมของสินค้าเดิม |
--image agent เขียน prompt แบบเกาะ ref ให้อัตโนมัติ ผู้ใช้คนอื่นจะได้ไม่เจอปัญหาภาพไม่เหมือนต้นแบบฝังกฎ "วิธีเขียน prompt ตอนมี --image (img2img)" ลงในทั้ง 2 skill และ CLAUDE.md: 1) prompt ต้องสั้น บอกเฉพาะสิ่งที่จะเปลี่ยน ไม่บรรยายฉากทั้งหมดใหม่ 2) ขึ้นต้นด้วย "จากภาพที่แนบ..." แล้วต่อด้วยสิ่งที่ต้องการเปลี่ยน 3) เติมท้ายว่า "เก็บองค์ประกอบเดิม (ตัวแบบ/มุม/สี/สัดส่วน) ให้เหมือนเดิม" 4) ใช้รูปหลักรูปเดียวก่อน เว้นแต่จำเป็นต้องใช้หลายรูป แก้ตัวอย่าง command ใน CLAUDE.md ให้เป็น prompt แบบแก้ภาพตามกฎนี้ (เลิกใช้ prompt แบบสร้างใหม่) แล้วยิงทดสอบ img2img จริง 1 ภาพด้วย prompt แบบใหม่ ให้ผมเทียบกับ ref ว่าเกาะต้นแบบไหม
2.7Sonnet · mediumอัปเดต CLAUDE.md + ทดสอบว่า skill ทำงานเอง
อัปเดต CLAUDE.md ลิสต์ skill 2 ตัวนี้
ยิงภาพ poster ด้วย gpt image มา 2 ภาพ
(พิมพ์แบบธรรมชาติ เพื่อเช็คว่า Claude เรียก skill เองติดไหม)
สร้าง Web Board สำหรับส่งงาน + skill รวม
3.1Sonnet · mediumลองทำงานตัวอย่างขึ้นมาก่อน
คุณช่วยทำ poster 2 ภาพ banner 2 ภาพ มีข้อความ "ต่อ API เป็นแล้ว ไม่ยากเลย ถ้ากลัวลืมก็แค่ย้อนแชทขึ้นไปอ่านดู" คิด concept ให้เลย ผมเอาเป็นตัวอย่างเฉยๆ ใช้ GPTimage2 ในการสร้าง
3.2🔴 Opus · highสร้าง Web Board ไว้ตรวจงาน
รอบนี้เราล็อก stack (เครื่องมือที่ใช้สร้าง) ไว้ให้เลย ไม่ปล่อยให้ agent เลือกเอง: หน้าเว็บใช้ HTML ธรรมดา (เบา ไม่ต้องลง framework), เสิร์ฟด้วย Node.js (เครื่องมือตัวเดียวกับที่ยิงภาพอยู่แล้ว ไม่ต้องลง Python เพิ่ม), เก็บข้อมูลเป็น ไฟล์ JSON ธรรมดา (ไม่ต้องมีฐานข้อมูลให้ยุ่งยาก) — แต่ยังให้มันวางแผนมาให้ดูก่อนเริ่มเขียนเหมือนเดิม
📋 รายละเอียด settings ที่ต้องโชว์ (ป้ายกำกับเป็นภาษาอังกฤษ แยกช่อง อ่านง่าย ไม่ใช่ JSON ดิบ): Model · Mode (Text-to-Image / Image-to-Image) · Aspect Ratio · Image Size (แยกช่องกับ Aspect Ratio) · Resolution (โชว์เป็นกี่ K) · Quality · Cost (ค่ายิงต่อภาพ แปลงเป็นเงินบาท)
หมายเหตุ Cost: ราคาต่อภาพของแต่ละโมเดลอ่านจาก fal.ai แล้วคูณอัตราแลกเปลี่ยน USD→THB ที่ตั้งไว้จุดเดียว ปรับได้
ช่วยส่งงานขึ้น web board แบบ local host ให้ผมตรวจง่ายขึ้น แต่ละภาพต้องโชว์ prompt (มีปุ่ม copy) + settings ทั้งหมดที่ใช้ แสดง settings แยกเป็นช่อง ๆ ป้ายกำกับเป็นภาษาอังกฤษ อ่านง่าย ห้ามโชว์เป็นโค้ด JSON ดิบ (เบื้องหลังอ่านจาก manifest.json ได้ แต่ต้องแปลงเป็นข้อความก่อนแสดง) ประกอบด้วย: - Model : ชื่อโมเดล เช่น GPT Image 2 / Nano Banana 2 - Mode : Text-to-Image หรือ Image-to-Image (ดูจากว่ามี --image ไหม) - Aspect Ratio: เช่น 3:4 (แยกช่องกับ Image Size) - Image Size : ขนาดพิกเซลจริง เช่น 2448×3264 - Resolution : โชว์เป็นกี่ K (1K/2K/4K/8K) - Quality : เช่น medium - Cost : ค่ายิงต่อภาพแปลงเป็นเงินบาท เช่น "~1.8 บาท" — อ่านราคาต่อภาพของแต่ละโมเดลจาก fal.ai แล้วคูณอัตราแลกเปลี่ยน USD→THB (ตั้งค่า rate ไว้จุดเดียว ปรับได้) ให้แยกการส่งขึ้นบอร์ดเป็น "แต่ละครั้งที่สั่งเจน" (1 คำสั่งเจน = 1 ชุดงานบนบอร์ด) แม้ภาพจะอยู่ในโฟลเดอร์ session เดียวกัน ใช้ stack แบบนี้: หน้าเว็บเป็น HTML ธรรมดา (CSS/JS ในไฟล์ ไม่ต้องใช้ framework), เสิร์ฟด้วย Node.js ให้เข้ากับ scripts/generate.ts ที่เป็น Node/TypeScript อยู่แล้ว (ไม่ต้องลง Python), เก็บข้อมูลเป็นไฟล์ JSON ธรรมดา (อ่านจาก manifest.json, รีวิวเซฟเป็น JSON) ไม่ต้องมีฐานข้อมูล วางแผนให้ดูก่อน อย่าเพิ่งเขียน
3.3Sonnet · highเปิด preview ดูภาพได้ในตัว
ช่วยทำให้ผมเปิด preview ดูภาพบน web board บน claude code ได้เลย ภาพ preview แสดงตามสัดส่วนจริง กดแล้วเห็นภาพเต็ม
3.4Sonnet · mediumรอบกำกับทิศทางงาน (art direction)
แก้ภาพ poster ชุด "ต่อ API เป็นแล้ว" ที่เพิ่งทำ ให้ดูทรงพลังขึ้น: 1) เปลี่ยนเป็นลายเส้น/graphic ไม่เอา realistic 2) มีมิติมากขึ้น เล่นระยะข้อความกับตัวแบบ 3) แบ่งสัดส่วนสีให้ภาพรวมโดดเด่น พรีเมียม เป็นโฆษณา ใช้ nano banana2 และ GPT image2 อย่างละ 2 ภาพ สร้างใน board แทนที่ภาพเก่า
3.5Sonnet · highเก็บทั้งระบบเป็น skill ชื่อ board graphic
ช่วยสร้าง skill ชื่อ board graphic เมื่อเรียกใช้ คุณจะจดจำการทำงานที่เราทำกันไป และสร้างภาพออกมาให้ โดยผมระบุโมเดลได้
3.6Sonnet · highใส่ระบบรีวิวลงในบอร์ด
ปรับการส่งบอร์ด: แต่ละภาพกดเลือกได้ ผ่าน / ไม่ผ่าน / ทำใหม่ / แก้ไขภาพเดิม (ผ่าน = ล็อกไว้ไม่คอมเมนต์ซ้ำ, ทำใหม่ = สร้างใหม่, ไม่ผ่าน = ตัดทิ้ง, แก้ไขภาพเดิม = ใช้ภาพล่าสุดเป็น ref img2img) สถานะที่เลือกของแต่ละภาพต้องเปลี่ยนได้ตลอด — ถ้ากดผิด (เช่นเผลอกด "ผ่าน" แต่จริง ๆ อยากได้ "ทำใหม่") ให้กดปุ่มอื่นทับเพื่อเปลี่ยนสถานะได้เลย ไม่ล็อกตาย ใส่ช่องคอมเมนต์ 2 ช่อง: ช่อง 1 คอมเมนต์แก้ภาพ (กรณีเลือกแก้ไขเดิม), ช่อง 2 คอมเมนต์ปรับปรุง skill และเพิ่มปุ่ม "คัดลอกคอมเมนต์ JSON" เป็นปุ่มเดียวต่อ 1 ชุดงาน/รอบ ที่รวมคอมเมนต์ของทุกภาพในรอบนั้นไว้ใน JSON ก้อนเดียว กดครั้งเดียวคัดลอกทั้งหมดส่งกลับให้คุณได้สะดวก — ห้ามทำปุ่มคัดลอก JSON แยกรายภาพ
3.7Sonnet · mediumฝังกติกาเลือกโมเดลลงใน skill
/board graphic ปรับปรุง skill: งาน graphic ใช้ GPT-image2 ตลอด เว้นแต่ผมจะสั่งให้ใช้โมเดลอื่น; กรณีแก้ไขภาพเดิมใช้ nano banana 2 ตลอด เว้นแต่ผมจะสั่งให้ใช้โมเดลอื่น
3.8Sonnet · mediumให้ Claude สะท้อนบทเรียน
ถึงตรงนี้คุณได้เรียนรู้อะไร และตรงไหนที่ต้องปรับปรุง skill ช่วยวิเคราะห์ให้ผมอ่าน
3.9Sonnet · highPack skill ให้ใช้ข้ามโปรเจกต์ได้จริง
ช่วย pack skill board graphic ให้ใช้ได้ทุกโปรเจกต์จริง:
- ย้าย skill ไป ~/.claude/skills/board-graphic/
- bundle สคริปต์ยิงภาพ + ไฟล์ board เข้าไปในโฟลเดอร์ skill แล้วอ้างผ่าน ${CLAUDE_SKILL_DIR}/...
- ให้สคริปต์อ่าน FAL_KEY จาก global env (บอกวิธีตั้งใน ~/.zshrc ให้ด้วย)
- อัปเดต CLAUDE.md ของโปรเจกต์ว่ามี skill นี้แล้ว
ทดสอบโดยจำลองเรียกจากนอกโฟลเดอร์
งานลูกค้าจริง (ตั้งชื่อ session ตามชื่อแบรนด์)
4.1Sonnet · highป้อนบรีฟ + ตัวอย่างอ้างอิงให้ครบในก้อนเดียว
งานลูกค้าแบรนด์ [ชื่อแบรนด์] บรีฟ: [วางบรีฟ] - โฟลเดอร์สไตล์อ้างอิง (pathname): [path] ← อ่านดูแนวภาพที่ลูกค้าชอบ - เว็บลูกค้า: [URL] ← ดู CI ของแบรนด์ (สี โทน โลโก้ ฟอนต์) ศึกษาทั้งสามอย่างก่อน แล้วสรุป CI + ทิศทางภาพให้ผมยืนยัน ก่อนเริ่มยิง
4.2Sonnet · mediumยิงงานตามบรีฟผ่าน skill
/board graphic ยิงงานตามบรีฟแบรนด์ [ชื่อแบรนด์] ส่งขึ้น board ให้ผมตรวจ
4.3Sonnet · mediumวนรีวิวผ่านบอร์ด
นี่คอมเมนต์รอบนี้ครับ [วาง JSON] ทำตามนี้แล้วส่งบอร์ดใหม่
4.4Sonnet · highตกผลึกเป็น skill ของแบรนด์
งานเป็นที่พอใจแล้ว สร้าง skill ชื่อ [brand-name] ที่ล็อก CI + สไตล์ prompt ของแบรนด์นี้ไว้ อ้างอิงภาพที่ "ผ่าน" เป็นตัวอย่าง ครั้งหน้าเรียกแล้วยิงงานแบรนด์นี้ได้เลยโดยไม่ต้องบรีฟใหม่ แล้วอัปเดต CLAUDE.md เพิ่ม skill แบรนด์นี้
งานลูกค้าใหม่ในอนาคต
เปิด session ใหม่ ตั้งชื่อตามแบรนด์ แล้วทำซ้ำขั้นตอนใน Session 4
ส่วนแบรนด์เดิมที่เคยทำ skill ไว้แล้ว เรียก skill ของแบรนด์ได้เลย:
/[brand-name] ทำ IG post 3 ภาพ ธีมโปรโมชั่นสงกรานต์