Plain + Claude: สกิลซัพพอร์ตลูกค้าด้วย AI ที่ไม่เหมาะกับร้านที่ขายผ่าน LINE

งานซัพพอร์ตลูกค้าที่กินเวลาทีมมากที่สุด ส่วนใหญ่ไม่ได้อยู่ที่การตอบ แต่อยู่ที่การไล่อ่านย้อนหลัง ลูกค้าคนนี้เคยถามอะไรมาแล้ว เรื่องนี้ใครรับไว้ ติดอยู่ที่ขั้นไหน พอคำถามเดิมวนมาเป็นรอบที่สิบ ก็ยังไม่มีใครว่างเขียนบทความ help center ให้ลูกค้าอ่านเอง
บทความนี้ผมรีวิวสกิลของ Claude Code 2 ตัวที่ใช้กับ Plain ระบบซัพพอร์ตลูกค้าสำหรับธุรกิจ B2B ตัวแรกคือ plain-support สกิลทางการจากทีม Plain ให้ Claude อ่านลูกค้า อ่านบทสนทนา เขียนโน้ตภายใน และร่างบทความ help center ได้ ตัวที่สองคือ plain-build ซึ่งผมสรุปขึ้นเองจาก repo สาธารณะ 23 ตัวของ team-plain ไว้ใช้ตอนเขียนโค้ดเชื่อมระบบ ขอบอกไว้ก่อนว่า ผมติดตั้งและอ่านไฟล์ทุกไฟล์จริง รันสคริปต์ในเครื่องจริง แต่ยังไม่ได้ต่อเข้า workspace ของ Plain เพราะไม่อยากเอาข้อมูลลูกค้าจริงมาลงบทความ ภาพหน้าจอทุกภาพจึงมาจากหน้าเว็บสาธารณะกับผลลัพธ์จริงในเทอร์มินัล ส่วนไหนที่ยังไม่ได้ลอง ผมจะบอกไว้ตรง ๆ
$ npx skills add https://github.com/team-plain/skills --skill plain-supportRun `npx skills use "https://github.com/team-plain/skills" --skill "plain-support"` and follow the generated skill instructions now. Read its complete output, redirecting it to a temporary file first if necessary. Resolve relative paths from the supporting-files directory it provides.ให้ Claude Code อ่านและจัดการงานซัพพอร์ตใน Plain ผ่าน GraphQL API ด้วยสคริปต์ bash ตัวเดียว
- อ่านข้อมูลลูกค้า บริษัท tenant ป้ายกำกับ tier และ SLA ได้ แต่แก้ข้อมูลพวกนี้ไม่ได้
- ค้นและอ่าน thread พร้อม timeline ทั้งหมด แล้วเขียนโน้ตภายในที่ลูกค้ามองไม่เห็นได้
- สร้าง แก้ และเผยแพร่บทความ help center ได้ ค่าเริ่มต้นเป็นฉบับร่าง
- สิทธิ์ทั้งหมดขึ้นกับ API key ที่เราสร้างให้ ต้องมี
curlกับjqในเครื่อง
ตัวเลขจาก skills.sh และ GitHub ณ 26 ก.ย. 2569
วิธีใช้ติดตั้ง ตั้งค่าคีย์ และสั่งงานแรก
ต้องเตรียมอะไรบ้าง
- workspace ของ Plain สกิลนี้ไม่มีประโยชน์ถ้าทีมไม่ได้ใช้ Plain อยู่แล้ว หน้าราคา ณ 26 ก.ย. 2569 เริ่มที่แพ็กเกจ Foundation $35 ต่อเดือนสำหรับ 1 ที่นั่ง (ที่นั่งเพิ่มคนละ $35) และมีทดลองใช้ฟรี 7 วัน
- API key จาก machine user สร้างได้ในหน้า Settings ของ workspace
- curl และ jq curl มากับ macOS อยู่แล้ว ส่วน jq ต้องลงเพิ่ม
- Claude Code หรือเอเจนต์อื่นที่รองรับมาตรฐาน Agent Skills เช่น Codex, Cursor, Amp, OpenCode ตามที่เอกสารของ Plain ระบุ
เรื่อง jq ผมเจอกับตัวเอง เครื่องผมไม่มี jq พอลองเรียกสคริปต์ มันหยุดตั้งแต่บรรทัดตรวจเครื่องมือ ยังไม่ทันยิงอะไรออกไปนอกเครื่องเลย ข้อนี้ถือว่าดี เพราะสคริปต์เช็กของครบก่อนทุกครั้ง ผมตั้งใจลบตัวแปร PLAIN_API_KEY ออกตอนรันด้วย เพื่อให้แน่ใจว่าไม่มีการเรียก API จริง
brew install jq # macOS
sudo apt-get install jq # Ubuntu / Debian
ติดตั้ง plain-support
คำสั่งที่ skills.sh แสดงไว้คือแบบนี้
npx skills add https://github.com/team-plain/skills --skill plain-support
จุดที่อาจทำให้งง: เอกสารของ Plain กับ README เขียนคำสั่งเป็น npx skills add team-plain/plain-support ผมเช็กกับ GitHub API แล้ว ชื่อ repo เดิม team-plain/plain-support ถูกย้ายมาเป็น team-plain/skills ลิงก์เก่าจึงยัง redirect ไปถูกที่ ใช้คำสั่งไหนก็น่าจะได้ของชุดเดียวกัน ถ้าอยากเลือกเอเจนต์เองให้เติม -a claude-code ต่อท้าย
อีกทางคือ clone repo มาแล้วเปิด Claude Code ด้วย claude --plugin-dir เพราะ repo นี้ทำเป็นปลั๊กอินของ Claude Code และ Cursor ไว้ด้วย (มีโฟลเดอร์ .claude-plugin กับ .cursor-plugin)
สร้าง API key แบบจำกัดสิทธิ์
ใน Plain ให้ไปที่ Settings → Machine Users แล้วกด + Add Machine User ตั้งชื่อให้รู้ว่าใช้ทำอะไร เช่น "Claude Code อ่านอย่างเดียว" จากนั้นกด Add API key แล้วเลือกสิทธิ์ คีย์จะโชว์ให้เห็นครั้งเดียว ต้องคัดลอกเก็บไว้ทันที
ข้อนี้สำคัญที่สุดของทั้งบทความ เอกสารของ Plain เขียนไว้ชัดว่าเอเจนต์ทำได้เท่าที่คีย์อนุญาต ผมแนะนำให้เริ่มจากคีย์อ่านอย่างเดียวก่อน ชุดสิทธิ์ที่ผมจดไว้ใน plain-build สำหรับเครื่องมือซัพพอร์ตแบบอ่านอย่างเดียวคือ
customer:read,customer:search,thread:read,thread:search,timeline:read,company:read,threadField:read,threadFieldSchema:read
ใช้ไปสักพักแล้วค่อยเพิ่มสิทธิ์เขียนโน้ตหรือสิทธิ์ help center ถ้าคีย์ไม่มีสิทธิ์ API จะตอบกลับว่าขาดสิทธิ์ตัวไหน ตามที่เอกสาร Authentication ของ Plain ระบุไว้
ได้คีย์แล้วให้ตั้งเป็นตัวแปรสภาพแวดล้อม เอกสารแนะนำให้ใส่ในไฟล์ ~/.zshrc หรือ ~/.bashrc อย่าเอาไปวางในโฟลเดอร์โปรเจกต์ที่ push ขึ้น git
export PLAIN_API_KEY="plainApiKey_..."
# ถ้า workspace ไม่ได้อยู่ region UK ให้ตั้ง PLAIN_API_URL เพิ่ม
เช็กว่าสคริปต์พร้อม
ตัวสกิลเป็นสคริปต์ bash ไฟล์เดียวชื่อ plain-api.sh ยาว 1,097 บรรทัด ทุกคำสั่งเป็นการยิง GraphQL ด้วย curl เรียก --help ได้โดยไม่ต้องมีคีย์ และไม่มีการต่อเน็ต
ถ้าลง jq และตั้งคีย์แล้ว ขั้นทดสอบที่ปลอดภัยที่สุดคือ scripts/plain-api.sh workspace ซึ่งแค่อ่านข้อมูล workspace ผมยังไม่ได้รันคำสั่งนี้ เพราะไม่ได้ต่อ workspace จริงตามที่บอกไว้ตอนต้น
สั่งงานด้วยภาษาปกติ
พอติดตั้งเสร็จ เราไม่ต้องจำคำสั่งเหล่านี้เอง แค่พิมพ์บอก Claude Code แล้วมันจะเลือกคำสั่งให้ ตัวอย่างข้างล่างผมจับคู่ให้ดูว่าข้างหลังจะเรียกอะไร (อิงจาก SKILL.md ไม่ใช่ผลจากการรันจริง)
- "ลูกค้าอีเมลนี้มีเรื่องค้างอะไรบ้าง" →
customer get-by-emailต่อด้วยthread list --customer ... --status all - "สรุป thread นี้ให้หน่อย ลูกค้าติดตรงไหน เราตอบอะไรไปแล้ว" →
thread timeline th_... --first 50แล้วค่อยสรุปจาก EmailEntry, ChatEntry, SlackMessageEntry - "เขียนโน้ตภายในสรุปสิ่งที่ตรวจเจอ" →
thread noteโน้ตนี้ทีมเห็น ลูกค้าไม่เห็น - "ผูก issue บน GitHub เข้ากับ thread นี้" →
thread link addใช้ได้เมื่อ workspace ต่อ GitHub ไว้แล้ว - "ร่างบทความ help center จากคำถามที่ลูกค้าถามบ่อยเรื่องรีเซ็ตรหัสผ่าน" →
helpcenter article upsertถ้าไม่ใส่--status PUBLISHEDจะเป็นฉบับร่าง - "ลูกค้า tier Enterprise มีใครบ้าง SLA กี่ชั่วโมง" →
tier listและtier get
งานที่ผมคิดว่าคุ้มที่สุดคือข้อสุดท้ายในรายการ workflow ของสกิล ให้ Claude อ่าน thread ที่ถามเรื่องเดียวกันหลาย ๆ อัน แล้วร่างบทความ help center เป็น DRAFT ให้คนในทีมตรวจก่อนกดเผยแพร่เอง งานแบบนี้คนไม่ค่อยมีเวลาทำ แต่ช่วยลดคำถามซ้ำได้จริง
plain-build: สกิลที่ผมทำเองสำหรับงานเขียนโค้ด
plain-support ใช้ทำงานซัพพอร์ตรายวัน แต่ถ้าจะเขียนระบบต่อกับ Plain เช่น การ์ดข้อมูลลูกค้าในหน้าจอเจ้าหน้าที่ webhook หรือพอร์ทัลซัพพอร์ตในแอปของเราเอง สกิลนี้ไม่ได้ช่วยเรื่องนั้น ผมเลย clone repo สาธารณะทั้ง 23 ตัวของ team-plain มาไว้ที่ ~/plain-repos แล้วให้ Claude อ่านและสรุปเป็นสกิลชื่อ plain-build
ตัว SKILL.md ของ plain-build ยาวแค่ 47 บรรทัด ทำหน้าที่เป็นตัวชี้ทาง ถ้างานเป็นเรื่อง webhook ให้ไปอ่าน references/webhooks.md ถ้าเป็น customer card ให้ไปอ่าน customer-cards.md มีไฟล์อ้างอิงทั้งหมด 9 ไฟล์ และมี repo-map.md บอกว่าตัวอย่างเรื่องไหนอยู่ repo ไหน กฎข้อแรกคือ ถ้ารายละเอียดสำคัญ ให้เปิดไฟล์จริงใน ~/plain-repos อ่าน ห้ามเดา
หัวข้อที่ plain-build ครอบคลุมมีดังนี้
- GraphQL API endpoint การใช้ API key ชุดสิทธิ์ตามงาน และรูปแบบ error
- SDK แพ็กเกจใหม่
@team-plain/graphql,@team-plain/webhooks,@team-plain/ui-components(ต้องใช้ Node 24 ขึ้นไป) และบอกว่า@team-plain/typescript-sdkเลิกพัฒนาแล้ว แม้ repo ตัวอย่างหลายตัวยังใช้อยู่ - Webhooks การตรวจลายเซ็น HMAC และกฎการรับ event
- Custom agent สำหรับ Ask Sidekick ให้ AI ของเราเองตอบในหน้าต่างผู้ช่วยของ Plain
- Customer cards การ์ดข้อมูลลูกค้าด้านข้างหน้าจอ thread เช่น แพ็กเกจที่ใช้ หรือบิลล่าสุด
- Headless portal และ chat ทำหน้าซัพพอร์ตในแอปเราเอง และการเซ็น JWT ให้แชตวิดเจ็ต
- CLI และ MCP CLI ของ Plain ใช้ index หน้าเว็บเป็นคลังความรู้ ส่วน MCP ของ Plain ล็อกอินด้วย OAuth ไม่ใช้ API key
plain-build ไม่ได้อยู่บน skills.sh และผมยังไม่ได้เผยแพร่ ใครอยากได้แบบเดียวกัน ทำเองได้ไม่ยาก clone repo ของ team-plain ที่เกี่ยวกับงานของเรา แล้วสั่ง Claude Code ให้อ่านทุก README กับโค้ดตัวอย่าง แล้วสรุปเป็นสกิลที่มีไฟล์อ้างอิงแยกตามหัวข้อ จุดสำคัญคือให้มันจดไว้ว่าต้องกลับไปอ่านไฟล์จริงทุกครั้ง ไม่ใช่จำจากสรุป
รีวิวจุดเด่น ข้อจำกัด และเหมาะกับใคร
Plain คืออะไร
Plain เรียกตัวเองว่าแพลตฟอร์มซัพพอร์ตสำหรับทีม B2B บทสนทนาจากอีเมล Slack Microsoft Teams แชต Discord และฟอร์มติดต่อ จะรวมเป็น thread ในคิวเดียว ให้ทั้งคนในทีมและเอเจนต์ AI ทำงานจากคิวเดียวกัน จุดขายหลักคือ API-first ทุกอย่างที่ทำได้ในแอป ทำผ่าน GraphQL API ได้หมด สกิลทั้งสองตัวในบทความนี้จึงทำงานได้โดยไม่ต้องเปิดหน้าเว็บเลย
จุดเด่น
- คุมสิทธิ์ที่ต้นทาง เราไม่ต้องหวังให้ AI ทำตัวดี เพราะคีย์ที่ไม่มีสิทธิ์เขียนก็เขียนไม่ได้ ถือเป็นแนวคิดที่ถูก
- เบามาก มีแค่ bash, curl, jq ไม่ต้องลง Node หรือ Python ไม่มี server ต้องรันค้าง ใครอ่าน bash ออกก็เปิดดูได้ทุกบรรทัดว่ายิง query อะไร
- เขียนได้แบบจำกัด ข้อมูลลูกค้าอ่านอย่างเดียว สิ่งที่เขียนได้คือโน้ตภายใน ลิงก์ issue และบทความ help center ซึ่งลูกค้าไม่เห็นจนกว่าจะเผยแพร่ ความเสี่ยงที่ AI จะส่งข้อความผิด ๆ ถึงลูกค้าจึงต่ำ
- เอกสารครบ ไฟล์
ENTITIES.mdอธิบายชนิดของ timeline entry ไว้ 24 แบบ Claude จึงแยกออกว่าอันไหนเป็นข้อความลูกค้า อันไหนเป็นการเปลี่ยนสถานะ - plain-build ช่วยเลี่ยงหลุมที่เจอบ่อย เช่น mutation ของ Plain ไม่ throw error แต่ส่ง error กลับมาเป็นข้อมูล ต้องเช็กทุกครั้ง ต้องตรวจลายเซ็น webhook จาก raw body ไม่ใช่ JSON ที่ parse แล้ว และถ้าทำ custom agent แล้วกลับเงื่อนไข OUTBOUND/INBOUND ผิด เอเจนต์จะตอบตัวเองวนไม่รู้จบ
ข้อจำกัดที่ควรรู้ก่อนใช้
- ตอบลูกค้าไม่ได้ plain-support ไม่มีคำสั่งส่งข้อความหาลูกค้า ถ้าอยากให้ AI ร่างคำตอบ ต้องใช้ MCP ของ Plain ซึ่งมีเครื่องมือ
addGeneratedReplyสร้างคำตอบเป็นร่างให้คนตรวจก่อนส่ง - เวอร์ชันในเครื่องอาจเก่า ของผมเป็นเวอร์ชัน 2.2 ส่วนบน GitHub ตอนนี้เป็น 2.4 เพิ่มคำสั่ง broadcast สำหรับร่างข้อความประกาศถึงหลายช่อง Slack พร้อมกัน ซึ่งเขียนไว้ชัดว่าร่างได้อย่างเดียว ไม่ตั้งเวลาและไม่ส่ง ควรอัปเดตสกิลเป็นระยะ
- ข้อมูลลูกค้าผ่านโมเดล AI ทุกครั้งที่ให้ Claude สรุป thread เนื้อหาบทสนทนาจะถูกส่งไปให้โมเดลประมวลผล ธุรกิจที่ต้องทำตาม PDPA หรือมีสัญญาเก็บความลับกับลูกค้าต้องดูเงื่อนไขให้ดีก่อน
- ค่าเริ่มต้นเป็น region UK endpoint ปกติคือ
core-api.uk.plain.comถ้า workspace อยู่ region อื่นต้องตั้งPLAIN_API_URL - ลบลิงก์ issue ผ่าน API key ไม่ได้ SKILL.md บอกไว้เองว่าต้องไปลบในหน้าเว็บ
- plain-build ไม่ใช่ของทางการ ผมสรุปจาก repo ณ วันที่ clone มา ถ้า Plain เปลี่ยน API สกิลจะไม่รู้เอง ต้อง pull repo ใหม่แล้วสรุปใหม่ และสกิลอ้าง path
~/plain-reposในเครื่องผม ถ้าเอาไปใช้เครื่องอื่นต้องแก้ path - ตัวอย่าง custom agent ต้องระวัง repo
example-custom-agentรันclaude -pแบบ--permission-mode autoโดยไม่มี sandbox README ของเขาเองเตือนว่าใครพิมพ์ใน workspace ก็เท่ากับได้ shell บนเครื่องนั้น ถ้าจะใช้งานจริงต้องรันใน sandbox
Plain เหมาะกับธุรกิจไทยแบบไหน
ผมตอบตรง ๆ ว่า Plain ไม่ได้ทำมาสำหรับร้านค้าออนไลน์หรือธุรกิจ B2C ที่คุยกับลูกค้าผ่าน LINE OA เป็นหลัก ช่องทางที่รองรับในเอกสารไม่มี LINE จะต่อเองก็ทำได้ผ่าน custom channel คือเขียน middleware รับ webhook จาก LINE แล้วสร้าง thread ใน Plain แต่เอกสาร Custom channels ระบุว่าลูกค้าใน Plain ต้องมีอีเมล ขณะที่ webhook ของ LINE OA ส่งมาแค่ userId ไม่มีอีเมล เราจะต้องหาทางผูกตัวตนเอง งานนี้ไม่เล็ก
กลุ่มที่ผมว่าเหมาะคือ
- บริษัทซอฟต์แวร์หรือ SaaS ไทยที่ขายให้องค์กร ลูกค้าติดต่อผ่านอีเมล Slack หรือ Microsoft Teams
- ทีมที่ดูแลลูกค้าต่างประเทศ ซึ่งคุ้นกับการคุยในช่อง Slack ร่วมกันอยู่แล้ว
- ทีมที่มีนักพัฒนาในบ้าน อยากเอาข้อมูลจากระบบตัวเองมาโชว์ใน customer card หรืออยากทำพอร์ทัลซัพพอร์ตในแอป ซึ่งเป็นงานที่ plain-build ช่วยได้
ถ้าลูกค้าส่วนใหญ่อยู่ใน LINE ผมแนะนำให้ใช้เครื่องมือที่ต่อ LINE OA ได้โดยตรง หรือ CRM ที่รองรับ LINE จะคุ้มกว่า
คำถามที่พบบ่อย
plain-support ใช้ฟรีไหม
ตัวสกิลฟรี (MIT) แต่ต้องมี workspace ของ Plain ซึ่งเสียเงิน ณ 26 ก.ย. 2569 แพ็กเกจเริ่มที่ $35 ต่อเดือน 1 ที่นั่ง แพ็กเกจ Horizon $299 ต่อเดือนได้ 3 ที่นั่ง และมีแพ็กเกจ Frontier ที่คุยราคากันเอง นอกจากนี้ก็มีค่าใช้ Claude Code ตามแพ็กเกจของเรา
ให้ Claude ตอบลูกค้าแทนเราได้ไหม
ผ่าน plain-support ไม่ได้ สกิลนี้เขียนได้แค่โน้ตภายใน ลิงก์ issue และบทความ help center ถ้าอยากให้ AI ช่วยตอบลูกค้า Plain มีเอเจนต์ของตัวเองชื่อ Ari และมี MCP ที่ร่างคำตอบให้คนตรวจก่อนส่ง ผมยังไม่ได้ลองทั้งสองอย่าง
ข้อมูลลูกค้าจะรั่วไปไหนไหม
สคริปต์คุยกับ API ของ Plain โดยตรงผ่าน curl แต่เนื้อหาที่ดึงมาจะเข้าไปอยู่ในบทสนทนากับ Claude เพื่อให้มันสรุปหรือวิเคราะห์ได้ ควรใช้คีย์ที่สิทธิ์น้อยที่สุดเท่าที่งานต้องใช้ และตกลงกับทีมก่อนว่าข้อมูลแบบไหนให้ AI อ่านได้
หา plain-build ได้ที่ไหน
ตอนนี้ยังอยู่แค่ในเครื่องผม ไม่ได้เผยแพร่ ส่วน repo ที่ใช้สรุปเป็นของสาธารณะที่ github.com/team-plain ทั้งหมด ใช้วิธีเดียวกับที่ผมเล่าในส่วนวิธีใช้ ทำเวอร์ชันของตัวเองได้
ต่อ LINE เข้า Plain ได้ไหม
ไม่มีช่องทางสำเร็จรูป ต้องเขียน middleware เองตามแนวทาง custom channel ของ Plain และต้องแก้เรื่องที่ลูกค้าใน Plain ต้องมีอีเมล ผมยังไม่ได้ลองทำ ถ้าธุรกิจของคุณพึ่ง LINE เป็นหลัก ผมคิดว่าไม่คุ้มที่จะย้ายมา Plain
เพิ่ม asset เข้า Business Suite: 3 ทาง ทีละขั้นจากหน้าจอจริง ให้สิทธิ์เอเจนซี่โดยไม่เสียความเป็นเจ้าของเพจ (2026)
Wispr Flow: พิมพ์ด้วยเสียงภาษาไทยปนอังกฤษ สั่ง AI ได้ทั้งวัน ตั้งค่า 6 ขั้น สำหรับ SME (2026)
Logo Design Skill: ให้ AI ออกแบบโลโก้แบบมืออาชีพ ลองจริง 5 เครื่องมือ (2026)
วัดผลแอดโปรโมทแอปยังไง: SDK, MMP และ iOS ATT ที่ต้องรู้ก่อนยิง App Install (2026)