คัดลอกหน้า
ทุกหน้าที่เขียนด้วยมือบนเว็บนี้มีฝาแฝดเป็น Markdown ล้วน คุณคัดลอกหน้าที่กำลังอ่านได้ด้วยคลิกเดียว ดึงตาม URL จากสคริปต์ก็ได้ หรือจะส่งสัญญาของทุกเส้นเข้าเครื่องมือทดสอบ API ก็ได้ — ทั้งหมดนี้ไม่ต้องใช้กุญแจ
ปุ่มคัดลอกหน้า
หัวข้อที่มีชื่อว่า “ปุ่มคัดลอกหน้า”ด้านบนของทุกคู่มือ ข้าง ๆ เส้นทางนำทาง จะมีปุ่ม คัดลอกหน้า กดแล้วมันจะไปดึง Markdown ของหน้านั้นมาใส่คลิปบอร์ดให้ และเปลี่ยนข้อความเป็น คัดลอกแล้ว เมื่อสำเร็จ เอาไปวางในห้องแชทกับผู้ช่วย AI ในตั๋วงาน หรือในเอกสารออกแบบได้เลย
สิ่งที่ได้คือต้นฉบับของหน้านั้นเอง — หัวข้อ ตาราง ลิสต์ และตัวอย่างโค้ดครบ พร้อมชื่อหน้ากับสรุป 1 บรรทัดอยู่ด้านบน เครื่องหมายเชิงโครงสร้างบางอย่างจะติดมาตามที่เขียนไว้ (กลุ่มแท็บและกล่องข้อความยังคงมาร์กอัปเดิม) ซึ่งคนอ่านก็เข้าใจ และโมเดลอ่านได้ดีมาก
URL แบบ Markdown
หัวข้อที่มีชื่อว่า “URL แบบ Markdown”ปุ่มเป็นแค่ความสะดวก ตัว URL ต่างหากที่เป็นช่องทางจริง
เอา path ของหน้ามาเติม /md ข้างหน้า และ .md ข้างท้าย:
| หน้า | Markdown |
|---|---|
/get-started/quickstart/ |
/md/get-started/quickstart.md |
/before-you-go-live/go-live-checklist/ |
/md/before-you-go-live/go-live-checklist.md |
/ (หน้าแรก) |
/md/index.md |
/th/get-started/quickstart/ |
/md/th/get-started/quickstart.md |
หน้าภาษาไทยก็มีฝาแฝดเช่นกัน อยู่ที่ path เดียวกันใต้ th/
# หน้าเดียวcurl -s https://api.scanfood.co/md/get-started/pagination-and-sync.md
# ดึงหลายหน้ามาเก็บไว้ข้างโปรเจกต์for page in get-started/quickstart get-started/errors before-you-go-live/go-live-checklist; do curl -s --create-dirs -o "docs/$page.md" "https://api.scanfood.co/md/$page.md"doneconst page = async (slug) => (await fetch(`https://api.scanfood.co/md/${slug}.md`)).text();
const context = ( await Promise.all([ page('get-started/authentication'), page('get-started/rate-limits'), page('before-you-go-live/go-live-checklist'), ])).join('\n\n---\n\n');import requests
def page(slug: str) -> str: res = requests.get(f"https://api.scanfood.co/md/{slug}.md", timeout=30) res.raise_for_status() return res.text
context = "\n\n---\n\n".join( page(slug) for slug in ( "get-started/authentication", "get-started/rate-limits", "before-you-go-live/go-live-checklist", ))อยากได้ทั้งชุดรวดเดียวแทนที่จะไล่ทีละหน้า? นั่นคือหน้าที่ของ llms.txt
นำสเปกเข้าเครื่องมือ
หัวข้อที่มีชื่อว่า “นำสเปกเข้าเครื่องมือ”เอกสาร OpenAPI ที่อยู่เบื้องหลังส่วน API Reference เปิดสาธารณะและไม่ต้องใช้กุญแจ:
https://api.scanfood.co/ext/v1/openapi.jsonมันคือเอกสารฉบับเดียวกับที่ใช้สร้างหน้าอ้างอิง ⇒ นำเข้าครั้งเดียวได้ครบทุกเส้น ทุกพารามิเตอร์ และทุกช่องของคำตอบ ตรงตามที่ระบบทำงานจริง
Postman — Import → Link → วาง URL → Continue → Import
จะได้ collection ที่มีครบทั้ง 6 เส้น · จากนั้นเปิดแท็บ Authorization ของ collection
เลือก Bearer Token แล้วใส่กุญแจของคุณ — Postman จะแนบ Authorization: Bearer … ให้ทุกคำขอใน collection เอง
Insomnia — Import → URL → วาง URL → Scan → Import เรื่องกุญแจทำแบบเดียวกัน คือตั้ง Bearer token ที่กลุ่มคำขอ แล้วทุกคำขอจะรับสืบทอดไป
เครื่องมืออื่นที่อ่าน OpenAPI 3.1 ได้ — ตัวสร้าง client, API gateway, editor ที่เข้าใจ schema — ทั้งหมดต้องการแค่ URL นี้
วางต่อให้ผู้ช่วย AI
หัวข้อที่มีชื่อว่า “วางต่อให้ผู้ช่วย AI”พรอมป์ตที่ใช้ได้ผลดี:
ด้านล่างนี้คือเอกสารของ API ที่ผมกำลังจะเชื่อมต่อให้ตอบจากเอกสารนี้เท่านั้น ถ้าเอกสารไม่ได้บอก ให้บอกผมว่าไม่ได้บอก
<วาง Markdown ตรงนี้>
คำถาม: ผมจะดึงบิลทั้งหมดของร้านหนึ่งย้อนหลัง 1 เดือนโดยไม่ชนเพดานช่วงวัน 31 วัน ได้ยังไง2 นิสัยที่ช่วยประหยัดเวลา:
- ให้เฉพาะหน้าที่เกี่ยว ไม่ต้องให้ทั้งเว็บ — หน้ากุญแจ หน้าไล่หน้า และหน้าของเส้นที่กำลังทำ ดีกว่าเอาทั้งเว็บไปให้ · บริบทที่เล็กกว่าให้คำตอบที่คมกว่า
- ถ้าเรื่องเกี่ยวกับชื่อช่องข้อมูล ให้แนบสเปกไปด้วย — คู่มืออธิบายพฤติกรรม
ส่วน
openapi.jsonเป็นตัวตัดสินว่าคำตอบมีช่องอะไรบ้างจริง ๆ · ผู้ช่วยที่ได้แต่ข้อความบรรยายจะแต่งชื่อช่องขึ้นมาเองอย่างมั่นใจ