Felo API PlatformFelo API Platform

Nghiên cứu

Biến câu hỏi thị trường thành báo cáo go-to-market

Hỏi thị trường một câu chính xác, đọc trang danh mục và giá đằng sau câu trả lời, thu thập cách người mua mô tả vấn đề trên X và lưu báo cáo GTM có khẳng định dẫn nguồn và câu hỏi mở.

Thời gian30 phútMứcTrung cấpCập nhật2026-10-30
Dành cho aiNhà sáng lập & vận hànhProduct marketingLãnh đạo bán hàng

Sao chép prompt

Thay các trường trong ngoặc vuông rồi dán vào Claude Code, Codex hoặc AI có quyền truy cập terminal. Nó cài skill Felo, hỏi trước khi dùng credit và chạy quy trình.

Lập bản tóm tắt nghiên cứu go-to-market cho [sản phẩm] gia nhập [phân khúc hoặc ICP] tại [khu vực], bằng [ngôn ngữ].

Mô hình: [tự phục vụ / bán hàng dẫn dắt / đối tác]. Quyết định mà nó hỗ trợ: [ra mắt / giá / tái định vị]. Khung thời gian: [90 ngày qua / 12 tháng qua].

Tạo bản tóm tắt Markdown gồm:
1. Định nghĩa phân khúc: họ là ai, hôm nay dùng gì và nguồn nói gì về quy mô — trích nguồn hoặc ghi “Không có dữ liệu”.
2. Ngôn ngữ người mua: cách họ mô tả vấn đề, kèm liên kết và ngày.
3. Lựa chọn thay thế: họ chuyển từ đâu sang, gồm bảng tính và không làm gì.
4. Phản đối và bằng chứng người mua yêu cầu.
5. Câu hỏi mở mà nguồn công khai không trả lời được.
6. Danh sách nguồn đầy đủ.

Quy tắc:
- Mọi nhận định thị trường cần liên kết và ngày. Không ước lượng quy mô, tăng trưởng hay ngân sách theo cảm tính.
- Tách nguồn độc lập, trang nhà cung cấp và suy luận của bạn.
- Dùng X cho ngôn ngữ và phản đối, không làm bằng chứng quy mô thị trường.
- Chuyển khung thời gian và khu vực thành giá trị rõ ràng.
- Trước khi tiêu tín dụng, hiển thị các lệnh gọi API dự định và chờ tôi phê duyệt.
- Không công bố, gửi, lên lịch hay ghi vào CRM.
- Ghi kết quả vào ./gtm-brief.md và tóm tắt trong chat.

Bản sao cũng gồm các bước cài đặt và quy tắc an toàn.

Bạn nhận được gì

Kết quả mẫu của một lần chạy. Không phải tạo trực tiếp.

Ví dụ GTM brief (trích)

GTM brief — [phân khúc] tại [khu vực]

Định nghĩa phân khúc

Nhóm vận hành nhỏ quản lý lịch bằng bảng tính. Quy mô: không có dữ liệu trong các nguồn công khai đã xem — không đưa số vào brief khi thiếu nguồn.

Ngôn ngữ người mua

  • “chúng tôi vẫn làm việc này bằng bảng tính” — bài X, 2026-10-18
  • “phần cài đặt là khó nhất” — bài X, 2026-10-02

Ghi nhãn là ngôn ngữ, không phải bằng chứng về mức phổ biến.

Lựa chọn thay thế được nhắc

Bảng tính, bộ công cụ hiện có và không làm gì. Nguồn: https://example.com/thread (2026-10-18).

Phản đối và bằng chứng cần

Đánh giá bảo mật và lộ trình chuyển đổi. Người mua yêu cầu khách hàng tham chiếu có tên; công khai thì chưa có, nên vẫn là câu hỏi mở.

Câu hỏi mở

  • Bao nhiêu phần của phân khúc đã có dòng ngân sách riêng?
  • Phản đối có thay đổi theo quy mô công ty không?

Nguồn

  • https://example.com/category-page
  • https://example.com/pricing-page
  • https://example.com/thread

Các lệnh gọi chính xác

Dành cho lập trình viên: cùng quy trình dưới dạng mã, theo thứ tự chạy.

