วิจัย
เปลี่ยนคำถามตลาดเป็นบรีฟ go-to-market
ถามตลาดด้วยคำถามที่แม่นยำ อ่านหน้าหมวดหมู่และราคาเบื้องหลังคำตอบ รวบรวมวิธีที่ผู้ซื้ออธิบายปัญหาบน X และบันทึกบรีฟ GTM พร้อมข้อความอ้างที่มีแหล่งและคำถามเปิด
คัดลอกพรอมป์ต์
แทนช่องในวงเล็บเหลี่ยมแล้ววางใน Claude Code, Codex หรือ AI ที่เข้าถึงเทอร์มินัล ระบบจะติดตั้งสกิล Felo ถามก่อนใช้เครดิต และรันเวิร์กโฟลว์
สร้างสรุปงานวิจัย go-to-market สำหรับ [ผลิตภัณฑ์] ที่จะเข้าสู่ [กลุ่มตลาดหรือ ICP] ใน [ภูมิภาค] เป็นภาษา[ภาษา] รูปแบบ: [self-serve / ขายนำ / พาร์ตเนอร์] การตัดสินใจที่รองรับ: [เปิดตัว / ราคา / วางตำแหน่งใหม่] ช่วงเวลา: [90 วันล่าสุด / 12 เดือนล่าสุด] สร้างสรุป Markdown ที่มี: 1. นิยามกลุ่มตลาด: พวกเขาเป็นใคร ใช้อะไรอยู่ และแหล่งข้อมูลว่าอย่างไรเรื่องขนาด — อ้างแหล่งหรือเขียน “ไม่มีข้อมูล” 2. ภาษาของผู้ซื้อ: พวกเขาอธิบายปัญหาอย่างไร พร้อมลิงก์และวันที่ 3. ทางเลือกอื่น: พวกเขาย้ายมาจากอะไร รวมถึงสเปรดชีตและการไม่ทำอะไรเลย 4. ข้อโต้แย้งและหลักฐานที่ผู้ซื้อต้องการ 5. คำถามเปิดที่แหล่งข้อมูลสาธารณะตอบไม่ได้ 6. รายการแหล่งอ้างอิงทั้งหมด กฎ: - ทุกข้อกล่าวอ้างเรื่องตลาดต้องมีลิงก์และวันที่ ห้ามประมาณขนาดตลาด การเติบโต หรืองบประมาณจากความรู้สึก - แยกแหล่งอิสระ หน้าผู้ขาย และการอนุมานของคุณ - ใช้ X สำหรับภาษาและข้อโต้แย้ง ไม่ใช่หลักฐานขนาดตลาด - แปลงช่วงเวลาและภูมิภาคเป็นค่าที่ชัดเจน - ก่อนใช้เครดิต ให้แสดงการเรียก API ที่จะทำและรอการอนุมัติจากฉัน - ห้ามเผยแพร่ ส่ง ตั้งเวลา หรือเขียนลง CRM - เขียนผลลัพธ์ลง ./gtm-brief.md และสรุปในแชท
สำเนายังรวมขั้นตอนติดตั้งและกฎความปลอดภัย
สิ่งที่คุณได้รับ
ตัวอย่างผลลัพธ์จากการรันหนึ่งครั้ง ไม่ใช่การสร้างสด
สรุป GTM — [กลุ่ม] ใน [ภูมิภาค]
นิยามกลุ่ม
ทีมปฏิบัติการขนาดเล็กที่จัดการตารางด้วยสเปรดชีต ขนาด: ไม่มีข้อมูลในแหล่งสาธารณะที่ตรวจ — อย่าใส่ตัวเลขในสรุปหากไม่มีแหล่ง
ภาษาของผู้ซื้อ
- “เรายังทำสิ่งนี้ในสเปรดชีต” — โพสต์ X, 2026-10-18
- “การตั้งค่าคือส่วนที่ยาก” — โพสต์ X, 2026-10-02
ติดป้ายว่าเป็นภาษา ไม่ใช่หลักฐานความแพร่หลาย
ทางเลือกที่ผู้ซื้อพูดถึง
สเปรดชีต ชุดซอฟต์แวร์ที่มีอยู่ และการไม่ทำอะไร แหล่ง: https://example.com/thread (2026-10-18)
ข้อโต้แย้งและหลักฐานที่ต้องการ
การตรวจสอบความปลอดภัยและเส้นทางย้ายระบบ ผู้ซื้อขอ reference ที่มีชื่อ ซึ่งเราไม่มีแบบสาธารณะ จึงยังเป็นคำถามเปิด
คำถามเปิด
- กลุ่มนี้มีงบประมาณเฉพาะอยู่แล้วเท่าใด?
- ข้อโต้แย้งเปลี่ยนตามขนาดบริษัทหรือไม่?
แหล่งข้อมูล
- https://example.com/category-page
- https://example.com/pricing-page
- https://example.com/thread
การเรียกที่แน่นอน
สำหรับนักพัฒนา: เวิร์กโฟลว์เดียวกันในรูปโค้ดตามลำดับการทำงาน
แสดงการเรียก API จริง
ตั้งกรอบคำถามตลาด
Chat คืนคำตอบและหน้าที่ใช้ เริ่มจากคำถามที่แคบพอ: ใครซื้อ ใช้อะไรวันนี้ ข้อโต้แย้งใดเกิดขึ้น เก็บรีซอร์สเป็นลิงก์เบาะแส คำตอบคือเบาะแส ลิงก์คือหลักฐานและปิดรายการแหล่ง
gtm.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type ChatData = { data: { answer: string; resources: { link: string; title: string; snippet: string }[]; }; }; const product = "scheduling tool"; // replace with your product const segment = "operations teams at 50-200 person companies"; const region = "DACH"; const market = await felo<ChatData>("/v2/chat", { query: `Who buys ${product} for ${segment} in ${region}, what do they use today, and what objections come up?`, }); const seedSources = market.data.resources.slice(0, 5);ตัวอย่างผลลัพธ์
{ "answer": "Buyers in this segment usually start from spreadsheets and …", "sources": [ { "link": "https://example.com/category-page", "title": "…", "snippet": "…" } ] }อ่านหน้าหมวดหมู่เอง
ดาวน์โหลดหน้าที่ตั้งกรอบตลาด: ภาพรวมหมวดหมู่ เปรียบเทียบ และราคา สกัดเป็น Markdown พร้อมโหมดอ่านและบันทึกวันที่ดึง เพราะคุณภาพการอ่านตลาดขึ้นกับหน้าเว็บเบื้องหลัง
gtm.ts type ExtractData = { data: { content: string } }; const marketPages = [ { url: "https://example.com/category", title: "Category overview" }, { url: "https://example.com/comparison", title: "Comparison page" }, { url: "https://example.com/pricing", title: "Pricing page" }, ]; const pages = await Promise.all( marketPages.map(async (page) => { const res = await felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, with_cache: true, }); const checkedAt = new Date().toISOString().slice(0, 10); return { ...page, checkedAt, content: res.data.content }; }), );ตัวอย่างผลลัพธ์
{ "url": "https://example.com/category", "checkedAt": "2026-10-30", "content": "# Category overview\n\nExtracted page text…" }รวบรวมวิธีที่ผู้ซื้ออธิบายปัญหา
ค้นคำที่ผู้ซื้อใช้เมื่อเจอปัญหาบน X ไม่ใช่ชื่อผลิตภัณฑ์ เก็บบัญชีและวันที่ บรีฟใช้โพสต์เพื่อภาษาและข้อโต้แย้ง ไม่ใช่ขนาดตลาดหรือความถี่
gtm.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number }; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const language = await felo<XData>("/v2/x/tweet/search", { query: `(spreadsheet OR "scheduling tool") (alternative OR "looking for")`, limit: 25, since_time: since, }); const quotes = language.data.tweets.slice(0, 5);ตัวอย่างผลลัพธ์
{ "data": { "tweets": [ { "content": "we are still doing this in a spreadsheet", "author": { "username": "example_ops" }, "created_at": "2026-10-18T11:05:00Z", "metrics": { "retweet_count": 1, "favorite_count": 18 } } ] } }เขียนบรีฟรอบการตัดสินใจ
รวมนิยามกลุ่ม ภาษาผู้ซื้อ ทางเลือก ข้อโต้แย้ง และคำถามเปิดใน Markdown เดียว ทุกข้อความอ้างเก็บแหล่งและวันที่ ขนาดตลาดปรากฏเฉพาะมีแหล่ง และสิ่งที่แหล่งสาธารณะตอบไม่ได้ไปอยู่ในคำถามเปิดแทนการอนุมาน
gtm.ts const today = new Date().toISOString().slice(0, 10); const sourceLine = (title: string, url: string, date: string) => `- ${title}: ${url} (checked ${date})`; const brief = [ `# GTM brief — ${segment} in ${region}`, "", "## Segment definition", "See the category page for how the segment is described. Market size: Not available from public sources reviewed.", "", "## Buyer language", ...quotes.map((post) => `- @${post.author.username}, ${post.created_at.slice(0, 10)}: ${post.content}`), "", "## Alternatives buyers mention", "Spreadsheets, an incumbent suite, and doing nothing. Treated as language until a source ranks them.", "", "## Objections and proof required", "Migration path and a named reference. Marked open: whether the objection changes by company size.", "", "## Open questions", "- How much of the segment already has a dedicated budget line?", "- Which objection blocks a pilot most often?", "", "## Sources", ...pages.map((page) => sourceLine(page.title, page.url, page.checkedAt)), ...seedSources.map((source) => `- ${source.title}: ${source.link}`), ].join("\n"); console.log(brief);ตัวอย่างผลลัพธ์
# GTM brief — operations teams at 50-200 person companies in DACH
เก็บหลักฐานสำหรับตลาดถัดไป
สร้างหนึ่ง LiveDoc ต่อกลุ่มและภูมิภาค เพิ่มหน้าที่ดาวน์โหลดเป็นรีซอร์ส URL และบรีฟเป็นเอกสาร ตลาดถัดไปเริ่มจากแหล่งเดิมโดยไม่ดาวน์โหลดหมวดหมู่ซ้ำ และการเพิ่ม URL ซ้ำถูกลบซ้ำ
gtm.ts type LiveDocData = { data: { short_id: string } }; const briefDoc = await felo<LiveDocData>("/v2/livedocs", { name: `GTM: ${segment} — ${region}`, description: `Market evidence checked ${today}`, }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/urls`, { urls: pages.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/doc`, { title: `GTM brief ${today}`, content: brief, }); console.log(briefDoc.data.short_id); // reuse for the next regionตัวอย่างผลลัพธ์
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
รวมอะไรบ้าง
- การอ่านตลาดพร้อมแหล่งจาก Chat API และหน้าเว็บเบื้องหลัง
- หน้าหมวดหมู่ เปรียบเทียบ และราคาเป็น Markdown
- ภาษาและข้อโต้แย้งของผู้ซื้อจาก X พร้อมบัญชีและวันที่
- บรีฟที่ตั้งรอบการตัดสินใจเปิดตัว ไม่ใช่หัวข้อ
- LiveDoc เพื่อใช้หลักฐานซ้ำในภูมิภาคหรือการเปิดตัวถัดไป
สิ่งที่ไม่ทำ
- เฉพาะแหล่งสาธารณะ ไม่มีรายงานเสียเงิน แพเนล หรือสัมภาษณ์ลูกค้า
- ไม่ประมาณขนาดหรือการเติบโตของตลาด — หากไม่มีข้อมูลเขียน “ไม่มีข้อมูล”
- โพสต์ X คือภาษาและสัญญาณ ไม่ใช่ตัวอย่างผู้ซื้อที่เป็นตัวแทน
- ไม่เลือกกลุ่มหรือราคาให้คุณ
- ไม่เผยแพร่บรีฟหรือเขียนลง CRM
คำถาม
ต้องมีรายงานตลาดเสียเงินไหม?
ไม่ต้อง เวิร์กโฟลว์อ่านแหล่งสาธารณะและทำเครื่องหมายช่องว่าง หากมีรายงานแล้ว เพิ่มเป็นเอกสารใน LiveDoc และอ้างเช่นแหล่งอื่น
วิจัยตลาดภาษาอื่นได้ไหม?
ได้ ตั้งภูมิภาคและภาษา คำอ้างคงภาษาเดิมพร้อมคำแปลข้าง ๆ เพื่อให้ผู้ตรวจท้องถิ่นตรวจถ้อยคำ
ได้ขนาดตลาดไหม?
เฉพาะเมื่อแหล่งระบุ พร้อมลิงก์และวันที่ หากไม่มี บรีฟเขียน “ไม่มีข้อมูล” แทนการกุตัวเลขหรืออนุมานจากโพสต์เดียว
คุยกับลูกค้าได้ไหม?
ไม่ได้ อ่านเฉพาะแหล่งสาธารณะ เพิ่มบันทึกสัมภาษณ์เป็นเอกสารและระบุว่าภายใน บรีฟไม่นำบันทึกส่วนตัวมาเป็นหลักฐานสาธารณะ
ต่างจากบรีฟวิจัยอย่างไร?
บรีฟวิจัยตอบคำถามหนึ่งข้อ เวิร์กโฟลว์นี้จัดหลักฐานรอบการตัดสินใจ go-to-market — กลุ่ม ภาษาผู้ซื้อ ทางเลือก ข้อโต้แย้ง และหลักฐานที่ผู้ซื้อขอ — เพื่อป้อนแผนเปิดตัว
บรีฟหนึ่งชุดมีค่าใช้จ่ายเท่าไร?
ทุกการเรียกแชต การสกัด และการค้น X ใช้เครดิตตามการใช้งาน อัตราปัจจุบันที่หน้าค่าบริการ พรอมป์ต์ขออนุมัติก่อนใช้จ่าย
เวิร์กโฟลว์ที่เกี่ยวข้อง
เปลี่ยนคำถามหนึ่งข้อเป็นบรีฟวิจัยที่มีแหล่งอ้างอิง
ถามเว็บ บันทึกหน้าเว็บที่อยู่เบื้องหลังคำตอบเป็น Markdown เพิ่มสิ่งที่ผู้ปฏิบัติพูดบน X และเก็บหลักฐานใน LiveDoc ที่ค้นซ้ำได้
เปิดเวิร์กโฟลว์วิจัยสร้างการวิเคราะห์คู่แข่งที่ทีมขายใช้ได้จริง
รวมหน้าของคู่แข่ง ข้อมูลรอบข้าง และสิ่งที่ผู้ซื้อพูดบน X แล้วประกอบการวิเคราะห์ที่ทุกข้อความอ้างมีแหล่ง วันที่ และสถานะ
เปิดเวิร์กโฟลว์สำนักงานเปลี่ยนหน้างานวิจัยเป็นงานนำเสนอ
สกัดหน้า เก็บเป็นบริบท LiveDoc ให้ PPT Task API สร้างเด็ค และถามจนได้ลิงก์ที่เสร็จ
เปิดเวิร์กโฟลว์ปรับให้เป็นของคุณ
สูตรเดิม ปรับตามวิธีที่คุณส่งมอบจริง
รันตามภูมิภาค
คงโครงสร้างส่วนและเปลี่ยนเฉพาะภูมิภาคและภาษา หนึ่ง LiveDoc ต่อภูมิภาคและคำถามเดิม เพื่อให้บรีฟเปรียบเทียบได้
เพิ่มบันทึกสัมภาษณ์
วางบันทึกการโทรลูกค้าเป็นเอกสารและระบุว่าภายใน บรีฟอ้างข้างหลักฐานสาธารณะได้ แต่ไม่นำบันทึกส่วนตัวมาเป็นแหล่งสาธารณะ
ป้อนเด็คเปิดตัว
ส่งส่วนข้อโต้แย้งและหลักฐานให้เวิร์กโฟลว์เด็คพร้อมรายการแหล่ง บรีฟยังเป็นชั้นหลักฐาน เด็คคือการนำเสนอ ไม่ใช่แหล่งความจริงที่สอง
ไปต่อ
หน้าเอกสารอ้างอิงเบื้องหลังสูตรนี้และก้าวต่อไป