Felo API PlatformFelo API Platform

วิจัย

เปลี่ยนคำถามตลาดเป็นบรีฟ go-to-market

ถามตลาดด้วยคำถามที่แม่นยำ อ่านหน้าหมวดหมู่และราคาเบื้องหลังคำตอบ รวบรวมวิธีที่ผู้ซื้ออธิบายปัญหาบน X และบันทึกบรีฟ GTM พร้อมข้อความอ้างที่มีแหล่งและคำถามเปิด

เวลา30 นาทีระดับระดับกลางอัปเดต2026-10-30
สำหรับใครผู้ก่อตั้งและปฏิบัติการการตลาดผลิตภัณฑ์ผู้นำการขาย

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

แทนช่องในวงเล็บเหลี่ยมแล้ววางใน 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 (ตัดตอน)

สรุป 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 จริง
  1. ตั้งกรอบคำถามตลาด

    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": "…" }
      ]
    }
  2. อ่านหน้าหมวดหมู่เอง

    ดาวน์โหลดหน้าที่ตั้งกรอบตลาด: ภาพรวมหมวดหมู่ เปรียบเทียบ และราคา สกัดเป็น 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…"
    }
  3. รวบรวมวิธีที่ผู้ซื้ออธิบายปัญหา

    ค้นคำที่ผู้ซื้อใช้เมื่อเจอปัญหาบน 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 }
      }
    ] } }
  4. เขียนบรีฟรอบการตัดสินใจ

    รวมนิยามกลุ่ม ภาษาผู้ซื้อ ทางเลือก ข้อโต้แย้ง และคำถามเปิดใน 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
  5. เก็บหลักฐานสำหรับตลาดถัดไป

    สร้างหนึ่ง 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 ใช้เครดิตตามการใช้งาน อัตราปัจจุบันที่หน้าค่าบริการ พรอมป์ต์ขออนุมัติก่อนใช้จ่าย

เวิร์กโฟลว์ที่เกี่ยวข้อง

ปรับให้เป็นของคุณ

สูตรเดิม ปรับตามวิธีที่คุณส่งมอบจริง

รันตามภูมิภาค

คงโครงสร้างส่วนและเปลี่ยนเฉพาะภูมิภาคและภาษา หนึ่ง LiveDoc ต่อภูมิภาคและคำถามเดิม เพื่อให้บรีฟเปรียบเทียบได้

เพิ่มบันทึกสัมภาษณ์

วางบันทึกการโทรลูกค้าเป็นเอกสารและระบุว่าภายใน บรีฟอ้างข้างหลักฐานสาธารณะได้ แต่ไม่นำบันทึกส่วนตัวมาเป็นแหล่งสาธารณะ

ป้อนเด็คเปิดตัว

ส่งส่วนข้อโต้แย้งและหลักฐานให้เวิร์กโฟลว์เด็คพร้อมรายการแหล่ง บรีฟยังเป็นชั้นหลักฐาน เด็คคือการนำเสนอ ไม่ใช่แหล่งความจริงที่สอง

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