Claude Can Use Your Apps Now
สรุปย่อ
ประเด็นสำคัญจากวิดีโอ
- **ช่อง:** Leon van Zyl · **ความยาว:** ~28 นาที · **ลิงก์:** https://www.youtube.com/watch?v=N2Ogvx_U8uM
# สรุป: Claude Can Use Your Apps Now - **ช่อง:** Leon van Zyl · **ความยาว:** ~28 นาที · **ลิงก์:** https://www.youtube.com/watch?v=N2Ogvx_U8uM ## ประเด็นหลัก - Claude connectors ที่ติดตั้งมาล่วงหน้าเชื่อม Claude กับ GitHub, Gmail, Drive, Motion และแอปอื่น ๆ ได้ แต่เราสร้างตัวเชื่อมต่อแบบกำหนดเองสำหรับแอปของตัวเองได้ โดยยกตัวอย่าง PulseBooks แอปทำบัญชีของผู้บรรยาย ที่ให้ Claude สร้างรายการค่าใช้จ่ายจากรูปใบเสร็จได้แทนผู้ใช้ - เริ่มจากใช้สกิล start-app ตั้งโปรเจกต์ใหม่ พร้อมให้ agent สร้างแอป Trello clone ที่รองรับองค์กร ทีม บทบาท คำเชิญ และการลากการ์ดบนกระดาน Kanban - ขั้นตอนสำคัญ: ให้ agent สร้างแพลนระดับสูงก่อน แล้วขยายเป็น implementation plan รายละเอียดที่แยกเป็นไฟล์ฟีเจอร์แต่ละตัวพร้อม acceptance criteria ก่อนลงมือ implement เพื่อลดความเสี่ยงที่ฟีเจอร์จะตกหล่น - ติดตั้ง Playwright MCP server เพื่อให้ agent เปิดเบราว์เซอร์ทดสอบแอปจริงแบบ end-to-end พร้อมตั้งค่าไฟล์ AGENTS.md/CLAUDE.md ให้ทดสอบและใช้ข้อมูลชุดเดิมซ้ำ (test-data.json) - ดีพลอยแอปขึ้น production ด้วย GitHub + Vercel และ Neon serverless Postgres พร้อมวิธีแก้ปัญหาการสมัครสมาชิกล้มเหลวผ่าน Vercel logs ซึ่งเกิดจากการลืมรัน database migration - เปิดเผยแอปให้ AI เข้าถึงโดยสร้าง remote MCP server (ที่ domain/mcp) เปิดเผย tools เช่น create expense ให้ agent เรียกใช้โดยไม่ต้องผ่าน UI - ใช้ Better Auth + โปรโตคอล OAuth เพื่อให้ agent ยืนยันตัวตนและทำงานแทนผู้ใช้จริง โดยเก็บ token ปลอดภัยไว้ในฝั่ง client และเพิกถอนสิทธิ์ได้ทุกเมื่อ - สร้าง Claude connector ชื่อ Lanes เชื่อมต่อกับ Claude web, Claude desktop app และ Claude code ได้ทั้งหมด พร้อมควบคุมสิทธิ์ของแต่ละ tool (ต้องอนุมัติ / บล็อก / อนุมัติอัตโนมัติ) - ทดสอบจริง: สร้างงานใหม่ใน Lanes, assign ให้ตัวเอง, เปลี่ยนสถานะเป็น doing, และแสดงรายการงาน — ระบบรู้ว่าการเปลี่ยนแปลงเกิดขึ้นภายใต้ชื่อผู้ใช้ของ Leon - ผู้บรรยายแนะนำคอร์สฟรีเรื่อง RAM framework และคอมมูนิตี้ Agentic Labs พร้อม Masterclass การสร้างแอป SaaS เต็มรูปแบบ ## ความเห็นสรุป คลิปนี้เป็นบทช่วยสอนที่ครบวงจรและทำตามได้จริง ตั้งแต่การสร้างแอปด้วย coding agent ไปจนถึงการเปิดเผยแอปให้ AI agent เข้าถึงผ่าน MCP server และ OAuth อย่างปลอดภัย จุดเด่นคือการอธิบาย "ทำไม" ทุกขั้นตอน เช่น การขยายแพลนก่อน implement และการใช้โปรโตคอล OAuth เพื่อให้ agent ทำงานแทนผู้ใช้โดยรู้ตัวตนผู้ใช้จริง ๆ เนื้อหามีประโยชน์มากสำหรับนักพัฒนาที่อยาก "AI-enable" แอปของตัวเอง
คำแปลเต็ม
แปลตามบทสนทนาต้นฉบับ ปรับเป็นภาษาไทยธรรมชาติ
สวัสดีครับ คุณอาจจะเคยเห็น Claude connectors มาก่อน ซึ่งใช้เชื่อมต่อ Claude เข้ากับ GitHub, Gmail, Drive, Motion และแอปพลิเคชันจากบริษัทอื่นอีกมากมาย แต่คุณรู้ไหมครับว่าคุณสามารถสร้างตัวเชื่อมต่อแบบกำหนดเองสำหรับแอปพลิเคชันของคุณเองได้ และในวิดีโอนี้ผมจะแสดงวิธีทำครับ ขอยก PulseBooks เป็นตัวอย่าง มันเป็นแอปทำบัญชีที่ผมสร้างขึ้นเพื่อธุรกิจของตัวเอง ทุกครั้งที่ต้องบันทึกรายจ่ายใหม่ ผมต้องเข้าสู่ระบบแอป ไล่คลิกผ่าน UI และกรอกฟอร์มให้ครบ ซึ่งเสียเวลามาก และจริง ๆ แล้วผมแค่อยากส่งงานส่วนนี้ให้ผู้ช่วย AI ของผมจัดการแทน ผมจึงสร้าง PulseBooks connector ตัวนี้ขึ้นมา มันเชื่อม Claude เข้ากับแอป PulseBooks ของผม และตอนนี้ Claude ก็สามารถโต้ตอบกับแอปแทนผมได้ หมายความว่าผมแค่อัปโหลดรูปใบเสร็จให้ agent ดู แล้วขอให้มันสร้างรายการค่าใช้จ่ายให้ แล้ว agent ก็อาจจะถามคำถามเพื่อความชัดเจน เช่น จะจัดให้อยู่ในหมวดหมู่ไหน แล้วจึงสร้างบันทึกรายจ่ายแทนผม ทุกอย่างทำอย่างปลอดภัยภายในแอป และใช้ได้เฉพาะฟังก์ชันที่ผมเลือกจะเปิดเผยเท่านั้น แล้ว agent ก็เสร็จงาน และถ้าผมรีเฟรชหน้ารายจ่ายในแอป ผมก็จะเห็นรายการนั้นพร้อมใบเสร็จที่แนบมาด้วยครับ
ในบทช่วยสอนแบบครบถ้วนนี้ เราจะสร้างทุกอย่างทีละขั้นตอนครับ ผมจะแสดงวิธีตั้งค่าโปรเจกต์ใหม่ให้ถูกต้อง เราจะสร้าง MCP server (เซิร์ฟเวอร์ที่เปิดเผยเครื่องมือให้ AI เรียกใช้) พร้อมการยืนยันตัวตนแบบ OAuth เราจะดีพลอยแอปขึ้น production และสุดท้ายก็จะเชื่อมต่อแอปเข้ากับ Claude หรือ agent ตัวอื่น ๆ ที่คุณต้องการ เอาล่ะ เราไปเริ่มกันเลยครับ
อย่างแรกเลย เรามาตั้งค่าสภาพแวดล้อมสำหรับพัฒนากันครับ ใช้ coding agent ตัวไหนก็ได้ตามสบาย ไม่ว่าจะเป็น Claude กับแอปเดสก์ท็อป Codex หรืออะไรก็ตามที่คุณชอบ ส่วนผมนี่จะใช้ Claude Code ภายใน VS Code ซึ่งจะทำให้ผมเห็นไฟล์ทั้งหมดที่ถูกสร้างขึ้นมา เอาล่ะ มาเปิดโปรเจกต์เปล่า ๆ กันครับ และผมจะเริ่มโปรเจกต์ด้วยสกิลเจ๋ง ๆ ตัวหนึ่ง ผมจะฝากลิงก์ไว้ในคำอธิบายใต้คลิป นี่คือสกิลที่ผมใช้ตอนเริ่มสร้างแอปใหม่ และถ้าคุณไม่ชอบตั้งค่า tech stack (ชุดเทคโนโลยี) เอง หรือกังวลว่าแอปจะไม่ scalable (ขยายได้ไม่ดีพอ) นี่คือสกิลที่ดีที่สุดสำหรับเริ่มสร้างเว็บแอปอะไรก็ได้ สิ่งที่คุณต้องทำก็แค่ก๊อปคำสั่งจากหน้านี้ แล้วส่งให้ coding agent ของคุณขอให้มันติดตั้งสกิลให้ หรือถ้าคุณทำตามโดยใช้ IDE ก็เปิดหน้าต่างเทอร์มินัลขึ้นมาแล้ววางคำสั่งนั้นลงไป ผมจะเลือก Claude Code แล้วตั้งค่าที่ระดับ global เพื่อจะได้ไม่ต้องติดตั้งสกิลซ้ำอีกในอนาคต จากนั้นเลือก symlink แล้วดำเนินการติดตั้ง เท่านั้นเองครับ
ลองเปิด Claude Code ขึ้นมา แล้วดูว่าสกิลพร้อมใช้งานไหม โดยพิมพ์คำสั่ง start แล้วผมก็จะเห็นสกิล start-app ปรากฏขึ้นมา เยี่ยมครับ จากนั้นสลับไปโหมด planning (โหมดวางแผน) แล้วบอกว่า ผมอยากสร้าง Trello clone ที่ทีมสามารถทำงานร่วมกันบนกระดาน Kanban board (กระดานคัมบัง) เดียวกัน รองรับหลายองค์กร หลายทีม และหลายบทบาท ควรชวนสมาชิกใหม่ด้วยลิงก์เชิญ สำหรับการยืนยันตัวตนผู้ใช้ ใช้เป็นอีเมลกับรหัสผ่าน และบนกระดาน Kanban ควรลากการ์ดได้ แล้วก็บอกให้ใช้สกิล start-app ส่งเลยครับ สิ่งที่จะเกิดขึ้นคือ agent จะดึงสกิล start-app เข้ามา ซึ่งข้างในมีข้อมูลมีค่ามากมายที่ agent ต้องใช้เพื่อสร้างแอปได้อย่างมีประสิทธิภาพ agent จะถามคำถามเยอะแยะเพื่อทำความเข้าใจว่าแอปเกี่ยวกับอะไร และมันจะใช้ tech stack ที่ผ่านการใช้งานจริงในโปรดักชันมาแล้ว ซึ่งจะทำให้การดีพลอยขึ้น production และรองรับผู้ใช้เป็นร้อยเป็นพันง่ายขึ้นมากครับ ตัวอย่างเช่น ถ้าคุณเคยลองสร้างแอป คุณจะรู้ว่าการรองรับองค์กร ทีม สมาชิก และบทบาทมันยากแค่ไหน มันเป็นฝันร้ายเลยถ้าจะสร้างเอง และสกิล start-app มีส่วนประกอบทุกอย่างที่ agent ต้องการเพื่อสร้างเว็บแอปแทบทุกแบบที่คุณนึกออก จริง ๆ แล้วในสกิลบอกว่า Better Auth organization plug-in รองรับ orgs ทีม บทบาท และคำเชิญมาให้แบบเนทีฟ เราจึงไม่ได้สร้างทุกอย่างจากศูนย์ แต่ใช้ส่วนประกอบที่สกิลเตรียมไว้ให้ และแน่นอนว่า agent จะถามคำถามมากมาย ผมจะตอบไปและข้ามส่วนนั้นเลยครับ
ผมหยุดที่คำถามข้อนี้หน่อย ถ้าคุณกำลังทำตามอยู่ บางจุด agent จะถามว่าต้องการฐานข้อมูลตัวไหน ซึ่งสำคัญมากครับ มักจะเป็นตัวเลือกระหว่าง SQLite กับ Postgres SQLite เหมาะถ้าคุณไม่คิดจะดีพลอยแอปขึ้น production เลย มันจะสร้างไฟล์ฐานข้อมูลไว้ในโฟลเดอร์โปรเจกต์ ซึ่งเก็บข้อมูลทุกอย่าง เช่น ข้อมูลผู้ใช้ ข้อมูลงานต่าง ๆ แต่จะกลายเป็นปัญหาเมื่อคุณอยากดีพลอยขึ้น production ซึ่งเราจะทำในบทช่วยสอนนี้ ดังนั้นขั้นนี้ผมจะเลือก Postgres ใน Docker อ้อ ขณะที่ agent กำลังสร้างแพลนอยู่ ผมขอพูดไว้ตรงนี้ว่าคุณจะดาวน์โหลดพรอมต์ทั้งหมดที่ผมใช้ในวิดีโอนี้ได้ และซอร์สโค้ดก็จะแจกให้ด้วย ผมจะฝากลิงก์ไว้ในคำอธิบายคลิปครับ
เมื่อ Claude ทำแพลนเสร็จ ผมจะกด Escape กลับไปที่โหมด editing แล้วใช้เสียงสั่งว่า ให้เก็บแพลนนี้ไว้ในโฟลเดอร์ claude ภายในโปรเจกต์ แล้วผมจะใช้ชื่อ claude-plans เพราะผมชอบเก็บแพลนเหล่านี้ไว้กับโค้ดจริงของโปรเจกต์ เราเก็บแพลนไว้ในโฟลเดอร์โปรเจกต์แล้ว แต่ผมอยากขยายรายละเอียดมากกว่านี้ อยากได้แผนการ implement ที่ละเอียด แยกออกเป็นฟีเจอร์แต่ละตัว เพื่อให้ implement เป็นทีมได้ หรือใช้คำสั่ง goal รัน implement ทุกอย่างในเซสชันเดียว ผมจะดึงแพลนกลับมาแล้วบอกว่า ช่วยขยายแพลนนี้ สร้าง implementation plan ที่ละเอียด เก็บไว้ในโฟลเดอร์เดียวกันชื่อ implementation-plan.md แล้วแยกแพลนออกเป็นฟีเจอร์แต่ละตัว เก็บเป็นไฟล์ในโฟลเดอร์โปรเจกต์ด้วย แต่ละไฟล์ต้องมีรายละเอียดเทคนิคในการ implement และ acceptance criteria (เกณฑ์การยอมรับ) แล้วรันเลยครับ
คุณอาจสงสัยว่าทำไมผมต้องทำแบบนี้ ทำไมไม่ส่งแพลนให้ Claude implement ไปเลย ประการแรก แพลนนี้มีข้อมูลไม่พอให้นักพัฒนา implement ได้อย่างถูกต้องครับ ถ้าคุณมีพื้นฐานด้านการพัฒนา คุณจะสังเกตว่ามันคือสถาปัตยกรรมของแอปในระดับสูงเท่านั้น ไม่มีใครพูดถึงเรื่องนี้กันจริง ๆ และถ้าส่งแพลนแบบนี้ให้นักพัฒนาจริง ๆ ผลลัพธ์จะกระจัดกระจาย และมีโอกาสสูงที่ฟีเจอร์บางอย่างจะตกหล่น การทำแบบนี้บังคับให้ agent คิดจริงจังกับแพลน และคิดว่าจะสร้างทุกอย่างออกมาอย่างไร เชื่อผมเถอะ agent จะรู้ตัวว่ามันมีโอกาสพลาดอะไรบางอย่าง ตอนที่ผมพูดอยู่นี้ มันก็กำลังใช้เหตุผลอยู่ว่าต้องติดตั้งไลบรารีแต่ละตัวเวอร์ชันอะไรบ้าง นี่เป็นงานที่มีประโยชน์ครับ ถ้าอยากเรียนรู้วิธีทำงานกับ coding agents อย่างมีประสิทธิภาพ ผมมีคอร์สฟรี ฟรีจริง ๆ ไม่มีเงื่อนไขแอบแฝง สอนเรื่อง RAM framework ซึ่งเป็นกรอบแนวคิดของผมในการทำงานกับ coding agents และในคอร์สนั้นผมลงรายละเอียดอีกมากว่าทำไมต้องใช้วิธีนี้ครับ
ขณะที่ coding agent กำลังทำงานอยู่ ผมอยากเตรียมความพร้อมให้มันสักหน่อย ถ้าคุณใช้ IDE หรือเทอร์มินัลแบบผม คุณต้องติดตั้ง MCP server หรือสกิลที่ทำให้ agent เปิดแอปในเบราว์เซอร์และทดสอบแอปจริง ๆ ได้ครับ แต่ถ้าคุณใช้ Claude desktop app หรือ ChatGPT desktop app ซึ่งมีเบราว์เซอร์ในตัวอยู่แล้ว ก็ข้ามขั้นนี้ได้ ผมจะเปิดเซสชันใหม่ เปิด Claude Code แล้วส่ง URL นี้ พร้อมบอกว่า โปรดติดตั้ง Playwright MCP server แล้วส่งเลย ผมรู้ว่าหลายคนชอบใช้ agent browser หรือ Playwright skill แทน ไม่ว่าอันไหนก็ไม่สำคัญครับ เราอยากให้ agent มีวิธีทดสอบงานของตัวเองบ้าง ตัวติดตั้งจัดการ MCP server ที่ระดับ user คุณจะไม่เห็นไฟล์ในโฟลเดอร์โปรเจกต์ แต่เพราะมันอยู่ระดับ user Playwright MCP server นี้จึงใช้ได้กับ agent ทุกตัวของผมครับ
อีกอย่างที่อยากทำคือตั้งค่าไฟล์ claude.md ผมจะสร้างสองไฟล์คือ agents.md และ claude.md โดยใน claude.md ผมแค่อ้างอิงไปที่ agents.md ส่วนใน agents.md ผมจะเก็บให้เรียบง่าย เพิ่มหัวข้อ testing the app (การทดสอบแอป) บอกว่า ให้ทดสอบแอปด้วย Playwright MCP server หรือ Playwright skill หรือ agent browser skill ที่คุณติดตั้งไว้เสมอ อีกอย่างที่ผมชอบเพิ่มคือ ให้ใช้ข้อมูลชุดเดิมซ้ำ อย่าสร้างข้อมูลผู้ใช้ใหม่ทุกครั้งที่ทดสอบ เก็บข้อมูลไว้ใน test-data.json ซึ่งอยู่ในโฟลเดอร์ claude ได้ด้วย เท่านั้นเองครับ หลักการคือ ตอนที่ agent ทดสอบแอป มันจะเปิดแอปในเบราว์เซอร์ พยายามเข้าสู่ระบบ แล้วรู้ว่ายังไม่มีชื่อผู้ใช้รหัสผ่าน มันก็จะสร้างบัญชีใหม่สำหรับทดสอบ แต่ปัญหาคือครั้งหน้าเวลาทดสอบ มันจะไม่ใช้ข้อมูลชุดเดิม แต่จะพยายามสร้างข้อมูลทั้งหมดใหม่ตั้งแต่ต้นทุกครั้ง ไฟล์นี้จะทำให้ agent ใช้ข้อมูลซ้ำแทนที่จะสร้างใหม่ครับ
เยี่ยม agent เพิ่งสร้างไฟล์ฟีเจอร์ทั้งหมดเสร็จ ตอนนี้ผมจะออกจาก Claude Code เพื่อให้ MCP server มีผล แล้วรีสตาร์ท Claude กลับมาที่โหมด edit ผมจะเก็บโฟลเดอร์ plans นี้ จริง ๆ แล้วไม่ควรอยู่ใน plans ทั้งหมด ให้สร้างโฟลเดอร์ย่อยชื่อ foundation แล้วลาก features, implementation plan และอันนี้เข้าไป ทุกอย่างอยู่ในโฟลเดอร์ foundation แล้วครับ ต่อไปขึ้นอยู่กับ agent ที่คุณใช้ ถ้าใช้โมเดลที่ราคาถูกกว่าหรือโมเดล open-source ผมแนะนำให้ลากไฟล์ implementation plan พร้อมกับฟีเจอร์หนึ่ง แล้วให้ agent implement ฟีเจอร์นั้น พอเสร็จก็ล้างบทสนทนา แล้วดึง implementation plan กลับมาพร้อมฟีเจอร์ถัดไป ทำวนแบบนี้จนเสร็จทุกอย่างครับ แต่ถ้าใช้ Codex หรือ Claude Code อีกทางเลือกคือรันคำสั่ง goal โดยดึงโฟลเดอร์ foundation เข้ามาแล้วบอกว่า โปรด implement ฟีเจอร์ทั้งหมดในโฟลเดอร์นี้ อย่าหยุดจนกว่าทุกอย่างจะถูก implement และทดสอบเสร็จ เท่านั้นเอง ส่งเลย แล้วเราก็เดินออกไปได้ ปล่อยให้ agent ทำงานของมัน ผมจะข้ามไปตอนที่ implement เสร็จแล้ว ไม่ต้องห่วงนะครับ เราจะได้ดู MCP server จริง ๆ และ Claude connector กันหลังจากสร้างแอปเสร็จแล้ว
มาตรวจดู agent กันครับ มันจะรันการทดสอบ end-to-end โดยใช้ Playwright MCP server ซึ่งหมายความว่ามันจะเปิดหน้าต่างเบราว์เซอร์แบบนี้ แล้วทดสอบแอปตั้งแต่ต้นจนจบเพื่อให้แน่ใจว่าทุกอย่างทำงาน เยี่ยมมาก agent ทำการเปลี่ยนแปลงทั้งหมดเสร็จแล้ว และยังใช้เบราว์เซอร์ทดสอบแอปแบบ end-to-end ด้วย นี่คือผลลัพธ์ครับ เรามีระบบที่ใช้งานได้เต็มรูปแบบแล้ว ผมจะเข้าสู่ระบบ สร้างองค์กร แล้วก็ได้กระดาน Kanban ของเรา ลองเพิ่มการ์ดอย่าง "ซื้อขนมปัง" เซฟ แล้วเมื่อคลิกที่งาน เราก็สามารถมอบหมายงานให้ใครสักคน และตั้งข้อมูลเพิ่มเติมได้ เจ๋งครับ
แต่นี่ไม่ใช่ประเด็นหลักของวิดีโอ สิ่งที่เราอยากโฟกัสคือการเพิ่ม MCP server และ Claude connector นี้ แต่ก่อนอื่นมาดีพลอยแอปขึ้น production กันก่อนครับ เพื่อให้ Claude โดยเฉพาะ Claude web ตรวจพบแอปของคุณ แอปต้องรันบน URL สาธารณะ ไม่อย่างนั้น Claude จะไม่มีทางเห็นแอปที่รันอยู่บนฮาร์ดแวร์ของคุณเองได้เลย โชคดีที่ทำง่ายมาก และฟรีด้วยครับ ผมเคยทำวิดีโอหลายตัวเกี่ยวกับการตั้งโปรเจกต์และดีพลอยขึ้น production แล้ว จริง ๆ แล้วใน Agentic Coding Masterclass ของผม มีวิดีโอที่พาคุณผ่านกระบวนการทั้งหมด ตั้งแต่เริ่มจากโฟลเดอร์เปล่า ตั้ง Git ตั้ง GitHub ดีพลอยไปที่ Vercel และอื่น ๆ อีกมาก ถ้าสนใจผมจะฝากลิงก์ Masterclass ไว้ในคำอธิบายคลิปครับ
ผมจะเร่งความเร็วตรงนี้หน่อย แต่มันตรงไปตรงมามากครับ สิ่งแรกคือสร้าง GitHub repository ตั้งชื่อว่า claude-connector และตั้งเป็น public ด้วย เพื่อที่ถ้าสนใจจะได้เข้าไปดูโปรเจกต์ ก๊อปไปศึกษาเองได้ และเมื่อเปิดบน GitHub จะเห็นว่าโค้ดทั้งหมดที่อยู่บนเครื่องเราถูก push ไปยัง repository ระยะไกลแล้ว ซึ่งทำหน้าที่เป็นแบ็คอัปของโค้ดเรา ต่อไปโค้ดนี้ยังไม่ live ต้องดีพลอยไปยังบริษัทโฮสติ้งก่อน ผมจะใช้ Vercel ซึ่งใช้ฟรีและตั้งง่ายมาก ไปที่ vercel.com สมัครและเข้าสู่ระบบ แล้วคลิก add new project ค้นหาโปรเจกต์ที่เพิ่งสร้าง แล้วคลิก import กลับมาที่โปรเจกต์ของเรา เปิดไฟล์นี้แล้วก๊อปตัวแปรทั้งหมดมาวาง แต่ว่าเราต้องแก้บางจุดครับ Postgres URL ตอนนี้ชี้ไปที่ localhost ซึ่งไม่ถูกต้อง เราต้องชี้ไปที่ฐานข้อมูลที่รันอยู่บนคลาวด์ ใช้ฐานข้อมูลที่รันบนเครื่องตัวเองไม่ได้ โชคดีที่ตั้งง่ายเหมือนกัน กลับไปที่แดชบอร์ด Vercel ในอีกเซสชัน ไปที่ storage คลิก create a new database เลือก Neon serverless Postgres คลิก continue ตั้งชื่อว่า cl-demo คลิก create อีกครั้ง แล้วข้ามขั้นนี้ไป และจากส่วนนี้เราต้องคลิก show secret ค้นหาตัวแปร Postgres URL แล้วก๊อปทุกอย่างหลังเครื่องหมายเท่ากับ จากนั้นกลับไปที่ตัวแปรของเรา ตั้งค่า Postgres URL เป็นค่าใหม่นี้ เท่านี้ที่เราจะแก้ตอนนี้ เดี๋ยวจะกลับมาแก้ทีหลังเมื่อรู้ว่า Better Auth URL ควรเป็นอะไร ตอนนี้ยังเป็น localhost อยู่ แต่เราจะแทนที่มันเมื่อได้ domain ที่ระบบสร้างขึ้นมา แล้วคลิก deploy ครับ
โปรเจกต์ถูกดีพลอยแล้ว ตอนนี้กลับไปที่แดชบอร์ด ก๊อป domain ที่สร้างขึ้นมา ไปที่ environment variables ตรง Better Auth URL คลิก edit แล้วเปลี่ยนเป็น domain นี้ เซฟการเปลี่ยนแปลงและ redeploy เพื่อให้ค่าใหม่มีผล เมื่อเปลี่ยนแล้ว ลองเปิด domain ดูว่าทุกอย่างทำงานไหมครับ ตอนนี้มันรันบน domain สาธารณะแล้ว ใครที่มี URL นี้ก็เข้าใช้แอปได้ คลิก get started แล้วลองสร้างบัญชี ผมสังเกตว่ามันดูเหมือนจะไม่ทำงาน แทนที่จะข้ามไป ขอโชว์วิธีแก้ปัญหาที่คุณอาจเจอด้วยนะครับ เวลาเจอแบบนี้ ให้กลับไปที่ Vercel แล้วใต้โปรเจกต์คลิก logs หารายการสีแดงแบบนี้ แล้วคลิกเพื่อก๊อป log เหล่านี้ กลับมาที่ Claude บอกว่า ผมลองดีพลอยไปที่ Vercel แล้วพอเข้าสู่ระบบ ได้ error นี้ วางข้อความทั้งหมดลงไป วิธีแก้คือ build command นี้ครับ ซึ่งเป็นคำสั่งที่ Vercel รันเมื่อดีพลอยโปรเจกต์ไปยังเซิร์ฟเวอร์ เดิมมันมีแค่ next build ดังนั้นสิ่งที่ Claude ทำคือเพิ่มส่วนนี้เข้าไป เพื่อให้รัน database migration ด้วย ซึ่งจะสร้างตารางในฐานข้อมูล สาเหตุที่แอปของเราพังใน production ก็คือตารางในฐานข้อมูลยังไม่มี เพราะเรายังไม่ได้รัน migration เท่านั้นเองครับ ขอย้ำว่าซอร์สโค้ดมีอยู่ในคำอธิบายคลิป คุณสามารถก๊อป build command นี้ไปใช้ในโปรเจกต์ได้เลย และถ้าผมจำได้ ผมจะอัปเดตสกิล start-app ให้รวมการเปลี่ยนแปลงนี้ด้วย คราวนี้ผมสร้างบัญชีได้แล้ว ตั้งชื่อว่า claude-demo สร้างองค์กร แล้วสร้างการ์ดแรกอย่าง "create claude connections tutorial" เพิ่มการ์ด เยี่ยมครับ
นี่คือเวิร์กโฟลว์ที่คุณคุ้นเคยกันดี เราสร้างแอปเสร็จแล้ว มันทำงานบน production และคุณอาจมีผู้ใช้จริงกำลังใช้อยู่ แล้วตอนนี้คุณอาจตัดสินใจเปิดเผยแอปนี้ให้ AI agent เข้าถึงผ่าน MCP server และอย่างที่เราจะทำในวิดีโอนี้ ผ่าน Claude connector ซึ่งง่ายมากครับ ถ้าทำตามอยู่ ให้กลับไปที่โปรเจกต์ แล้วเราจะติดตั้ง dependency สองสามตัวที่จะช่วยให้ agent จัดการเรื่องพวกนี้ได้ เอาล่ะ มาถึงส่วนสนุกแล้ว เพื่อให้ทุกอย่างทำงาน เราต้องติดตั้งสกิลใหม่สองตัวเพื่อช่วย agent อันแรกคือ Better Auth skill ไปที่หน้านี้ ซึ่งลิงก์ทั้งหมดอยู่ในคำอธิบาย แล้วติดตั้งสกิลนี้กลับเข้าไปในโปรเจกต์ รันคำสั่งนี้ ติดตั้งสำหรับ Claude Code ที่ระดับโปรเจกต์ สกิลที่สองคือ MCP builder skill ก๊อปคำสั่งนี้แล้วรันในเทอร์มินัลเหมือนกัน สกิลนี้จะให้เอกสารอ้างอิงมากมายเกี่ยวกับวิธีสร้าง MCP servers ครับ
หลักการคือ เรามี Claude ตรงนี้ หรือ agent อื่น ๆ หรือ Codex หรืออะไรก็ตามที่คุณใช้ และเราต้องให้ agent เข้าถึงแอปของเราซึ่งรันอยู่บนเว็บเซิร์ฟเวอร์ ตอนนี้เราต้องใช้ UI เพื่อโต้ตอบกับแอป แต่เราไม่ต้องการให้ agent เชื่อมต่อกับ UI โดยตรง agent ควรเรียกใช้ tools (เครื่องมือ) ที่มีอยู่ในแอปโดยตรงครับ ในการทำแบบนี้ เราจะเปิดเผย remote MCP server ซึ่งจะเปิดเผย tools ที่ agent เรียกใช้ได้ และ tools เหล่านั้นจะโต้ตอบกับแอปเบื้องหลัง ตัวอย่างเช่น อาจมี tool ชื่อ create expense ที่ถูกเปิดเผยโดย remote MCP server แล้วเซิร์ฟเวอร์นั้นจะเรียกฟังก์ชันในแอปชื่อประมาณ create expense entry ซึ่งจะสร้างรายจ่ายจริงในฐานข้อมูล หรือแม้แต่อัปโหลดไฟล์ก็ได้ การสร้าง MCP servers อาจเป็นเรื่องเทคนิคสูงมาก มีชิ้นส่วนที่ต้องดูแลเยอะ ทางออกที่ง่ายกว่าคือติดตั้งสกิลนี้ที่จะสอน agent สร้าง MCP server รวมถึงเอกสารอ้างอิงที่ agent ใช้เรียนรู้วิธีสร้าง MCP servers และสำหรับแนวทางปฏิบัติที่ดีที่สุด Better Auth คือไลบรารียืนยันตัวตนผู้ใช้ของเรา แอปใช้มันให้ผู้ใช้สมัครและเข้าสู่ระบบอย่างปลอดภัย แต่ Better Auth ยังเปิดเผยอะไรที่สำคัญมากสำหรับ MCP servers ด้วยครับ เพราะ Claude เรียกแอปเราโดยตรงไม่ได้ Claude ต้องยืนยันตัวตนในแอปก่อน เพื่อให้รู้ว่าผู้ใช้ตัวจริงที่ใช้ agent นี้คือใคร และ agent ก็เข้าสู่ระบบแอปแบบตรง ๆ ไม่ได้ มีโปรโตคอลพิเศษที่ทำให้ทั้งหมดนี้ทำงาน และโชคดีที่ Better Auth ทำให้มันง่ายมาก ลองย้ายมาตรงนี้ ตัว agent จะเรียก MCP server แล้ว MCP server จะบอกว่า "เฮ้ ฉันไม่รู้ว่าคุณเป็นใคร ฉันรู้ว่าคุณเป็น agent ที่พยายามทำงานกับแอปนี้ แต่ต้องมีบัญชีผู้ใช้ที่ถูกต้องอยู่เบื้องหลังคำขอนี้" และแน่นอน ถ้าผมเป็นคนใช้ agent ผมก็อยากให้ Claude ทำงานแทนผม มันจึงต้องใช้บัญชีผู้ใช้จริงของผม ในการยืนยันบัญชีนั้น หรือให้ agent ระบุตัวตนและยืนยันตัวตนบนแอปของเรา มันจะผ่านโปรโตคอล OAuth ซึ่งจะขอให้ผู้ใช้ยืนยันตัวตนหรืออนุมัติให้ agent นี้เข้าถึงแอปนี้ เมื่อผู้ใช้อนุมัติคำขอนั้น token ที่ปลอดภัยจะถูกเก็บไว้ในแอป agent หรือตัวกลาง (harness) ของเรา ซึ่งหมายความว่าคำขอถัดไปทั้งหมดจะถูกยอมรับผ่านชั้น OAuth และ agent จะเข้าถึงแอปของเราได้ และเราสามารถเพิกถอนการเข้าถึง MCP server ได้ทุกเมื่อ หรือฝั่ง client ก็ตัดการเชื่อมต่อได้เช่นกัน นี่คือสองชิ้นส่วนหลักของเรา เราต้องสร้าง MCP server และเปิดใช้งาน OAuth ในชั้น auth ของเรา ฟังดูเทคนิคมาก แต่ผมสัญญาว่ามันง่ายจริง ๆ ครับ
ในคำอธิบายคลิปนี้ ผมจะให้บทความนี้กับคุณ ซึ่งมาจากเอกสารอย่างเป็นทางการของ Better Auth OAuth อธิบายการทำงานของ Better Auth OAuth plug-in สกิล Better Auth น่าจะมีข้อมูลทั้งหมดนี้อยู่แล้ว แต่ตอนอัดวิดีโอมีความสับสนเล็กน้อย เพราะมีหน้า MCP ที่ถูกทิ้งไว้ (deprecated) อยู่นี่ ซึ่งเป็นวิธีที่ Better Auth เคยใช้ยืนยันตัวตน MCP providers แต่วิธีนี้เพิ่งเปลี่ยนไป และหน้านี้คือแหล่งข้อมูลที่ถูกต้อง (source of truth) ตอนนี้กลับไปที่ Claude Code เปิดเซสชันแล้วส่งพรอมต์นี้ครับ: ผมต้องการให้คุณสร้าง remote MCP server ให้แอปของเรา MCP server นี้ควรเปิดเผย tools ทั้งหมดที่จะให้ AI agent โต้ตอบกับแอปของเราแทนผู้ใช้ได้อย่างเต็มรูปแบบ MCP server จะอยู่ที่ route นี้ ผมจะใส่ประมาณ domain/mcp คุณมีสองสกิลที่ช่วยได้ นั่นคือ Better Auth skill และ MCP builder skill ซึ่งก็คือสองสกิลตรงนี้ สำหรับบริบทเพิ่มเติม ให้อ้างอิงหน้านี้ ซึ่งอยู่ใน OAuth provider URL และนี่ก็สำคัญมาก MCP server นี้ควรทำงานเป็น Claude connector ด้วย และยังมี URL อีกตัวที่จะช่วย agent ได้มาก และบอกไว้ก่อนว่านี่คือเรื่องปกติครับ นี่คือ context engineering (วิศวกรรมบริบท) เราพยายามให้บริบทกับ agent มากที่สุดเพื่อสร้างโซลูชันที่เชื่อถือได้ บทความจาก Claude นี้ให้คำแนะนำวิธีตั้งค่า MCP servers เพื่อเชื่อมต่อกับ Claude ในฐานะ connector ลิงก์อยู่ในคำอธิบายคลิป แล้ววางลงไป ถ้าคุณมีแอปเดิมที่อยากเปิดใช้งาน AI นี่คือพรอมต์เดียวที่คุณต้องการจริง ๆ ครับ ส่งเลย
agent ทำการเปลี่ยนแปลง MCP ทั้งหมดเสร็จแล้ว และผมขอให้มันสร้าง commit และ push การเปลี่ยนแปลงขึ้น production ผมจะบอก Claude ว่า ผมดีพลอยขึ้น production แล้ว ช่วย ping MCP server หน่อยว่าเรียบร้อยไหม แล้ววาง URL/MCP ลงไป ผมขัดจังหวะ Claude แต่มันก็บอกว่าทุกอย่างเป็นสีเขียว (green) แล้วอีกอย่างที่อยากโชว์คือ ตอนเข้าสู่ระบบแอป ตอนนี้เรามีส่วน connections ตรงนี้ ซึ่งแสดงแอปพลิเคชันหรือ agent ที่เชื่อมต่ออยู่ทั้งหมด รวมถึง connection endpoint ของเรา สิ่งที่เหลือคือลองเพิ่ม connector นี้ให้ Claude ครับ คลิก add connectors แล้ว manage connectors ไปที่ add แล้ว add a custom connector ตั้งชื่อแอปว่า Lanes วาง URL ของเรา แล้วคลิก add เท่านั้นเอง มันจะถามให้เชื่อมต่อกับแอปของเรา ซึ่งก็คือขั้นที่เราต้องยืนยันตัวตนในแอปนั่นแหละ คลิก connect แล้วดูนี่ครับ มันให้หน้าเฉพาะตัวเรา ขอบคุณ Better Auth และตรงนี้ผมจะ allow Claude แล้วมันบอกว่าเชื่อมต่อแล้ว ปิดแท็บนี้ได้ กลับมาที่ Claude เราก็เชื่อมต่อแล้ว และ agent เข้าถึง tools ทั้งหมดนี้ได้ มี tools แบบอ่านอย่างเดียวเยอะแยะ มี tools แบบเขียนและลบ เช่น สร้างการ์ด สร้างลิงก์เชิญ เจ๋งไหมล่ะครับ และเราควบคุมการเข้าถึง tools เหล่านี้ได้ ไม่ว่าจะจากในแอป โดยบอกให้ Claude Code เอาฟังก์ชันบางอย่างออก หรือควบคุมจากตรงนี้ เลือกได้ว่าต้องการอนุมัติไหม บาง tool ควรถูกบล็อกทั้งหมด หรือบาง tool อนุมัติอัตโนมัติ ไม่ว่าจะแบบไหน มาทดสอบกันครับ
ผมจะเปิดเซสชัน Claude ใหม่ ซึ่งรันอยู่ใน Claude desktop app นะครับ แต่ก็ควรโชว์ด้วยว่ามันใช้ได้กับ Claude web ตอนนี้ผมเปิด Claude web อยู่ ถ้าไปที่ connectors แล้ว manage connectors จะเห็นการเชื่อมต่อ Lanes อยู่ตรงนี้ด้วย แปลว่าตอนนี้มันใช้ได้ทั้งบน Claude web, Claude desktop app และ Claude code เอาล่ะ มาดูกันว่ามันทำงานไหม โปรดสร้างงานใหม่ใน Lanes ชื่อว่า update claude code course in agentic labs ส่งเลย มันขออนุญาตเรียก tools เหล่านี้ ผมเลือก always allow แล้ว Claude ก็เพิ่มงานใหม่ให้ ลองกลับไปที่แอปของเราเพื่อดูครับ งาน update claude code course in agentic labs ตอนนี้ยังไม่ถูก assign ลองบอกว่า โปรด assign งานนี้ให้ฉัน ส่งเลย เสร็จเรียบร้อย การ์ดถูก assign ให้คุณแล้ว ลองดูว่าจริงไหม คลิกการ์ดนี้ แล้วมันถูก assign ให้ Leon นี่คือสิ่งที่สำคัญมากครับ agent ตัวนี้ผ่านการเชื่อมต่อ OAuth นี้รู้ว่าคุณเป็นใคร มันทำหน้าที่แทนคุณในแอปนี้ ดังนั้นการเปลี่ยนแปลงใด ๆ ที่ agent ทำในแอปจะแสดงภายใต้ชื่อผู้ใช้ของคุณ โปรดเปลี่ยนสถานะงานนี้เป็น doing ส่งเลย เราน่าจะเห็นการ์ดย้ายไปคอลัมน์ doing แล้วเสร็จ เจ๋งมากครับ โปรดแสดงรายการงานทั้งหมดที่ assign ให้ฉัน ถ้าเรามีสมาชิกในองค์กรมากกว่านี้ เราก็จะ assign งานให้สมาชิกคนอื่นได้ด้วย เอาล่ะ มีงานเดียวที่ assign ให้ฉัน คือ update claude code course in Agentic Labs
หวังว่าวิดีโอนี้จะมีประโยชน์นะครับ ถ้าใช่ กดไลก์และสมัครเป็นสมาชิกช่องเพื่อรับบทช่วยสอน Agentic Coding เพิ่มเติม และถ้าอยากยกระดับทักษะ coding agent ของคุณให้ไปอีกขั้น ลองเข้าร่วม Agentic Labs ซึ่งเป็นคอมมูนิตี้ของผม ที่มีคอร์ส Agentic Coding Masterclass สุดพิเศษ ครอบคลุมทุกอย่างที่ต้องรู้เกี่ยวกับการทำงานกับ coding agents เรายังมีโปรเจกต์ขนาดใหญ่ที่สร้างแอป SaaS จริง ๆ รวมถึงการเชื่อมต่อการชำระเงิน ระบบผู้ใช้ ทุกอย่าง และเราสร้างมันจากศูนย์ ให้คุณทำตามทีละขั้นตอนได้ และ YouTube คิดว่าคุณจะชอบวิดีโออีกตัวหนึ่ง แล้วเจอกันวิดีโอหน้าครับ บายบาย
หมายเหตุการแปล
ความโปร่งใสเกี่ยวกับความไม่แน่นอนในต้นฉบับ
- ## ส่วนที่ไม่ชัดเจน ([ฟังไม่ชัด])
- ไม่มีส่วนใดในคำบรรยายที่ต้องใช้เครื่องหมาย [ฟังไม่ชัด] เนื่องจากทุกจุดที่เสียง/คำบรรยายคลุมเครือสามารถตีความจากบริบทได้ชัดเจน (ดูรายการ ASR errors ด้านบน) ไฟล์ thai-translation.md จึงไม่มี [ฟังไม่ชัด] อยู่เลย
- จุดที่ต้องใช้ดุลยพินิจในการตีความ (ไม่ใช่ความไม่ชัดเจนของเสียง):
อภิธานศัพท์เทคนิค
คำศัพท์และชื่อผลิตภัณฑ์ที่คงรูปภาษาอังกฤษ
| ศัพท์ | คำแปล / คำอธิบาย |
|---|---|
| Claude connectors | ตัวเชื่อมต่อของ Claude ที่ให้ Claude เข้าถึงแอปพลิเคชันภายนอกได้ |
| MCP server | เซิร์ฟเวอร์ที่เปิดเผยเครื่องมือ (tools) ให้ AI agent เรียกใช้เพื่อโต้ตอบกับแอป |
| OAuth | โปรโตคอลยืนยันตัวตน/อนุญาตการเข้าถึงแบบเปิด ที่ให้ agent ทำงานแทนผู้ใช้ที่ยืนยันตัวตนแล้ว |
| Agent | ตัวแทน AI (เช่น Claude, Codex) ที่ทำงานตามคำสั่งของผู้ใช้ |
| Coding agent | AI ที่ช่วยเขียนและจัดการโค้ด |
| Skill | ชุดคำแนะนำ/เอกสารอ้างอิงที่ติดตั้งให้ agent ใช้ทำงานเฉพาะด้าน |
| start-app skill | สกิลสำหรับเริ่มต้นสร้างเว็บแอปใหม่ด้วย tech stack ที่ผ่านการใช้งานจริง |
| MCP builder skill | สกิลที่สอน agent วิธีสร้าง MCP servers พร้อมเอกสารอ้างอิง |
| Playwright MCP server | MCP server ที่ให้ agent เปิดเบราว์เซอร์และทดสอบแอปจริง |
| Tech stack | ชุดเทคโนโลยีที่ใช้สร้างแอป (ภาษา เฟรมเวิร์ก ฐานข้อมูล ฯลฯ) |
| Kanban board | กระดานคัมบังสำหรับจัดการงานแบบลากการ์ดระหว่างคอลัมน์ |
| Planning mode / edit mode | โหมดวางแผน / โหมดแก้ไขของ Claude Code |
| Implementation plan | แผนการ implement รายละเอียด แยกตามฟีเจอร์ |
| Acceptance criteria | เกณฑ์การยอมรับว่าแต่ละฟีเจอร์เสร็จสมบูรณ์และถูกต้อง |
| RAM framework | กรอบแนวคิดของผู้บรรยายสำหรับทำงานกับ coding agents |
| E2E / end-to-end testing | การทดสอบแอปตั้งแต่ต้นจนจบเหมือนผู้ใช้จริง |
| Production | สภาพแวดล้อมที่ใช้งานจริงกับผู้ใช้ |
| Deploy / redeploy | การนำโค้ดขึ้นใช้งานจริง / ดีพลอยซ้ำ |
| Public URL / domain | ที่อยู่เว็บสาธารณะที่เข้าถึงได้จากอินเทอร์เน็ต |
| Environment variables | ตัวแปรสภาพแวดล้อม ใช้เก็บค่าคอนฟิก เช่น URL ฐานข้อมูล |
| Build command | คำสั่งที่ Vercel รันตอนดีพลอย เช่น next build + migration |
| Database migration | การสร้าง/อัปเดตโครงสร้างตารางในฐานข้อมูลให้ตรงกับโค้ด |
| Remote MCP server | MCP server ที่รันบนเซิร์ฟเวอร์ระยะไกล เปิดเผย tools ให้ agent เรียก |
| Tools | เครื่องมือ/ฟังก์ชันที่ agent เรียกใช้ได้ เช่น สร้างการ์ด, สร้างลิงก์เชิญ |
| Token | คีย์ความปลอดภัยที่ใช้ยืนยันสิทธิ์การเข้าถึงหลัง OAuth อนุมัติ |
| Revoke access | การเพิกถอนสิทธิ์การเข้าถึง |
| Harness | ตัวกลาง/แอปที่ agent รันอยู่ (เช่น Claude desktop app) |
| Context engineering | การออกแบบพรอมต์เพื่อให้ agent ได้บริบทมากที่สุด |
| Claude web / Claude desktop app / Claude code | แพลตฟอร์มการใช้งาน Claude แบบเว็บ / เดสก์ท็อป / เทอร์มินัล |
| Agentic Coding Masterclass | คอร์สเรียนเต็มรูปแบบของช่องเกี่ยวกับการทำงานกับ coding agents |
| SaaS application | แอปพลิเคชันแบบบริการบนคลาวด์ (Software as a Service) |
| PulseBooks | แอปทำบัญชีที่ผู้บรรยายสร้างเอง ใช้เป็นตัวอย่างในคลิป |
| Better Auth | ไลบรารียืนยันตัวตนผู้ใช้ (sign up/sign in) ที่รองรับ OAuth สำหรับ MCP |
| Lanes | ชื่อ connector ตัวอย่างที่สร้างในคลิป (อิงแนวคิดกระดาน Kanban) |
| Neon serverless Postgres | บริการฐานข้อมูล Postgres บนคลาวด์แบบ serverless |
| Vercel | แพลตฟอร์มโฮสติ้ง/ดีพลอยเว็บแอป ใช้ฟรี |
| SQLite / Postgres / Docker | ฐานข้อมูลไฟล์ / ฐานข้อมูล PostgreSQL / เครื่องมือรันคอนเทนเนอร์ |
| VS Code, Codex, GitHub, Git, Gmail, Drive, Motion, Trello | เครื่องมือและบริการต่าง ๆ ที่กล่าวถึงในคลิป (ชื่อแบรนด์คงเดิม) |
ซับไตเติ้ลภาษาไทย
ดาวน์โหลดหรือดูซับทั้งหมด
1 00:00:00,000 --> 00:00:08,054 สวัสดีครับ คุณอาจจะเคยเห็น Claude connectors มาก่อน ซึ่งใช้เชื่อมต่อ Claude เข้ากับ GitHub, 2 00:00:08,054 --> 00:00:09,824 Gmail, Drive, Motion 3 00:00:09,824 --> 00:00:13,010 และแอปพลิเคชันจากบริษัทอื่นอีกมากมาย 4 00:00:13,010 --> 00:00:20,533 แต่คุณรู้ไหมครับว่าคุณสามารถสร้างตัวเชื่อมต่อแบบกำหนดเองสำหรับแอปพลิเคชันของคุณเองได้
เปิดดูซับไตเติ้ลทั้งหมด (506 segments)
1 00:00:00,000 --> 00:00:08,054 สวัสดีครับ คุณอาจจะเคยเห็น Claude connectors มาก่อน ซึ่งใช้เชื่อมต่อ Claude เข้ากับ GitHub, 2 00:00:08,054 --> 00:00:09,824 Gmail, Drive, Motion 3 00:00:09,824 --> 00:00:13,010 และแอปพลิเคชันจากบริษัทอื่นอีกมากมาย 4 00:00:13,010 --> 00:00:20,533 แต่คุณรู้ไหมครับว่าคุณสามารถสร้างตัวเชื่อมต่อแบบกำหนดเองสำหรับแอปพลิเคชันของคุณเองได้ 5 00:00:20,533 --> 00:00:23,808 และในวิดีโอนี้ผมจะแสดงวิธีทำครับ ขอยก 6 00:00:23,808 --> 00:00:25,843 PulseBooks เป็นตัวอย่าง 7 00:00:25,843 --> 00:00:30,357 มันเป็นแอปทำบัญชีที่ผมสร้างขึ้นเพื่อธุรกิจของตัวเอง 8 00:00:30,357 --> 00:00:33,189 ทุกครั้งที่ต้องบันทึกรายจ่ายใหม่ 9 00:00:33,189 --> 00:00:36,287 ผมต้องเข้าสู่ระบบแอป ไล่คลิกผ่าน UI 10 00:00:36,287 --> 00:00:40,181 และกรอกฟอร์มให้ครบ ซึ่งเสียเวลามาก และจริง ๆ 11 00:00:40,181 --> 00:00:43,633 แล้วผมแค่อยากส่งงานส่วนนี้ให้ผู้ช่วย AI 12 00:00:43,633 --> 00:00:47,704 ของผมจัดการแทน ผมจึงสร้าง PulseBooks connector 13 00:00:47,704 --> 00:00:51,244 ตัวนี้ขึ้นมา มันเชื่อม Claude เข้ากับแอป 14 00:00:51,244 --> 00:00:54,165 PulseBooks ของผม และตอนนี้ Claude 15 00:00:54,165 --> 00:00:56,643 ก็สามารถโต้ตอบกับแอปแทนผมได้ 16 00:00:56,643 --> 00:01:00,626 หมายความว่าผมแค่อัปโหลดรูปใบเสร็จให้ agent ดู 17 00:01:00,626 --> 00:01:04,254 แล้วขอให้มันสร้างรายการค่าใช้จ่ายให้ แล้ว 18 00:01:04,254 --> 00:01:07,883 agent ก็อาจจะถามคำถามเพื่อความชัดเจน เช่น 19 00:01:07,883 --> 00:01:10,096 จะจัดให้อยู่ในหมวดหมู่ไหน 20 00:01:10,096 --> 00:01:12,751 แล้วจึงสร้างบันทึกรายจ่ายแทนผม 21 00:01:12,751 --> 00:01:15,406 ทุกอย่างทำอย่างปลอดภัยภายในแอป 22 00:01:15,406 --> 00:01:19,743 และใช้ได้เฉพาะฟังก์ชันที่ผมเลือกจะเปิดเผยเท่านั้น 23 00:01:19,743 --> 00:01:21,601 แล้ว agent ก็เสร็จงาน 24 00:01:21,601 --> 00:01:24,257 และถ้าผมรีเฟรชหน้ารายจ่ายในแอป 25 00:01:24,257 --> 00:01:28,505 ผมก็จะเห็นรายการนั้นพร้อมใบเสร็จที่แนบมาด้วยครับ 26 00:01:28,505 --> 00:01:30,629 ในบทช่วยสอนแบบครบถ้วนนี้ 27 00:01:30,629 --> 00:01:33,550 เราจะสร้างทุกอย่างทีละขั้นตอนครับ 28 00:01:33,550 --> 00:01:37,178 ผมจะแสดงวิธีตั้งค่าโปรเจกต์ใหม่ให้ถูกต้อง 29 00:01:37,178 --> 00:01:39,037 เราจะสร้าง MCP server 30 00:01:39,037 --> 00:01:42,400 (เซิร์ฟเวอร์ที่เปิดเผยเครื่องมือให้ AI 31 00:01:42,400 --> 00:01:45,763 เรียกใช้) พร้อมการยืนยันตัวตนแบบ OAuth 32 00:01:45,763 --> 00:01:48,330 เราจะดีพลอยแอปขึ้น production 33 00:01:48,330 --> 00:01:52,313 และสุดท้ายก็จะเชื่อมต่อแอปเข้ากับ Claude หรือ 34 00:01:52,313 --> 00:01:55,499 agent ตัวอื่น ๆ ที่คุณต้องการ เอาล่ะ 35 00:01:55,499 --> 00:01:58,331 เราไปเริ่มกันเลยครับ อย่างแรกเลย 36 00:01:58,331 --> 00:02:02,314 เรามาตั้งค่าสภาพแวดล้อมสำหรับพัฒนากันครับ ใช้ 37 00:02:02,314 --> 00:02:06,208 coding agent ตัวไหนก็ได้ตามสบาย ไม่ว่าจะเป็น 38 00:02:06,208 --> 00:02:08,686 Claude กับแอปเดสก์ท็อป Codex 39 00:02:08,686 --> 00:02:12,580 หรืออะไรก็ตามที่คุณชอบ ส่วนผมนี่จะใช้ Claude 40 00:02:12,580 --> 00:02:14,173 Code ภายใน VS Code 41 00:02:14,173 --> 00:02:18,156 ซึ่งจะทำให้ผมเห็นไฟล์ทั้งหมดที่ถูกสร้างขึ้นมา 42 00:02:18,156 --> 00:02:20,634 เอาล่ะ มาเปิดโปรเจกต์เปล่า ๆ 43 00:02:20,634 --> 00:02:24,351 กันครับ และผมจะเริ่มโปรเจกต์ด้วยสกิลเจ๋ง ๆ 44 00:02:24,351 --> 00:02:27,980 ตัวหนึ่ง ผมจะฝากลิงก์ไว้ในคำอธิบายใต้คลิป 45 00:02:27,980 --> 00:02:31,343 นี่คือสกิลที่ผมใช้ตอนเริ่มสร้างแอปใหม่ 46 00:02:31,343 --> 00:02:34,264 และถ้าคุณไม่ชอบตั้งค่า tech stack 47 00:02:34,264 --> 00:02:37,715 (ชุดเทคโนโลยี) เอง หรือกังวลว่าแอปจะไม่ 48 00:02:37,715 --> 00:02:39,928 scalable (ขยายได้ไม่ดีพอ) 49 00:02:39,928 --> 00:02:44,619 นี่คือสกิลที่ดีที่สุดสำหรับเริ่มสร้างเว็บแอปอะไรก็ได้ 50 00:02:44,619 --> 00:02:48,248 สิ่งที่คุณต้องทำก็แค่ก๊อปคำสั่งจากหน้านี้ 51 00:02:48,248 --> 00:02:50,283 แล้วส่งให้ coding agent 52 00:02:50,283 --> 00:02:52,761 ของคุณขอให้มันติดตั้งสกิลให้ 53 00:02:52,761 --> 00:02:54,974 หรือถ้าคุณทำตามโดยใช้ IDE 54 00:02:54,974 --> 00:02:59,488 ก็เปิดหน้าต่างเทอร์มินัลขึ้นมาแล้ววางคำสั่งนั้นลงไป 55 00:02:59,488 --> 00:03:03,116 ผมจะเลือก Claude Code แล้วตั้งค่าที่ระดับ 56 00:03:03,116 --> 00:03:04,214 global 57 00:03:04,214 --> 00:03:07,843 เพื่อจะได้ไม่ต้องติดตั้งสกิลซ้ำอีกในอนาคต 58 00:03:07,843 --> 00:03:11,472 จากนั้นเลือก symlink แล้วดำเนินการติดตั้ง 59 00:03:11,472 --> 00:03:15,189 เท่านั้นเองครับ ลองเปิด Claude Code ขึ้นมา 60 00:03:15,189 --> 00:03:18,906 แล้วดูว่าสกิลพร้อมใช้งานไหม โดยพิมพ์คำสั่ง 61 00:03:18,906 --> 00:03:22,977 start แล้วผมก็จะเห็นสกิล start-app ปรากฏขึ้นมา 62 00:03:22,977 --> 00:03:26,252 เยี่ยมครับ จากนั้นสลับไปโหมด planning 63 00:03:26,252 --> 00:03:29,969 (โหมดวางแผน) แล้วบอกว่า ผมอยากสร้าง Trello 64 00:03:29,969 --> 00:03:33,952 clone ที่ทีมสามารถทำงานร่วมกันบนกระดาน Kanban 65 00:03:33,952 --> 00:03:38,023 board (กระดานคัมบัง) เดียวกัน รองรับหลายองค์กร 66 00:03:38,023 --> 00:03:39,793 หลายทีม และหลายบทบาท 67 00:03:39,793 --> 00:03:42,360 ควรชวนสมาชิกใหม่ด้วยลิงก์เชิญ 68 00:03:42,360 --> 00:03:44,661 สำหรับการยืนยันตัวตนผู้ใช้ 69 00:03:44,661 --> 00:03:48,378 ใช้เป็นอีเมลกับรหัสผ่าน และบนกระดาน Kanban 70 00:03:48,378 --> 00:03:52,272 ควรลากการ์ดได้ แล้วก็บอกให้ใช้สกิล start-app 71 00:03:52,272 --> 00:03:55,547 ส่งเลยครับ สิ่งที่จะเกิดขึ้นคือ agent 72 00:03:55,547 --> 00:03:57,848 จะดึงสกิล start-app เข้ามา 73 00:03:57,848 --> 00:04:01,211 ซึ่งข้างในมีข้อมูลมีค่ามากมายที่ agent 74 00:04:01,211 --> 00:04:04,840 ต้องใช้เพื่อสร้างแอปได้อย่างมีประสิทธิภาพ 75 00:04:04,840 --> 00:04:05,938 agent 76 00:04:05,938 --> 00:04:10,628 จะถามคำถามเยอะแยะเพื่อทำความเข้าใจว่าแอปเกี่ยวกับอะไร 77 00:04:10,628 --> 00:04:12,576 และมันจะใช้ tech stack 78 00:04:12,576 --> 00:04:15,850 ที่ผ่านการใช้งานจริงในโปรดักชันมาแล้ว 79 00:04:15,850 --> 00:04:18,948 ซึ่งจะทำให้การดีพลอยขึ้น production 80 00:04:18,948 --> 00:04:22,931 และรองรับผู้ใช้เป็นร้อยเป็นพันง่ายขึ้นมากครับ 81 00:04:22,931 --> 00:04:25,851 ตัวอย่างเช่น ถ้าคุณเคยลองสร้างแอป 82 00:04:25,851 --> 00:04:29,126 คุณจะรู้ว่าการรองรับองค์กร ทีม สมาชิก 83 00:04:29,126 --> 00:04:30,896 และบทบาทมันยากแค่ไหน 84 00:04:30,896 --> 00:04:34,259 มันเป็นฝันร้ายเลยถ้าจะสร้างเอง และสกิล 85 00:04:34,259 --> 00:04:37,711 start-app มีส่วนประกอบทุกอย่างที่ agent 86 00:04:37,711 --> 00:04:41,694 ต้องการเพื่อสร้างเว็บแอปแทบทุกแบบที่คุณนึกออก 87 00:04:41,694 --> 00:04:44,791 จริง ๆ แล้วในสกิลบอกว่า Better Auth 88 00:04:44,791 --> 00:04:48,509 organization plug-in รองรับ orgs ทีม บทบาท 89 00:04:48,509 --> 00:04:50,456 และคำเชิญมาให้แบบเนทีฟ 90 00:04:50,456 --> 00:04:53,376 เราจึงไม่ได้สร้างทุกอย่างจากศูนย์ 91 00:04:53,376 --> 00:04:56,474 แต่ใช้ส่วนประกอบที่สกิลเตรียมไว้ให้ 92 00:04:56,474 --> 00:04:59,572 และแน่นอนว่า agent จะถามคำถามมากมาย 93 00:04:59,572 --> 00:05:02,315 ผมจะตอบไปและข้ามส่วนนั้นเลยครับ 94 00:05:02,315 --> 00:05:06,386 ผมหยุดที่คำถามข้อนี้หน่อย ถ้าคุณกำลังทำตามอยู่ 95 00:05:06,386 --> 00:05:10,192 บางจุด agent จะถามว่าต้องการฐานข้อมูลตัวไหน 96 00:05:10,192 --> 00:05:13,821 ซึ่งสำคัญมากครับ มักจะเป็นตัวเลือกระหว่าง 97 00:05:13,821 --> 00:05:16,122 SQLite กับ Postgres SQLite 98 00:05:16,122 --> 00:05:19,928 เหมาะถ้าคุณไม่คิดจะดีพลอยแอปขึ้น production 99 00:05:19,928 --> 00:05:21,026 เลย 100 00:05:21,026 --> 00:05:24,920 มันจะสร้างไฟล์ฐานข้อมูลไว้ในโฟลเดอร์โปรเจกต์ 101 00:05:24,920 --> 00:05:28,460 ซึ่งเก็บข้อมูลทุกอย่าง เช่น ข้อมูลผู้ใช้ 102 00:05:28,460 --> 00:05:29,787 ข้อมูลงานต่าง ๆ 103 00:05:29,787 --> 00:05:33,328 แต่จะกลายเป็นปัญหาเมื่อคุณอยากดีพลอยขึ้น 104 00:05:33,328 --> 00:05:36,514 production ซึ่งเราจะทำในบทช่วยสอนนี้ 105 00:05:36,514 --> 00:05:40,585 ดังนั้นขั้นนี้ผมจะเลือก Postgres ใน Docker อ้อ 106 00:05:40,585 --> 00:05:43,329 ขณะที่ agent กำลังสร้างแพลนอยู่ 107 00:05:43,329 --> 00:05:49,347 ผมขอพูดไว้ตรงนี้ว่าคุณจะดาวน์โหลดพรอมต์ทั้งหมดที่ผมใช้ในวิดีโอนี้ได้ 108 00:05:49,347 --> 00:05:51,648 และซอร์สโค้ดก็จะแจกให้ด้วย 109 00:05:51,648 --> 00:05:55,719 ผมจะฝากลิงก์ไว้ในคำอธิบายคลิปครับ เมื่อ Claude 110 00:05:55,719 --> 00:05:59,171 ทำแพลนเสร็จ ผมจะกด Escape กลับไปที่โหมด 111 00:05:59,171 --> 00:06:01,561 editing แล้วใช้เสียงสั่งว่า 112 00:06:01,561 --> 00:06:04,570 ให้เก็บแพลนนี้ไว้ในโฟลเดอร์ claude 113 00:06:04,570 --> 00:06:08,287 ภายในโปรเจกต์ แล้วผมจะใช้ชื่อ claude-plans 114 00:06:08,287 --> 00:06:12,801 เพราะผมชอบเก็บแพลนเหล่านี้ไว้กับโค้ดจริงของโปรเจกต์ 115 00:06:12,801 --> 00:06:15,987 เราเก็บแพลนไว้ในโฟลเดอร์โปรเจกต์แล้ว 116 00:06:15,987 --> 00:06:18,908 แต่ผมอยากขยายรายละเอียดมากกว่านี้ 117 00:06:18,908 --> 00:06:21,917 อยากได้แผนการ implement ที่ละเอียด 118 00:06:21,917 --> 00:06:25,811 แยกออกเป็นฟีเจอร์แต่ละตัว เพื่อให้ implement 119 00:06:25,811 --> 00:06:29,617 เป็นทีมได้ หรือใช้คำสั่ง goal รัน implement 120 00:06:29,617 --> 00:06:31,475 ทุกอย่างในเซสชันเดียว 121 00:06:31,475 --> 00:06:35,281 ผมจะดึงแพลนกลับมาแล้วบอกว่า ช่วยขยายแพลนนี้ 122 00:06:35,281 --> 00:06:38,467 สร้าง implementation plan ที่ละเอียด 123 00:06:38,467 --> 00:06:41,034 เก็บไว้ในโฟลเดอร์เดียวกันชื่อ 124 00:06:41,034 --> 00:06:42,981 implementation-plan.md 125 00:06:42,981 --> 00:06:45,902 แล้วแยกแพลนออกเป็นฟีเจอร์แต่ละตัว 126 00:06:45,902 --> 00:06:48,911 เก็บเป็นไฟล์ในโฟลเดอร์โปรเจกต์ด้วย 127 00:06:48,911 --> 00:06:52,982 แต่ละไฟล์ต้องมีรายละเอียดเทคนิคในการ implement 128 00:06:52,982 --> 00:06:56,522 และ acceptance criteria (เกณฑ์การยอมรับ) 129 00:06:56,522 --> 00:06:57,761 แล้วรันเลยครับ 130 00:06:57,761 --> 00:07:00,593 คุณอาจสงสัยว่าทำไมผมต้องทำแบบนี้ 131 00:07:00,593 --> 00:07:04,134 ทำไมไม่ส่งแพลนให้ Claude implement ไปเลย 132 00:07:04,134 --> 00:07:07,762 ประการแรก แพลนนี้มีข้อมูลไม่พอให้นักพัฒนา 133 00:07:07,762 --> 00:07:10,329 implement ได้อย่างถูกต้องครับ 134 00:07:10,329 --> 00:07:12,719 ถ้าคุณมีพื้นฐานด้านการพัฒนา 135 00:07:12,719 --> 00:07:17,586 คุณจะสังเกตว่ามันคือสถาปัตยกรรมของแอปในระดับสูงเท่านั้น 136 00:07:17,586 --> 00:07:20,418 ไม่มีใครพูดถึงเรื่องนี้กันจริง ๆ 137 00:07:20,418 --> 00:07:23,605 และถ้าส่งแพลนแบบนี้ให้นักพัฒนาจริง ๆ 138 00:07:23,605 --> 00:07:25,463 ผลลัพธ์จะกระจัดกระจาย 139 00:07:25,463 --> 00:07:28,915 และมีโอกาสสูงที่ฟีเจอร์บางอย่างจะตกหล่น 140 00:07:28,915 --> 00:07:32,809 การทำแบบนี้บังคับให้ agent คิดจริงจังกับแพลน 141 00:07:32,809 --> 00:07:35,995 และคิดว่าจะสร้างทุกอย่างออกมาอย่างไร 142 00:07:35,995 --> 00:07:37,500 เชื่อผมเถอะ agent 143 00:07:37,500 --> 00:07:40,775 จะรู้ตัวว่ามันมีโอกาสพลาดอะไรบางอย่าง 144 00:07:40,775 --> 00:07:42,368 ตอนที่ผมพูดอยู่นี้ 145 00:07:42,368 --> 00:07:48,386 มันก็กำลังใช้เหตุผลอยู่ว่าต้องติดตั้งไลบรารีแต่ละตัวเวอร์ชันอะไรบ้าง 146 00:07:48,386 --> 00:07:50,776 นี่เป็นงานที่มีประโยชน์ครับ 147 00:07:50,776 --> 00:07:54,404 ถ้าอยากเรียนรู้วิธีทำงานกับ coding agents 148 00:07:54,404 --> 00:07:58,033 อย่างมีประสิทธิภาพ ผมมีคอร์สฟรี ฟรีจริง ๆ 149 00:07:58,033 --> 00:08:01,839 ไม่มีเงื่อนไขแอบแฝง สอนเรื่อง RAM framework 150 00:08:01,839 --> 00:08:05,644 ซึ่งเป็นกรอบแนวคิดของผมในการทำงานกับ coding 151 00:08:05,644 --> 00:08:06,742 agents 152 00:08:06,742 --> 00:08:11,964 และในคอร์สนั้นผมลงรายละเอียดอีกมากว่าทำไมต้องใช้วิธีนี้ครับ 153 00:08:11,964 --> 00:08:14,973 ขณะที่ coding agent กำลังทำงานอยู่ 154 00:08:14,973 --> 00:08:18,956 ผมอยากเตรียมความพร้อมให้มันสักหน่อย ถ้าคุณใช้ 155 00:08:18,956 --> 00:08:22,673 IDE หรือเทอร์มินัลแบบผม คุณต้องติดตั้ง MCP 156 00:08:22,673 --> 00:08:25,240 server หรือสกิลที่ทำให้ agent 157 00:08:25,240 --> 00:08:29,222 เปิดแอปในเบราว์เซอร์และทดสอบแอปจริง ๆ ได้ครับ 158 00:08:29,222 --> 00:08:33,117 แต่ถ้าคุณใช้ Claude desktop app หรือ ChatGPT 159 00:08:33,117 --> 00:08:36,834 desktop app ซึ่งมีเบราว์เซอร์ในตัวอยู่แล้ว 160 00:08:36,834 --> 00:08:40,374 ก็ข้ามขั้นนี้ได้ ผมจะเปิดเซสชันใหม่ เปิด 161 00:08:40,374 --> 00:08:43,826 Claude Code แล้วส่ง URL นี้ พร้อมบอกว่า 162 00:08:43,826 --> 00:08:47,720 โปรดติดตั้ง Playwright MCP server แล้วส่งเลย 163 00:08:47,720 --> 00:08:51,172 ผมรู้ว่าหลายคนชอบใช้ agent browser หรือ 164 00:08:51,172 --> 00:08:52,942 Playwright skill แทน 165 00:08:52,942 --> 00:08:56,747 ไม่ว่าอันไหนก็ไม่สำคัญครับ เราอยากให้ agent 166 00:08:56,747 --> 00:09:00,642 มีวิธีทดสอบงานของตัวเองบ้าง ตัวติดตั้งจัดการ 167 00:09:00,642 --> 00:09:02,766 MCP server ที่ระดับ user 168 00:09:02,766 --> 00:09:05,775 คุณจะไม่เห็นไฟล์ในโฟลเดอร์โปรเจกต์ 169 00:09:05,775 --> 00:09:09,315 แต่เพราะมันอยู่ระดับ user Playwright MCP 170 00:09:09,315 --> 00:09:13,209 server นี้จึงใช้ได้กับ agent ทุกตัวของผมครับ 171 00:09:13,209 --> 00:09:16,838 อีกอย่างที่อยากทำคือตั้งค่าไฟล์ claude.md 172 00:09:16,838 --> 00:09:20,644 ผมจะสร้างสองไฟล์คือ agents.md และ claude.md 173 00:09:20,644 --> 00:09:24,449 โดยใน claude.md ผมแค่อ้างอิงไปที่ agents.md 174 00:09:24,449 --> 00:09:27,724 ส่วนใน agents.md ผมจะเก็บให้เรียบง่าย 175 00:09:27,724 --> 00:09:31,353 เพิ่มหัวข้อ testing the app (การทดสอบแอป) 176 00:09:31,353 --> 00:09:35,247 บอกว่า ให้ทดสอบแอปด้วย Playwright MCP server 177 00:09:35,247 --> 00:09:39,318 หรือ Playwright skill หรือ agent browser skill 178 00:09:39,318 --> 00:09:43,301 ที่คุณติดตั้งไว้เสมอ อีกอย่างที่ผมชอบเพิ่มคือ 179 00:09:43,301 --> 00:09:45,248 ให้ใช้ข้อมูลชุดเดิมซ้ำ 180 00:09:45,248 --> 00:09:48,877 อย่าสร้างข้อมูลผู้ใช้ใหม่ทุกครั้งที่ทดสอบ 181 00:09:48,877 --> 00:09:51,532 เก็บข้อมูลไว้ใน test-data.json 182 00:09:51,532 --> 00:09:54,452 ซึ่งอยู่ในโฟลเดอร์ claude ได้ด้วย 183 00:09:54,452 --> 00:09:57,904 เท่านั้นเองครับ หลักการคือ ตอนที่ agent 184 00:09:57,904 --> 00:10:00,913 ทดสอบแอป มันจะเปิดแอปในเบราว์เซอร์ 185 00:10:00,913 --> 00:10:02,418 พยายามเข้าสู่ระบบ 186 00:10:02,418 --> 00:10:05,604 แล้วรู้ว่ายังไม่มีชื่อผู้ใช้รหัสผ่าน 187 00:10:05,604 --> 00:10:08,436 มันก็จะสร้างบัญชีใหม่สำหรับทดสอบ 188 00:10:08,436 --> 00:10:11,003 แต่ปัญหาคือครั้งหน้าเวลาทดสอบ 189 00:10:11,003 --> 00:10:13,127 มันจะไม่ใช้ข้อมูลชุดเดิม 190 00:10:13,127 --> 00:10:17,641 แต่จะพยายามสร้างข้อมูลทั้งหมดใหม่ตั้งแต่ต้นทุกครั้ง 191 00:10:17,641 --> 00:10:19,411 ไฟล์นี้จะทำให้ agent 192 00:10:19,411 --> 00:10:23,482 ใช้ข้อมูลซ้ำแทนที่จะสร้างใหม่ครับ เยี่ยม agent 193 00:10:23,482 --> 00:10:26,403 เพิ่งสร้างไฟล์ฟีเจอร์ทั้งหมดเสร็จ 194 00:10:26,403 --> 00:10:30,031 ตอนนี้ผมจะออกจาก Claude Code เพื่อให้ MCP 195 00:10:30,031 --> 00:10:34,014 server มีผล แล้วรีสตาร์ท Claude กลับมาที่โหมด 196 00:10:34,014 --> 00:10:37,377 edit ผมจะเก็บโฟลเดอร์ plans นี้ จริง ๆ 197 00:10:37,377 --> 00:10:44,812 แล้วไม่ควรอยู่ใน plans ทั้งหมด ให้สร้างโฟลเดอร์ย่อยชื่อ foundation แล้วลาก features, 198 00:10:44,812 --> 00:10:47,909 implementation plan และอันนี้เข้าไป 199 00:10:47,909 --> 00:10:51,627 ทุกอย่างอยู่ในโฟลเดอร์ foundation แล้วครับ 200 00:10:51,627 --> 00:10:54,459 ต่อไปขึ้นอยู่กับ agent ที่คุณใช้ 201 00:10:54,459 --> 00:10:58,530 ถ้าใช้โมเดลที่ราคาถูกกว่าหรือโมเดล open-source 202 00:10:58,530 --> 00:11:01,805 ผมแนะนำให้ลากไฟล์ implementation plan 203 00:11:01,805 --> 00:11:05,699 พร้อมกับฟีเจอร์หนึ่ง แล้วให้ agent implement 204 00:11:05,699 --> 00:11:09,239 ฟีเจอร์นั้น พอเสร็จก็ล้างบทสนทนา แล้วดึง 205 00:11:09,239 --> 00:11:13,045 implementation plan กลับมาพร้อมฟีเจอร์ถัดไป 206 00:11:13,045 --> 00:11:17,027 ทำวนแบบนี้จนเสร็จทุกอย่างครับ แต่ถ้าใช้ Codex 207 00:11:17,027 --> 00:11:21,010 หรือ Claude Code อีกทางเลือกคือรันคำสั่ง goal 208 00:11:21,010 --> 00:11:24,727 โดยดึงโฟลเดอร์ foundation เข้ามาแล้วบอกว่า 209 00:11:24,727 --> 00:11:28,444 โปรด implement ฟีเจอร์ทั้งหมดในโฟลเดอร์นี้ 210 00:11:28,444 --> 00:11:31,719 อย่าหยุดจนกว่าทุกอย่างจะถูก implement 211 00:11:31,719 --> 00:11:34,551 และทดสอบเสร็จ เท่านั้นเอง ส่งเลย 212 00:11:34,551 --> 00:11:37,737 แล้วเราก็เดินออกไปได้ ปล่อยให้ agent 213 00:11:37,737 --> 00:11:41,101 ทำงานของมัน ผมจะข้ามไปตอนที่ implement 214 00:11:41,101 --> 00:11:44,818 เสร็จแล้ว ไม่ต้องห่วงนะครับ เราจะได้ดู MCP 215 00:11:44,818 --> 00:11:47,827 server จริง ๆ และ Claude connector 216 00:11:47,827 --> 00:11:51,544 กันหลังจากสร้างแอปเสร็จแล้ว มาตรวจดู agent 217 00:11:51,544 --> 00:11:55,261 กันครับ มันจะรันการทดสอบ end-to-end โดยใช้ 218 00:11:55,261 --> 00:11:57,120 Playwright MCP server 219 00:11:57,120 --> 00:12:01,457 ซึ่งหมายความว่ามันจะเปิดหน้าต่างเบราว์เซอร์แบบนี้ 220 00:12:01,457 --> 00:12:06,325 แล้วทดสอบแอปตั้งแต่ต้นจนจบเพื่อให้แน่ใจว่าทุกอย่างทำงาน 221 00:12:06,325 --> 00:12:07,652 เยี่ยมมาก agent 222 00:12:07,652 --> 00:12:10,484 ทำการเปลี่ยนแปลงทั้งหมดเสร็จแล้ว 223 00:12:10,484 --> 00:12:14,201 และยังใช้เบราว์เซอร์ทดสอบแอปแบบ end-to-end 224 00:12:14,201 --> 00:12:16,149 ด้วย นี่คือผลลัพธ์ครับ 225 00:12:16,149 --> 00:12:19,246 เรามีระบบที่ใช้งานได้เต็มรูปแบบแล้ว 226 00:12:19,246 --> 00:12:23,052 ผมจะเข้าสู่ระบบ สร้างองค์กร แล้วก็ได้กระดาน 227 00:12:23,052 --> 00:12:27,035 Kanban ของเรา ลองเพิ่มการ์ดอย่าง "ซื้อขนมปัง" 228 00:12:27,035 --> 00:12:29,070 เซฟ แล้วเมื่อคลิกที่งาน 229 00:12:29,070 --> 00:12:31,902 เราก็สามารถมอบหมายงานให้ใครสักคน 230 00:12:31,902 --> 00:12:34,912 และตั้งข้อมูลเพิ่มเติมได้ เจ๋งครับ 231 00:12:34,912 --> 00:12:37,744 แต่นี่ไม่ใช่ประเด็นหลักของวิดีโอ 232 00:12:37,744 --> 00:12:41,726 สิ่งที่เราอยากโฟกัสคือการเพิ่ม MCP server และ 233 00:12:41,726 --> 00:12:43,497 Claude connector นี้ 234 00:12:43,497 --> 00:12:46,771 แต่ก่อนอื่นมาดีพลอยแอปขึ้น production 235 00:12:46,771 --> 00:12:50,577 กันก่อนครับ เพื่อให้ Claude โดยเฉพาะ Claude 236 00:12:50,577 --> 00:12:54,471 web ตรวจพบแอปของคุณ แอปต้องรันบน URL สาธารณะ 237 00:12:54,471 --> 00:12:56,153 ไม่อย่างนั้น Claude 238 00:12:56,153 --> 00:13:00,843 จะไม่มีทางเห็นแอปที่รันอยู่บนฮาร์ดแวร์ของคุณเองได้เลย 239 00:13:00,843 --> 00:13:03,676 โชคดีที่ทำง่ายมาก และฟรีด้วยครับ 240 00:13:03,676 --> 00:13:08,720 ผมเคยทำวิดีโอหลายตัวเกี่ยวกับการตั้งโปรเจกต์และดีพลอยขึ้น 241 00:13:08,720 --> 00:13:12,615 production แล้ว จริง ๆ แล้วใน Agentic Coding 242 00:13:12,615 --> 00:13:14,119 Masterclass ของผม 243 00:13:14,119 --> 00:13:17,305 มีวิดีโอที่พาคุณผ่านกระบวนการทั้งหมด 244 00:13:17,305 --> 00:13:21,023 ตั้งแต่เริ่มจากโฟลเดอร์เปล่า ตั้ง Git ตั้ง 245 00:13:21,023 --> 00:13:24,740 GitHub ดีพลอยไปที่ Vercel และอื่น ๆ อีกมาก 246 00:13:24,740 --> 00:13:27,483 ถ้าสนใจผมจะฝากลิงก์ Masterclass 247 00:13:27,483 --> 00:13:29,342 ไว้ในคำอธิบายคลิปครับ 248 00:13:29,342 --> 00:13:31,732 ผมจะเร่งความเร็วตรงนี้หน่อย 249 00:13:31,732 --> 00:13:35,803 แต่มันตรงไปตรงมามากครับ สิ่งแรกคือสร้าง GitHub 250 00:13:35,803 --> 00:13:39,254 repository ตั้งชื่อว่า claude-connector 251 00:13:39,254 --> 00:13:41,290 และตั้งเป็น public ด้วย 252 00:13:41,290 --> 00:13:44,476 เพื่อที่ถ้าสนใจจะได้เข้าไปดูโปรเจกต์ 253 00:13:44,476 --> 00:13:47,928 ก๊อปไปศึกษาเองได้ และเมื่อเปิดบน GitHub 254 00:13:47,928 --> 00:13:51,645 จะเห็นว่าโค้ดทั้งหมดที่อยู่บนเครื่องเราถูก 255 00:13:51,645 --> 00:13:54,566 push ไปยัง repository ระยะไกลแล้ว 256 00:13:54,566 --> 00:13:57,575 ซึ่งทำหน้าที่เป็นแบ็คอัปของโค้ดเรา 257 00:13:57,575 --> 00:13:59,611 ต่อไปโค้ดนี้ยังไม่ live 258 00:13:59,611 --> 00:14:03,151 ต้องดีพลอยไปยังบริษัทโฮสติ้งก่อน ผมจะใช้ 259 00:14:03,151 --> 00:14:06,425 Vercel ซึ่งใช้ฟรีและตั้งง่ายมาก ไปที่ 260 00:14:06,425 --> 00:14:10,231 vercel.com สมัครและเข้าสู่ระบบ แล้วคลิก add 261 00:14:10,231 --> 00:14:13,594 new project ค้นหาโปรเจกต์ที่เพิ่งสร้าง 262 00:14:13,594 --> 00:14:17,046 แล้วคลิก import กลับมาที่โปรเจกต์ของเรา 263 00:14:17,046 --> 00:14:20,321 เปิดไฟล์นี้แล้วก๊อปตัวแปรทั้งหมดมาวาง 264 00:14:20,321 --> 00:14:23,772 แต่ว่าเราต้องแก้บางจุดครับ Postgres URL 265 00:14:23,772 --> 00:14:27,224 ตอนนี้ชี้ไปที่ localhost ซึ่งไม่ถูกต้อง 266 00:14:27,224 --> 00:14:30,941 เราต้องชี้ไปที่ฐานข้อมูลที่รันอยู่บนคลาวด์ 267 00:14:30,941 --> 00:14:34,393 ใช้ฐานข้อมูลที่รันบนเครื่องตัวเองไม่ได้ 268 00:14:34,393 --> 00:14:38,199 โชคดีที่ตั้งง่ายเหมือนกัน กลับไปที่แดชบอร์ด 269 00:14:38,199 --> 00:14:42,270 Vercel ในอีกเซสชัน ไปที่ storage คลิก create a 270 00:14:42,270 --> 00:14:46,076 new database เลือก Neon serverless Postgres 271 00:14:46,076 --> 00:14:50,058 คลิก continue ตั้งชื่อว่า cl-demo คลิก create 272 00:14:50,058 --> 00:14:52,359 อีกครั้ง แล้วข้ามขั้นนี้ไป 273 00:14:52,359 --> 00:14:55,546 และจากส่วนนี้เราต้องคลิก show secret 274 00:14:55,546 --> 00:14:57,670 ค้นหาตัวแปร Postgres URL 275 00:14:57,670 --> 00:15:01,033 แล้วก๊อปทุกอย่างหลังเครื่องหมายเท่ากับ 276 00:15:01,033 --> 00:15:05,016 จากนั้นกลับไปที่ตัวแปรของเรา ตั้งค่า Postgres 277 00:15:05,016 --> 00:15:08,821 URL เป็นค่าใหม่นี้ เท่านี้ที่เราจะแก้ตอนนี้ 278 00:15:08,821 --> 00:15:12,893 เดี๋ยวจะกลับมาแก้ทีหลังเมื่อรู้ว่า Better Auth 279 00:15:12,893 --> 00:15:16,787 URL ควรเป็นอะไร ตอนนี้ยังเป็น localhost อยู่ 280 00:15:16,787 --> 00:15:19,619 แต่เราจะแทนที่มันเมื่อได้ domain 281 00:15:19,619 --> 00:15:23,071 ที่ระบบสร้างขึ้นมา แล้วคลิก deploy ครับ 282 00:15:23,071 --> 00:15:27,053 โปรเจกต์ถูกดีพลอยแล้ว ตอนนี้กลับไปที่แดชบอร์ด 283 00:15:27,053 --> 00:15:30,947 ก๊อป domain ที่สร้างขึ้นมา ไปที่ environment 284 00:15:30,947 --> 00:15:34,399 variables ตรง Better Auth URL คลิก edit 285 00:15:34,399 --> 00:15:36,700 แล้วเปลี่ยนเป็น domain นี้ 286 00:15:36,700 --> 00:15:39,267 เซฟการเปลี่ยนแปลงและ redeploy 287 00:15:39,267 --> 00:15:43,161 เพื่อให้ค่าใหม่มีผล เมื่อเปลี่ยนแล้ว ลองเปิด 288 00:15:43,161 --> 00:15:45,993 domain ดูว่าทุกอย่างทำงานไหมครับ 289 00:15:45,993 --> 00:15:50,065 ตอนนี้มันรันบน domain สาธารณะแล้ว ใครที่มี URL 290 00:15:50,065 --> 00:15:53,162 นี้ก็เข้าใช้แอปได้ คลิก get started 291 00:15:53,162 --> 00:15:54,667 แล้วลองสร้างบัญชี 292 00:15:54,667 --> 00:15:57,499 ผมสังเกตว่ามันดูเหมือนจะไม่ทำงาน 293 00:15:57,499 --> 00:15:58,738 แทนที่จะข้ามไป 294 00:15:58,738 --> 00:16:02,278 ขอโชว์วิธีแก้ปัญหาที่คุณอาจเจอด้วยนะครับ 295 00:16:02,278 --> 00:16:05,199 เวลาเจอแบบนี้ ให้กลับไปที่ Vercel 296 00:16:05,199 --> 00:16:09,093 แล้วใต้โปรเจกต์คลิก logs หารายการสีแดงแบบนี้ 297 00:16:09,093 --> 00:16:12,633 แล้วคลิกเพื่อก๊อป log เหล่านี้ กลับมาที่ 298 00:16:12,633 --> 00:16:15,908 Claude บอกว่า ผมลองดีพลอยไปที่ Vercel 299 00:16:15,908 --> 00:16:18,652 แล้วพอเข้าสู่ระบบ ได้ error นี้ 300 00:16:18,652 --> 00:16:22,723 วางข้อความทั้งหมดลงไป วิธีแก้คือ build command 301 00:16:22,723 --> 00:16:25,555 นี้ครับ ซึ่งเป็นคำสั่งที่ Vercel 302 00:16:25,555 --> 00:16:28,918 รันเมื่อดีพลอยโปรเจกต์ไปยังเซิร์ฟเวอร์ 303 00:16:28,918 --> 00:16:32,901 เดิมมันมีแค่ next build ดังนั้นสิ่งที่ Claude 304 00:16:32,901 --> 00:16:36,795 ทำคือเพิ่มส่วนนี้เข้าไป เพื่อให้รัน database 305 00:16:36,795 --> 00:16:40,512 migration ด้วย ซึ่งจะสร้างตารางในฐานข้อมูล 306 00:16:40,512 --> 00:16:43,521 สาเหตุที่แอปของเราพังใน production 307 00:16:43,521 --> 00:16:46,088 ก็คือตารางในฐานข้อมูลยังไม่มี 308 00:16:46,088 --> 00:16:50,159 เพราะเรายังไม่ได้รัน migration เท่านั้นเองครับ 309 00:16:50,159 --> 00:16:53,434 ขอย้ำว่าซอร์สโค้ดมีอยู่ในคำอธิบายคลิป 310 00:16:53,434 --> 00:16:55,824 คุณสามารถก๊อป build command 311 00:16:55,824 --> 00:16:59,187 นี้ไปใช้ในโปรเจกต์ได้เลย และถ้าผมจำได้ 312 00:16:59,187 --> 00:17:01,311 ผมจะอัปเดตสกิล start-app 313 00:17:01,311 --> 00:17:03,700 ให้รวมการเปลี่ยนแปลงนี้ด้วย 314 00:17:03,700 --> 00:17:07,064 คราวนี้ผมสร้างบัญชีได้แล้ว ตั้งชื่อว่า 315 00:17:07,064 --> 00:17:11,135 claude-demo สร้างองค์กร แล้วสร้างการ์ดแรกอย่าง 316 00:17:11,135 --> 00:17:14,321 "create claude connections tutorial" 317 00:17:14,321 --> 00:17:16,180 เพิ่มการ์ด เยี่ยมครับ 318 00:17:16,180 --> 00:17:19,277 นี่คือเวิร์กโฟลว์ที่คุณคุ้นเคยกันดี 319 00:17:19,277 --> 00:17:22,994 เราสร้างแอปเสร็จแล้ว มันทำงานบน production 320 00:17:22,994 --> 00:17:25,915 และคุณอาจมีผู้ใช้จริงกำลังใช้อยู่ 321 00:17:25,915 --> 00:17:29,721 แล้วตอนนี้คุณอาจตัดสินใจเปิดเผยแอปนี้ให้ AI 322 00:17:29,721 --> 00:17:32,199 agent เข้าถึงผ่าน MCP server 323 00:17:32,199 --> 00:17:35,828 และอย่างที่เราจะทำในวิดีโอนี้ ผ่าน Claude 324 00:17:35,828 --> 00:17:39,191 connector ซึ่งง่ายมากครับ ถ้าทำตามอยู่ 325 00:17:39,191 --> 00:17:42,466 ให้กลับไปที่โปรเจกต์ แล้วเราจะติดตั้ง 326 00:17:42,466 --> 00:17:45,829 dependency สองสามตัวที่จะช่วยให้ agent 327 00:17:45,829 --> 00:17:49,900 จัดการเรื่องพวกนี้ได้ เอาล่ะ มาถึงส่วนสนุกแล้ว 328 00:17:49,900 --> 00:17:51,759 เพื่อให้ทุกอย่างทำงาน 329 00:17:51,759 --> 00:17:55,564 เราต้องติดตั้งสกิลใหม่สองตัวเพื่อช่วย agent 330 00:17:55,564 --> 00:17:59,104 อันแรกคือ Better Auth skill ไปที่หน้านี้ 331 00:17:59,104 --> 00:18:01,760 ซึ่งลิงก์ทั้งหมดอยู่ในคำอธิบาย 332 00:18:01,760 --> 00:18:05,123 แล้วติดตั้งสกิลนี้กลับเข้าไปในโปรเจกต์ 333 00:18:05,123 --> 00:18:08,486 รันคำสั่งนี้ ติดตั้งสำหรับ Claude Code 334 00:18:08,486 --> 00:18:12,203 ที่ระดับโปรเจกต์ สกิลที่สองคือ MCP builder 335 00:18:12,203 --> 00:18:13,301 skill 336 00:18:13,301 --> 00:18:16,930 ก๊อปคำสั่งนี้แล้วรันในเทอร์มินัลเหมือนกัน 337 00:18:16,930 --> 00:18:21,266 สกิลนี้จะให้เอกสารอ้างอิงมากมายเกี่ยวกับวิธีสร้าง 338 00:18:21,266 --> 00:18:24,807 MCP servers ครับ หลักการคือ เรามี Claude 339 00:18:24,807 --> 00:18:27,904 ตรงนี้ หรือ agent อื่น ๆ หรือ Codex 340 00:18:27,904 --> 00:18:31,621 หรืออะไรก็ตามที่คุณใช้ และเราต้องให้ agent 341 00:18:31,621 --> 00:18:35,516 เข้าถึงแอปของเราซึ่งรันอยู่บนเว็บเซิร์ฟเวอร์ 342 00:18:35,516 --> 00:18:38,790 ตอนนี้เราต้องใช้ UI เพื่อโต้ตอบกับแอป 343 00:18:38,790 --> 00:18:42,419 แต่เราไม่ต้องการให้ agent เชื่อมต่อกับ UI 344 00:18:42,419 --> 00:18:46,225 โดยตรง agent ควรเรียกใช้ tools (เครื่องมือ) 345 00:18:46,225 --> 00:18:49,588 ที่มีอยู่ในแอปโดยตรงครับ ในการทำแบบนี้ 346 00:18:49,588 --> 00:18:53,482 เราจะเปิดเผย remote MCP server ซึ่งจะเปิดเผย 347 00:18:53,482 --> 00:18:56,757 tools ที่ agent เรียกใช้ได้ และ tools 348 00:18:56,757 --> 00:19:00,828 เหล่านั้นจะโต้ตอบกับแอปเบื้องหลัง ตัวอย่างเช่น 349 00:19:00,828 --> 00:19:03,483 อาจมี tool ชื่อ create expense 350 00:19:03,483 --> 00:19:06,492 ที่ถูกเปิดเผยโดย remote MCP server 351 00:19:06,492 --> 00:19:10,829 แล้วเซิร์ฟเวอร์นั้นจะเรียกฟังก์ชันในแอปชื่อประมาณ 352 00:19:10,829 --> 00:19:12,599 create expense entry 353 00:19:12,599 --> 00:19:15,520 ซึ่งจะสร้างรายจ่ายจริงในฐานข้อมูล 354 00:19:15,520 --> 00:19:18,971 หรือแม้แต่อัปโหลดไฟล์ก็ได้ การสร้าง MCP 355 00:19:18,971 --> 00:19:21,892 servers อาจเป็นเรื่องเทคนิคสูงมาก 356 00:19:21,892 --> 00:19:24,105 มีชิ้นส่วนที่ต้องดูแลเยอะ 357 00:19:24,105 --> 00:19:27,822 ทางออกที่ง่ายกว่าคือติดตั้งสกิลนี้ที่จะสอน 358 00:19:27,822 --> 00:19:31,805 agent สร้าง MCP server รวมถึงเอกสารอ้างอิงที่ 359 00:19:31,805 --> 00:19:35,168 agent ใช้เรียนรู้วิธีสร้าง MCP servers 360 00:19:35,168 --> 00:19:39,151 และสำหรับแนวทางปฏิบัติที่ดีที่สุด Better Auth 361 00:19:39,151 --> 00:19:42,071 คือไลบรารียืนยันตัวตนผู้ใช้ของเรา 362 00:19:42,071 --> 00:19:46,408 แอปใช้มันให้ผู้ใช้สมัครและเข้าสู่ระบบอย่างปลอดภัย 363 00:19:46,408 --> 00:19:47,736 แต่ Better Auth 364 00:19:47,736 --> 00:19:51,541 ยังเปิดเผยอะไรที่สำคัญมากสำหรับ MCP servers 365 00:19:51,541 --> 00:19:55,524 ด้วยครับ เพราะ Claude เรียกแอปเราโดยตรงไม่ได้ 366 00:19:55,524 --> 00:19:58,268 Claude ต้องยืนยันตัวตนในแอปก่อน 367 00:19:58,268 --> 00:20:01,719 เพื่อให้รู้ว่าผู้ใช้ตัวจริงที่ใช้ agent 368 00:20:01,719 --> 00:20:05,613 นี้คือใคร และ agent ก็เข้าสู่ระบบแอปแบบตรง ๆ 369 00:20:05,613 --> 00:20:09,596 ไม่ได้ มีโปรโตคอลพิเศษที่ทำให้ทั้งหมดนี้ทำงาน 370 00:20:09,596 --> 00:20:13,048 และโชคดีที่ Better Auth ทำให้มันง่ายมาก 371 00:20:13,048 --> 00:20:16,942 ลองย้ายมาตรงนี้ ตัว agent จะเรียก MCP server 372 00:20:16,942 --> 00:20:19,509 แล้ว MCP server จะบอกว่า "เฮ้ 373 00:20:19,509 --> 00:20:23,491 ฉันไม่รู้ว่าคุณเป็นใคร ฉันรู้ว่าคุณเป็น agent 374 00:20:23,491 --> 00:20:25,527 ที่พยายามทำงานกับแอปนี้ 375 00:20:25,527 --> 00:20:30,129 แต่ต้องมีบัญชีผู้ใช้ที่ถูกต้องอยู่เบื้องหลังคำขอนี้" 376 00:20:30,129 --> 00:20:33,846 และแน่นอน ถ้าผมเป็นคนใช้ agent ผมก็อยากให้ 377 00:20:33,846 --> 00:20:35,351 Claude ทำงานแทนผม 378 00:20:35,351 --> 00:20:38,272 มันจึงต้องใช้บัญชีผู้ใช้จริงของผม 379 00:20:38,272 --> 00:20:41,281 ในการยืนยันบัญชีนั้น หรือให้ agent 380 00:20:41,281 --> 00:20:44,290 ระบุตัวตนและยืนยันตัวตนบนแอปของเรา 381 00:20:44,290 --> 00:20:46,326 มันจะผ่านโปรโตคอล OAuth 382 00:20:46,326 --> 00:20:50,043 ซึ่งจะขอให้ผู้ใช้ยืนยันตัวตนหรืออนุมัติให้ 383 00:20:50,043 --> 00:20:51,990 agent นี้เข้าถึงแอปนี้ 384 00:20:51,990 --> 00:20:54,822 เมื่อผู้ใช้อนุมัติคำขอนั้น token 385 00:20:54,822 --> 00:20:58,805 ที่ปลอดภัยจะถูกเก็บไว้ในแอป agent หรือตัวกลาง 386 00:20:58,805 --> 00:21:00,221 (harness) ของเรา 387 00:21:00,221 --> 00:21:04,646 ซึ่งหมายความว่าคำขอถัดไปทั้งหมดจะถูกยอมรับผ่านชั้น 388 00:21:04,646 --> 00:21:07,921 OAuth และ agent จะเข้าถึงแอปของเราได้ 389 00:21:07,921 --> 00:21:11,461 และเราสามารถเพิกถอนการเข้าถึง MCP server 390 00:21:11,461 --> 00:21:13,851 ได้ทุกเมื่อ หรือฝั่ง client 391 00:21:13,851 --> 00:21:16,240 ก็ตัดการเชื่อมต่อได้เช่นกัน 392 00:21:16,240 --> 00:21:20,134 นี่คือสองชิ้นส่วนหลักของเรา เราต้องสร้าง MCP 393 00:21:20,134 --> 00:21:24,117 server และเปิดใช้งาน OAuth ในชั้น auth ของเรา 394 00:21:24,117 --> 00:21:28,188 ฟังดูเทคนิคมาก แต่ผมสัญญาว่ามันง่ายจริง ๆ ครับ 395 00:21:28,188 --> 00:21:31,729 ในคำอธิบายคลิปนี้ ผมจะให้บทความนี้กับคุณ 396 00:21:31,729 --> 00:21:35,711 ซึ่งมาจากเอกสารอย่างเป็นทางการของ Better Auth 397 00:21:35,711 --> 00:21:39,340 OAuth อธิบายการทำงานของ Better Auth OAuth 398 00:21:39,340 --> 00:21:41,464 plug-in สกิล Better Auth 399 00:21:41,464 --> 00:21:44,208 น่าจะมีข้อมูลทั้งหมดนี้อยู่แล้ว 400 00:21:44,208 --> 00:21:48,279 แต่ตอนอัดวิดีโอมีความสับสนเล็กน้อย เพราะมีหน้า 401 00:21:48,279 --> 00:21:51,642 MCP ที่ถูกทิ้งไว้ (deprecated) อยู่นี่ 402 00:21:51,642 --> 00:21:55,625 ซึ่งเป็นวิธีที่ Better Auth เคยใช้ยืนยันตัวตน 403 00:21:55,625 --> 00:21:58,988 MCP providers แต่วิธีนี้เพิ่งเปลี่ยนไป 404 00:21:58,988 --> 00:22:02,971 และหน้านี้คือแหล่งข้อมูลที่ถูกต้อง (source of 405 00:22:02,971 --> 00:22:05,980 truth) ตอนนี้กลับไปที่ Claude Code 406 00:22:05,980 --> 00:22:08,724 เปิดเซสชันแล้วส่งพรอมต์นี้ครับ: 407 00:22:08,724 --> 00:22:12,087 ผมต้องการให้คุณสร้าง remote MCP server 408 00:22:12,087 --> 00:22:15,892 ให้แอปของเรา MCP server นี้ควรเปิดเผย tools 409 00:22:15,892 --> 00:22:18,017 ทั้งหมดที่จะให้ AI agent 410 00:22:18,017 --> 00:22:21,999 โต้ตอบกับแอปของเราแทนผู้ใช้ได้อย่างเต็มรูปแบบ 411 00:22:21,999 --> 00:22:25,893 MCP server จะอยู่ที่ route นี้ ผมจะใส่ประมาณ 412 00:22:25,893 --> 00:22:29,522 domain/mcp คุณมีสองสกิลที่ช่วยได้ นั่นคือ 413 00:22:29,522 --> 00:22:32,974 Better Auth skill และ MCP builder skill 414 00:22:32,974 --> 00:22:36,780 ซึ่งก็คือสองสกิลตรงนี้ สำหรับบริบทเพิ่มเติม 415 00:22:36,780 --> 00:22:40,585 ให้อ้างอิงหน้านี้ ซึ่งอยู่ใน OAuth provider 416 00:22:40,585 --> 00:22:43,329 URL และนี่ก็สำคัญมาก MCP server 417 00:22:43,329 --> 00:22:47,400 นี้ควรทำงานเป็น Claude connector ด้วย และยังมี 418 00:22:47,400 --> 00:22:50,232 URL อีกตัวที่จะช่วย agent ได้มาก 419 00:22:50,232 --> 00:22:54,038 และบอกไว้ก่อนว่านี่คือเรื่องปกติครับ นี่คือ 420 00:22:54,038 --> 00:22:57,136 context engineering (วิศวกรรมบริบท) 421 00:22:57,136 --> 00:22:59,437 เราพยายามให้บริบทกับ agent 422 00:22:59,437 --> 00:23:02,977 มากที่สุดเพื่อสร้างโซลูชันที่เชื่อถือได้ 423 00:23:02,977 --> 00:23:06,960 บทความจาก Claude นี้ให้คำแนะนำวิธีตั้งค่า MCP 424 00:23:06,960 --> 00:23:10,411 servers เพื่อเชื่อมต่อกับ Claude ในฐานะ 425 00:23:10,411 --> 00:23:14,394 connector ลิงก์อยู่ในคำอธิบายคลิป แล้ววางลงไป 426 00:23:14,394 --> 00:23:17,492 ถ้าคุณมีแอปเดิมที่อยากเปิดใช้งาน AI 427 00:23:17,492 --> 00:23:21,120 นี่คือพรอมต์เดียวที่คุณต้องการจริง ๆ ครับ 428 00:23:21,120 --> 00:23:24,041 ส่งเลย agent ทำการเปลี่ยนแปลง MCP 429 00:23:24,041 --> 00:23:28,112 ทั้งหมดเสร็จแล้ว และผมขอให้มันสร้าง commit และ 430 00:23:28,112 --> 00:23:31,830 push การเปลี่ยนแปลงขึ้น production ผมจะบอก 431 00:23:31,830 --> 00:23:35,724 Claude ว่า ผมดีพลอยขึ้น production แล้ว ช่วย 432 00:23:35,724 --> 00:23:39,618 ping MCP server หน่อยว่าเรียบร้อยไหม แล้ววาง 433 00:23:39,618 --> 00:23:42,362 URL/MCP ลงไป ผมขัดจังหวะ Claude 434 00:23:42,362 --> 00:23:45,990 แต่มันก็บอกว่าทุกอย่างเป็นสีเขียว (green) 435 00:23:45,990 --> 00:23:49,884 แล้วอีกอย่างที่อยากโชว์คือ ตอนเข้าสู่ระบบแอป 436 00:23:49,884 --> 00:23:52,894 ตอนนี้เรามีส่วน connections ตรงนี้ 437 00:23:52,894 --> 00:23:55,460 ซึ่งแสดงแอปพลิเคชันหรือ agent 438 00:23:55,460 --> 00:23:59,089 ที่เชื่อมต่ออยู่ทั้งหมด รวมถึง connection 439 00:23:59,089 --> 00:24:02,541 endpoint ของเรา สิ่งที่เหลือคือลองเพิ่ม 440 00:24:02,541 --> 00:24:05,815 connector นี้ให้ Claude ครับ คลิก add 441 00:24:05,815 --> 00:24:09,621 connectors แล้ว manage connectors ไปที่ add 442 00:24:09,621 --> 00:24:13,338 แล้ว add a custom connector ตั้งชื่อแอปว่า 443 00:24:13,338 --> 00:24:17,321 Lanes วาง URL ของเรา แล้วคลิก add เท่านั้นเอง 444 00:24:17,321 --> 00:24:20,153 มันจะถามให้เชื่อมต่อกับแอปของเรา 445 00:24:20,153 --> 00:24:24,313 ซึ่งก็คือขั้นที่เราต้องยืนยันตัวตนในแอปนั่นแหละ 446 00:24:24,313 --> 00:24:26,614 คลิก connect แล้วดูนี่ครับ 447 00:24:26,614 --> 00:24:30,154 มันให้หน้าเฉพาะตัวเรา ขอบคุณ Better Auth 448 00:24:30,154 --> 00:24:32,455 และตรงนี้ผมจะ allow Claude 449 00:24:32,455 --> 00:24:35,995 แล้วมันบอกว่าเชื่อมต่อแล้ว ปิดแท็บนี้ได้ 450 00:24:35,995 --> 00:24:39,978 กลับมาที่ Claude เราก็เชื่อมต่อแล้ว และ agent 451 00:24:39,978 --> 00:24:43,164 เข้าถึง tools ทั้งหมดนี้ได้ มี tools 452 00:24:43,164 --> 00:24:46,085 แบบอ่านอย่างเดียวเยอะแยะ มี tools 453 00:24:46,085 --> 00:24:49,979 แบบเขียนและลบ เช่น สร้างการ์ด สร้างลิงก์เชิญ 454 00:24:49,979 --> 00:24:53,785 เจ๋งไหมล่ะครับ และเราควบคุมการเข้าถึง tools 455 00:24:53,785 --> 00:24:57,768 เหล่านี้ได้ ไม่ว่าจะจากในแอป โดยบอกให้ Claude 456 00:24:57,768 --> 00:25:00,157 Code เอาฟังก์ชันบางอย่างออก 457 00:25:00,157 --> 00:25:01,839 หรือควบคุมจากตรงนี้ 458 00:25:01,839 --> 00:25:05,114 เลือกได้ว่าต้องการอนุมัติไหม บาง tool 459 00:25:05,114 --> 00:25:07,857 ควรถูกบล็อกทั้งหมด หรือบาง tool 460 00:25:07,857 --> 00:25:11,928 อนุมัติอัตโนมัติ ไม่ว่าจะแบบไหน มาทดสอบกันครับ 461 00:25:11,928 --> 00:25:15,469 ผมจะเปิดเซสชัน Claude ใหม่ ซึ่งรันอยู่ใน 462 00:25:15,469 --> 00:25:17,681 Claude desktop app นะครับ 463 00:25:17,681 --> 00:25:21,398 แต่ก็ควรโชว์ด้วยว่ามันใช้ได้กับ Claude web 464 00:25:21,398 --> 00:25:24,673 ตอนนี้ผมเปิด Claude web อยู่ ถ้าไปที่ 465 00:25:24,673 --> 00:25:27,594 connectors แล้ว manage connectors 466 00:25:27,594 --> 00:25:31,045 จะเห็นการเชื่อมต่อ Lanes อยู่ตรงนี้ด้วย 467 00:25:31,045 --> 00:25:35,117 แปลว่าตอนนี้มันใช้ได้ทั้งบน Claude web, Claude 468 00:25:35,117 --> 00:25:38,126 desktop app และ Claude code เอาล่ะ 469 00:25:38,126 --> 00:25:42,197 มาดูกันว่ามันทำงานไหม โปรดสร้างงานใหม่ใน Lanes 470 00:25:42,197 --> 00:25:46,091 ชื่อว่า update claude code course in agentic 471 00:25:46,091 --> 00:25:49,897 labs ส่งเลย มันขออนุญาตเรียก tools เหล่านี้ 472 00:25:49,897 --> 00:25:52,729 ผมเลือก always allow แล้ว Claude 473 00:25:52,729 --> 00:25:54,234 ก็เพิ่มงานใหม่ให้ 474 00:25:54,234 --> 00:25:58,039 ลองกลับไปที่แอปของเราเพื่อดูครับ งาน update 475 00:25:58,039 --> 00:26:01,049 claude code course in agentic labs 476 00:26:01,049 --> 00:26:04,943 ตอนนี้ยังไม่ถูก assign ลองบอกว่า โปรด assign 477 00:26:04,943 --> 00:26:08,748 งานนี้ให้ฉัน ส่งเลย เสร็จเรียบร้อย การ์ดถูก 478 00:26:08,748 --> 00:26:12,820 assign ให้คุณแล้ว ลองดูว่าจริงไหม คลิกการ์ดนี้ 479 00:26:12,820 --> 00:26:15,121 แล้วมันถูก assign ให้ Leon 480 00:26:15,121 --> 00:26:17,864 นี่คือสิ่งที่สำคัญมากครับ agent 481 00:26:17,864 --> 00:26:20,343 ตัวนี้ผ่านการเชื่อมต่อ OAuth 482 00:26:20,343 --> 00:26:24,414 นี้รู้ว่าคุณเป็นใคร มันทำหน้าที่แทนคุณในแอปนี้ 483 00:26:24,414 --> 00:26:27,511 ดังนั้นการเปลี่ยนแปลงใด ๆ ที่ agent 484 00:26:27,511 --> 00:26:30,609 ทำในแอปจะแสดงภายใต้ชื่อผู้ใช้ของคุณ 485 00:26:30,609 --> 00:26:34,061 โปรดเปลี่ยนสถานะงานนี้เป็น doing ส่งเลย 486 00:26:34,061 --> 00:26:38,132 เราน่าจะเห็นการ์ดย้ายไปคอลัมน์ doing แล้วเสร็จ 487 00:26:38,132 --> 00:26:42,203 เจ๋งมากครับ โปรดแสดงรายการงานทั้งหมดที่ assign 488 00:26:42,203 --> 00:26:45,655 ให้ฉัน ถ้าเรามีสมาชิกในองค์กรมากกว่านี้ 489 00:26:45,655 --> 00:26:49,195 เราก็จะ assign งานให้สมาชิกคนอื่นได้ด้วย 490 00:26:49,195 --> 00:26:53,178 เอาล่ะ มีงานเดียวที่ assign ให้ฉัน คือ update 491 00:26:53,178 --> 00:26:56,187 claude code course in Agentic Labs 492 00:26:56,187 --> 00:26:59,816 หวังว่าวิดีโอนี้จะมีประโยชน์นะครับ ถ้าใช่ 493 00:26:59,816 --> 00:27:03,798 กดไลก์และสมัครเป็นสมาชิกช่องเพื่อรับบทช่วยสอน 494 00:27:03,798 --> 00:27:05,922 Agentic Coding เพิ่มเติม 495 00:27:05,922 --> 00:27:09,020 และถ้าอยากยกระดับทักษะ coding agent 496 00:27:09,020 --> 00:27:12,826 ของคุณให้ไปอีกขั้น ลองเข้าร่วม Agentic Labs 497 00:27:12,826 --> 00:27:16,543 ซึ่งเป็นคอมมูนิตี้ของผม ที่มีคอร์ส Agentic 498 00:27:16,543 --> 00:27:18,933 Coding Masterclass สุดพิเศษ 499 00:27:18,933 --> 00:27:23,004 ครอบคลุมทุกอย่างที่ต้องรู้เกี่ยวกับการทำงานกับ 500 00:27:23,004 --> 00:27:24,154 coding agents 501 00:27:24,154 --> 00:27:28,137 เรายังมีโปรเจกต์ขนาดใหญ่ที่สร้างแอป SaaS จริง 502 00:27:28,137 --> 00:27:31,854 ๆ รวมถึงการเชื่อมต่อการชำระเงิน ระบบผู้ใช้ 503 00:27:31,854 --> 00:27:34,598 ทุกอย่าง และเราสร้างมันจากศูนย์ 504 00:27:34,598 --> 00:27:37,873 ให้คุณทำตามทีละขั้นตอนได้ และ YouTube 505 00:27:37,873 --> 00:27:40,616 คิดว่าคุณจะชอบวิดีโออีกตัวหนึ่ง 506 00:27:40,616 --> 00:27:43,360 แล้วเจอกันวิดีโอหน้าครับ บายบาย