วิจัย
สร้างการวิเคราะห์คู่แข่งที่ทีมขายใช้ได้จริง
รวมหน้าของคู่แข่ง ข้อมูลรอบข้าง และสิ่งที่ผู้ซื้อพูดบน X แล้วประกอบการวิเคราะห์ที่ทุกข้อความอ้างมีแหล่ง วันที่ และสถานะ
คัดลอกพรอมป์ต์
แทนช่องในวงเล็บเหลี่ยมแล้ววางใน Claude Code, Codex หรือ AI ที่เข้าถึงเทอร์มินัล ระบบจะติดตั้งสกิล Felo ถามก่อนใช้เครดิต และรันเวิร์กโฟลว์
สร้างบทวิเคราะห์คู่แข่ง [ชื่อคู่แข่ง] สำหรับ [ผลิตภัณฑ์ของเรา] ขอบเขต: [กลุ่มตลาด], [ภูมิภาค], [ภาษา] ช่วงเวลา: [90 วันล่าสุด / 12 เดือนล่าสุด] การตัดสินใจที่รองรับ: [เปลี่ยนราคา / การวางตำแหน่งตอนเปิดตัว / การรับมือข้อโต้แย้ง] แหล่งเริ่มต้น: [โดเมนคู่แข่ง], [URL หน้าราคา], [URL changelog] สร้างบทวิเคราะห์ Markdown ที่มี: 1. พวกเขาวางตำแหน่งตัวเองอย่างไร ด้วยคำพูดของพวกเขาเอง 2. ตารางหลักฐาน: ข้อกล่าวอ้าง ชื่อแหล่ง URL วันที่ สถานะ (Verified / Vendor claim / Third-party / Signal / Inference / Not verified) 3. ราคา: สิ่งที่หน้าเว็บระบุ พร้อมลิงก์และวันที่ตรวจสอบ ห้ามคัดลอกราคาลงเนื้อหาโดยไม่มีหน้าเว็บและวันที่ 4. จุดที่ผู้ซื้อโต้แย้ง พร้อมบัญชี X และวันที่ ระบุว่าเป็นสัญญาณ 5. สิ่งที่เราควรทำต่อไป ระบุว่าเป็นข้อแนะนำ 6. รายการแหล่งอ้างอิงทั้งหมด กฎ: - อ้างคำวางตำแหน่งของพวกเขา ห้ามเรียบเรียงให้แข็งขึ้น - แยกข้อกล่าวอ้างของผู้ขาย การรายงานของบุคคลที่สาม และการอนุมานของคุณ ติดป้ายทุกแถว - ห้ามแต่งราคา ตัวเลข ชื่อลูกค้า หรือเกณฑ์เปรียบเทียบ ถ้าข้อมูลขาดให้เขียน “ไม่มีข้อมูล” - แปลงช่วงเวลาและภูมิภาคเป็นค่าที่ชัดเจน - ก่อนใช้เครดิต ให้แสดงการเรียก API ที่จะทำและรอการอนุมัติจากฉัน - ห้ามเผยแพร่ ส่ง ตั้งเวลา หรือเขียนลง CRM - เขียนผลลัพธ์ลง ./competitor-teardown.md และสรุปในแชท
สำเนายังรวมขั้นตอนติดตั้งและกฎความปลอดภัย
สิ่งที่คุณได้รับ
ตัวอย่างผลลัพธ์จากการรันหนึ่งครั้ง ไม่ใช่การสร้างสด
การวิเคราะห์คู่แข่ง — [คู่แข่ง] ตรวจสอบ 2026-10-30
วิธีการวางตำแหน่งตัวเอง
พาดหัวหน้าแรก: “แพลตฟอร์มสำหรับทีมสนับสนุนที่กำลังเติบโต” หน้าหมวดหมู่: “ทุกสิ่งที่ทีมสนับสนุนของคุณต้องการ” ทั้งคู่เป็นข้อกล่าวอ้างของผู้ขาย อ้างตามต้นฉบับ
ตารางหลักฐาน
| ข้อกล่าวอ้าง | แหล่ง | วันที่ | สถานะ |
|---|---|---|---|
| วางตำแหน่งเป็นแพลตฟอร์ม ไม่ใช่เครื่องมือเดี่ยว | https://example.com/competitor/home | 2026-10-30 | Verified |
| ออกการเปลี่ยนแปลงทุกสัปดาห์ | https://example.com/competitor/changelog | 2026-10-28 | Verified |
| ถูกกล่าวถึงในบทสรุปอิสระ | https://example.com/roundup | 2026-10-27 | Third-party |
| ผู้ซื้อบอกว่าออนบอร์ดช้า | โพสต์ X ที่อ้างด้านล่าง | 2026-10-14 | Signal |
| Enterprise เป็นกลุ่มที่ใหญ่ที่สุด | ไม่มีข้อมูล | — | Not verified |
ราคา
หน้าราคามีแผนแบบขั้นบันไดและแบบตามการใช้งาน ไม่กล่าวถึงอัตราซ้ำที่นี่ ตรวจสอบหน้าสดและวันที่: https://example.com/competitor/pricing (2026-10-30)
จุดที่ผู้ซื้อโต้แย้ง
@example_dev, 2026-10-14: “การติดตั้งใช้เวลานานกว่าที่เดโมบอก” เป็นโพสต์เดียวที่มีวันที่ เป็นข้อร้องเรียน ไม่ใช่การประมาณความถี่
ข้อแนะนำ
เน้นเวลาถึงผลลัพธ์แรกในหน้าเปรียบเทียบ นี่คือการอนุมานของเรา ไม่ใช่ข้อกล่าวอ้างของคู่แข่ง
แหล่งข้อมูล
- https://example.com/competitor/home
- https://example.com/competitor/pricing
- https://example.com/competitor/changelog
การเรียกที่แน่นอน
สำหรับนักพัฒนา: เวิร์กโฟลว์เดียวกันในรูปโค้ดตามลำดับการทำงาน
แสดงการเรียก API จริง
เริ่มจากฐานที่มีแหล่ง
Chat คืนคำตอบและหน้าที่ใช้ เป็นแผนที่ว่าคู่แข่งถูกพูดถึงที่ไหน ใช้คำตอบเป็นเบาะแส ไม่ใช่แหล่ง เก็บลิงก์ไว้เพราะให้แถวจากบุคคลที่สาม ตัวช่วยส่งคีย์ครั้งเดียวและโยนข้อผิดพลาดเมื่อไม่ใช่ 2xx
competitor.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 competitor = "Example Competitor"; const segment = "mid-market support teams"; const baseline = await felo<ChatData>("/v2/chat", { query: `How does ${competitor} position itself for ${segment}? Include pricing and recent launches.`, }); const seedSources = baseline.data.resources.slice(0, 5);ตัวอย่างผลลัพธ์
{ "answer": "The competitor positions itself as …", "sources": [ { "link": "https://example.com/competitor", "title": "…", "snippet": "…" } ] }ดาวน์โหลดหน้าที่พวกเขาควบคุม
สื่อบุคคลที่สามบอกคนคิดอะไร หน้าของพวกเขา บอกสิ่งที่พวกเขาอ้าง สกัดหน้าแรก ราคา และ changelog เป็น Markdown พร้อมโหมดอ่านและบันทึกวันที่ดึง หน้าค่าบริการที่ไม่มีวันคือกับดัก
competitor.ts type ExtractData = { data: { content: string } }; const ownedPages = [ { url: "https://example.com/competitor/home", title: "Homepage" }, { url: "https://example.com/competitor/pricing", title: "Pricing" }, { url: "https://example.com/competitor/changelog", title: "Changelog" }, ]; const fetched = await Promise.all( ownedPages.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/competitor/pricing", "checkedAt": "2026-10-30", "content": "# Pricing\n\nExtracted page text…" }ดูว่าผู้ซื้อพูดอะไรบน X
ค้นข้อโต้แย้งและวิธีเลี่ยงเกี่ยวกับคู่แข่งบน X เก็บบัญชีและวันที่ของแต่ละโพสต์ คำอ้างที่มีวันที่พิสูจน์ว่ามีข้อร้องเรียน ไม่ใช่ความถี่ การวิเคราะห์ระบุเป็นสัญญาณและไม่เปลี่ยนไม่กี่โพสต์เป็นเปอร์เซ็นต์
competitor.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 buyerSignal = await felo<XData>("/v2/x/tweet/search", { query: `"${competitor}" (pricing OR onboarding OR migration)`, limit: 25, since_time: since, }); const objections = buyerSignal.data.tweets.slice(0, 5);ตัวอย่างผลลัพธ์
{ "data": { "tweets": [ { "content": "setup took longer than the demo suggested", "author": { "username": "example_dev" }, "created_at": "2026-10-14T09:20:00Z", "metrics": { "retweet_count": 3, "favorite_count": 24 } } ] } }ประกอบการวิเคราะห์ด้วยตารางหลักฐาน
นี่คือขั้นบรรณาธิการ: เปลี่ยนหน้าและโพสต์เป็นข้อความอ้าง พร้อมแหล่ง วันที่ และสถานะ คอลัมน์สถานะรักษาความซื่อสัตย์:
Verifiedสำหรับสิ่งที่หน้าพูดVendor claimสำหรับการตลาดThird-partyสำหรับสื่อภายนอกSignalสำหรับโพสต์ที่มีวันที่Inferenceสำหรับการตีความของคุณ และNot verifiedเมื่อไม่มีหลักฐานcompetitor.ts const today = new Date().toISOString().slice(0, 10); const row = (claim: string, source: string, date: string, status: string) => `| ${claim} | ${source} | ${date} | ${status} |`; const teardown = [ `# Competitor teardown — ${competitor}`, `Scope: ${segment}. Checked ${today}.`, "", "| Claim | Source | Date | Status |", "| --- | --- | --- | --- |", row("Free tier listed on the pricing page", ownedPages[1].url, fetched[1].checkedAt, "Verified"), row("Positions as a platform, not a point tool", ownedPages[0].url, fetched[0].checkedAt, "Vendor claim"), row("Discussed in independent coverage", seedSources[0]?.link ?? "Not available", today, "Third-party"), row("Buyers report onboarding friction", "X post, quoted below", today, "Signal"), row("Most revenue comes from enterprise", "Not available", "—", "Not verified"), "", "## Recommendation", "Lead with time-to-first-result on the comparison page. Inference, not a competitor claim.", ].join("\n"); console.log(teardown);ตัวอย่างผลลัพธ์
| Free tier listed on the pricing page | https://example.com/competitor/pricing | 2026-10-30 | Verified |
เก็บใน LiveDoc สำหรับรอบถัดไป
สร้างหนึ่ง LiveDoc ต่อคู่แข่ง เพิ่มหน้าที่ดึงเป็นรีซอร์ส URL และการวิเคราะห์เป็นเอกสาร การเพิ่ม URL ซ้ำถูกลบซ้ำ ไตรมาสหน้าจึงดาวน์โหลดเฉพาะการเปลี่ยนแปลงและการวิเคราะห์เดิมอยู่ในที่เก็บเดียวกัน
competitor.ts type LiveDocData = { data: { short_id: string } }; const teardownDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Teardown: ${competitor}`, description: `Sources and teardown checked ${today}`, }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/urls`, { urls: fetched.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/doc`, { title: `Teardown ${today}`, content: teardown, }); console.log(teardownDoc.data.short_id); // the next refresh reuses this LiveDocตัวอย่างผลลัพธ์
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
รวมอะไรบ้าง
- ฐานที่มีแหล่งจาก Chat API และหน้าเว็บเบื้องหลัง
- หน้าแรก ราคา และ changelog ของคู่แข่งเป็น Markdown
- ความคิดเห็นผู้ซื้อที่มีวันที่จาก X ระบุว่าเป็นสัญญาณไม่ใช่หลักฐาน
- ตารางหลักฐานแยกข้อเท็จจริงที่ตรวจแล้ว ข้ออ้างผู้ขาย และการอนุมาน
- LiveDoc เก็บแหล่งเพื่อไม่เริ่มจากศูนย์
สิ่งที่ไม่ทำ
- เฉพาะแหล่งสาธารณะ ไม่มีสัมภาษณ์ชนะ/แพ้ บันทึก CRM หรือแดชบอร์ดส่วนตัว
- ราคาถูกลิงก์และลงวันที่ ไม่ตรึงในตารางที่ไม่มีวันตรวจ
- ความครอบคลุม X ไม่ครบและไม่ใช่ตัวอย่างผู้ซื้อที่เป็นตัวแทน
- ไม่เลือก positioning ให้คุณ ข้อเสนอแนะถูกระบุเป็นการอนุมาน
- ไม่เผยแพร่การวิเคราะห์หรือเขียนลงเครื่องมือ battlecard
คำถาม
หลักฐานมาจากไหน?
Chat API คืนฐานที่มีแหล่งและหน้าที่ใช้ Web Fetch เปลี่ยนหน้าคู่แข่งเป็น Markdown และ X Search เพิ่มโพสต์ที่มีวันที่ แต่ละแถวเก็บแหล่งและวันที่ การอนุมานมีสถานะของตัวเอง
ครอบคลุมหลายคู่แข่งได้ไหม?
ได้ รันพรอมป์ต์เดิมต่อคู่แข่งและเก็บหนึ่ง LiveDoc ต่อบริษัท หน้าเปรียบเทียบรวมเฉพาะแถวที่ตรวจแล้ว ไม่ผสมหลักฐานสองรอบ
อ้างราคาของพวกเขา ได้ไหม?
เวิร์กโฟลว์บันทึกสิ่งที่หน้าค่าบริการบอก พร้อมลิงก์และวันตรวจ ไม่ตรึงราคาในข้อความเพราะราคาเปลี่ยนและตัวเลขเก่าแย่กว่าไม่มี
แล้วบันทึกชนะ/แพ้ของเรา?
อ่านเฉพาะแหล่งสาธารณะ เพิ่มบันทึกภายในเป็นเอกสารแยกใน LiveDoc และระบุว่าภายใน ไม่ถูกอ้างในสื่อลูกค้า
อัปเดตบ่อยแค่ไหน?
ตามเหตุการณ์ ไม่ตามปฏิทิน: ราคาเปลี่ยน เปิดตัว หรือเริ่มรอบขาย รันใหม่ใน LiveDoc เดียวกันเพื่อให้ไตรมาสก่อนอยู่ข้างของใหม่
การวิเคราะห์หนึ่งชุดมีค่าใช้จ่ายเท่าไร?
ทุกการเรียกแชต การสกัด และการค้น X ใช้เครดิตตามการใช้งาน อัตราปัจจุบันที่หน้าค่าบริการ พรอมป์ต์ขออนุมัติก่อนใช้จ่าย
เวิร์กโฟลว์ที่เกี่ยวข้อง
เปลี่ยนคำถามหนึ่งข้อเป็นบรีฟวิจัยที่มีแหล่งอ้างอิง
ถามเว็บ บันทึกหน้าเว็บที่อยู่เบื้องหลังคำตอบเป็น Markdown เพิ่มสิ่งที่ผู้ปฏิบัติพูดบน X และเก็บหลักฐานใน LiveDoc ที่ค้นซ้ำได้
เปิดเวิร์กโฟลว์วิจัยเปลี่ยนคำถามตลาดเป็นบรีฟ go-to-market
ถามตลาดด้วยคำถามที่แม่นยำ อ่านหน้าหมวดหมู่และราคาเบื้องหลังคำตอบ รวบรวมวิธีที่ผู้ซื้ออธิบายปัญหาบน X และบันทึกบรีฟ GTM พร้อมข้อความอ้างที่มีแหล่งและคำถามเปิด
เปิดเวิร์กโฟลว์เนื้อหาเผยแพร่สรุปข่าว AI รายวันที่ทีมอ่านจริง
รับสรุปข่าวพร้อมแหล่ง เพิ่มการพูดคุยของผู้ปฏิบัติบน X ดึงทรานสคริปต์วิดีโอ ประกอบฉบับเป็น Markdown และเก็บใน LiveDoc
เปิดเวิร์กโฟลว์ปรับให้เป็นของคุณ
สูตรเดิม ปรับตามวิธีที่คุณส่งมอบจริง
อัปเดตตามเหตุการณ์ ไม่ตามปฏิทิน
รันใหม่เมื่อคู่แข่งเปลี่ยนราคา เปิดตัวใหญ่ หรือก่อนรอบขาย เก็บการวิเคราะห์แต่ละชุดเป็นเอกสารลงวันที่ใน LiveDoc เดียวกัน
เปลี่ยนเป็นการ์ดต่อสู้
จากตารางเดิม เขียนหนึ่งหน้าต่อบทบาท — ผู้ซื้อเชิงเศรษฐกิจ แชมเปียน ผู้ตรวจทางเทคนิค — ใช้เฉพาะแถว `Verified` พร้อมลิงก์ เก็บ `Inference` ไว้นอกสื่อลูกค้า
เปรียบเทียบสองคู่แข่ง
รันเวิร์กโฟลว์ต่อคู่แข่งด้วย LiveDoc แยก และสร้างหน้าเปรียบเทียบจากแถว `Verified` ในทั้งสองรอบเท่านั้น ไม่รวมสองรอบโดยไม่มีคอลัมน์สถานะ
ไปต่อ
หน้าเอกสารอ้างอิงเบื้องหลังสูตรนี้และก้าวต่อไป