Felo API PlatformFelo API Platform

วิจัย

สร้างการวิเคราะห์คู่แข่งที่ทีมขายใช้ได้จริง

รวมหน้าของคู่แข่ง ข้อมูลรอบข้าง และสิ่งที่ผู้ซื้อพูดบน X แล้วประกอบการวิเคราะห์ที่ทุกข้อความอ้างมีแหล่ง วันที่ และสถานะ

เวลา30 นาทีระดับระดับกลางอัปเดต2026-10-30
สำหรับใครการตลาดผลิตภัณฑ์competitive intelligencesales enablement

คัดลอกพรอมป์ต์

แทนช่องในวงเล็บเหลี่ยมแล้ววางใน 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/home2026-10-30Verified
ออกการเปลี่ยนแปลงทุกสัปดาห์https://example.com/competitor/changelog2026-10-28Verified
ถูกกล่าวถึงในบทสรุปอิสระhttps://example.com/roundup2026-10-27Third-party
ผู้ซื้อบอกว่าออนบอร์ดช้าโพสต์ X ที่อ้างด้านล่าง2026-10-14Signal
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 จริง
  1. เริ่มจากฐานที่มีแหล่ง

    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": "…" }
      ]
    }
  2. ดาวน์โหลดหน้าที่พวกเขาควบคุม

    สื่อบุคคลที่สามบอกคนคิดอะไร หน้าของพวกเขา บอกสิ่งที่พวกเขาอ้าง สกัดหน้าแรก ราคา และ 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…"
    }
  3. ดูว่าผู้ซื้อพูดอะไรบน 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 }
      }
    ] } }
  4. ประกอบการวิเคราะห์ด้วยตารางหลักฐาน

    นี่คือขั้นบรรณาธิการ: เปลี่ยนหน้าและโพสต์เป็นข้อความอ้าง พร้อมแหล่ง วันที่ และสถานะ คอลัมน์สถานะรักษาความซื่อสัตย์: 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 |
  5. เก็บใน 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` ในทั้งสองรอบเท่านั้น ไม่รวมสองรอบโดยไม่มีคอลัมน์สถานะ

หน้าเอกสารอ้างอิงเบื้องหลังสูตรนี้และก้าวต่อไป