Hiện lệnh gọi API thật
  1. Đóng khung câu hỏi thị trường

    Chat trả câu trả lời và các trang đã dùng, nên bắt đầu bằng câu đủ hẹp: ai mua, họ dùng gì hôm nay, phản đối nào xuất hiện. Giữ tài nguyên làm liên kết gợi ý; câu trả lời là gợi ý, liên kết là bằng chứng và khép danh sách nguồn.

    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);

    Kết quả mẫu

    {
      "answer": "Buyers in this segment usually start from spreadsheets and …",
      "sources": [
        { "link": "https://example.com/category-page", "title": "…", "snippet": "…" }
      ]
    }
  2. Đọc chính các trang danh mục

    Tải trang đóng khung thị trường: tổng quan danh mục, so sánh và giá. Trích thành Markdown với chế độ đọc và ghi ngày tải, vì chất lượng đọc thị trường phụ thuộc trang đằng sau.

    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 };
      }),
    );

    Kết quả mẫu

    {
      "url": "https://example.com/category",
      "checkedAt": "2026-10-30",
      "content": "# Category overview\n\nExtracted page text…"
    }
  3. Thu thập cách người mua mô tả vấn đề

    Tìm trên X từ ngữ người mua dùng khi gặp vấn đề, không phải tên sản phẩm. Giữ tài khoản và ngày; báo cáo dùng bài để lấy ngôn ngữ và phản đối, không bao giờ làm thước đo quy mô hay tần suất.

    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);

    Kết quả mẫu

    { "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. Viết báo cáo quanh quyết định

    Ghép định nghĩa phân khúc, ngôn ngữ người mua, lựa chọn thay thế, phản đối và câu hỏi mở vào một Markdown. Mỗi khẳng định giữ nguồn và ngày, quy mô chỉ ghi khi có nguồn, điều nguồn công khai không trả lời được đưa vào câu hỏi mở thay vì suy luận.

    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);

    Kết quả mẫu

    # GTM brief — operations teams at 50-200 person companies in DACH
  5. Lưu bằng chứng cho thị trường sau

    Tạo một LiveDoc mỗi phân khúc và khu vực, thêm trang đã tải làm tài nguyên URL và báo cáo làm tài liệu. Thị trường sau bắt đầu từ cùng nguồn mà không tải lại trang danh mục, thêm lại URL được loại trùng.

    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

    Kết quả mẫu

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Bao gồm

  • Đọc thị trường có nguồn từ Chat API và các trang đằng sau
  • Trang danh mục, so sánh và giá ở dạng Markdown
  • Ngôn ngữ và phản đối của người mua từ X kèm tài khoản, ngày
  • Báo cáo xoay quanh quyết định ra mắt, không phải chủ đề
  • LiveDoc để khu vực hoặc lần ra mắt sau dùng lại bằng chứng

Không làm gì

  • Chỉ nguồn công khai; không báo cáo trả phí, panel hay phỏng vấn khách
  • Không ước lượng quy mô hay tăng trưởng — thiếu dữ liệu ghi “Không có”
  • Bài X là ngôn ngữ và tín hiệu, không phải mẫu đại diện người mua
  • Không chọn phân khúc hay giá thay bạn
  • Không xuất bản báo cáo hay ghi vào CRM

Câu hỏi

Có cần báo cáo thị trường trả phí không?

Không. Quy trình đọc nguồn công khai và đánh dấu khoảng trống. Nếu đã có báo cáo, thêm làm tài liệu trong LiveDoc và trích như nguồn khác.

Có nghiên cứu thị trường bằng ngôn ngữ khác không?

Có. Đặt khu vực và ngôn ngữ. Trích dẫn giữ nguyên ngôn ngữ gốc kèm bản dịch để người review địa phương kiểm tra cách diễn đạt.

Có cho tôi quy mô thị trường không?

Chỉ khi nguồn nêu rõ, kèm liên kết và ngày. Nếu không, báo cáo ghi “Không có” thay vì bịa số hoặc ngoại suy từ một bài.

Có nói chuyện với khách không?

Không. Chỉ đọc nguồn công khai. Thêm ghi chú phỏng vấn làm tài liệu và đánh dấu nội bộ; báo cáo không trình bày ghi chú riêng như bằng chứng công khai.

Khác gì báo cáo nghiên cứu?

Báo cáo nghiên cứu trả lời một câu hỏi. Quy trình này tổ chức bằng chứng quanh quyết định go-to-market — phân khúc, ngôn ngữ người mua, lựa chọn thay thế, phản đối và bằng chứng người mua yêu cầu — để đưa vào kế hoạch ra mắt.

Một báo cáo tốn bao nhiêu?

Mỗi lệnh chat, trích xuất và tìm X dùng credit theo mức dùng; giá hiện tại ở trang giá. Prompt hỏi duyệt trước khi chi.

Quy trình liên quan

Tùy biến

Cùng công thức, điều chỉnh theo cách bạn thực sự triển khai.

Chạy theo khu vực

Giữ cấu trúc phần và chỉ đổi khu vực, ngôn ngữ. Một LiveDoc mỗi khu vực và cùng câu hỏi để báo cáo so sánh được.

Thêm ghi chú phỏng vấn

Dán ghi chú gọi khách làm tài liệu và đánh dấu nội bộ. Báo cáo có thể trích cạnh bằng chứng công khai nhưng không trình bày ghi chú riêng như nguồn công khai.

Đưa vào deck ra mắt

Chuyển phần phản đối và bằng chứng cho quy trình deck, giữ danh sách nguồn. Báo cáo là lớp bằng chứng; deck là cách trình bày, không phải nguồn sự thật thứ hai.

Các trang tham chiếu đằng sau công thức và nơi đi tiếp.