Felo API PlatformFelo API Platform

リサーチ

市場の問いを go-to-market ブリーフに変える

市場に正確な問いを投げ、回答の背景にあるカテゴリと料金ページを読み、X で買い手が課題をどう語るかを集め、出典付きの主張と未解決の問いを持つ GTM ブリーフに保存します。

所要時間30 分レベル中級更新日2026-10-30
対象創業者・運営者プロダクトマーケ営業責任者

プロンプトをコピー

角括弧の項目を置き換えて、Claude Code、Codex、ターミナルにアクセスできる AI に貼り付けてください。Felo スキルをインストールし、クレジットを使う前に確認し、ワークフローを実行します。

[製品] が [地域] の [セグメントまたは ICP] に参入するための go-to-market リサーチブリーフを [言語] で作成してください。

モーション: [セルフサーブ / 営業主導 / パートナー経由]。この分析が支える意思決定: [ローンチ / 価格 / リポジショニング]。期間: [過去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)。

反論と必要な証明

セキュリティレビューと移行パス。買い手は名前の出る参照先を求めるが、公開されているものはまだないため、未解決の問いのまま。

未解決の問い

  • このセグメントのどれだけが専用の予算枠を持っているか?
  • 反論は会社規模で変わるか?

出典

  • 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. カテゴリページ自体を読む

    市場を枠付けるページを取得します。カテゴリ概要、比較ページ、料金ページです。readability を有効にして 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. 判断を中心にブリーフを書く

    セグメント定義、買い手の言葉、代替案、反論、未解決の問いを1つの 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 を1つ作り、取得ページを 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 に追加し、他の出典と同様に引用します。

別の言語の市場も調べられますか?

はい。地域と言語のプレースホルダーを設定します。引用は原文のまま残し、隣に翻訳を付けて現地レビュアーが表現を確認できるようにします。

市場規模は出ますか?

出典が明示している場合だけ、リンクと日付付きで示します。それ以外は数字を作らず、1件の投稿から外挿せず、「利用不可」と書きます。

顧客と会話できますか?

いいえ。公開ソースを読むだけです。インタビューメモはドキュメントリソースとして追加し、社内とラベルしてください。非公開メモを公開証拠として提示しません。

リサーチブリーフとの違いは?

リサーチブリーフは1つの問いに答えます。このワークフローは証拠を go-to-market 判断(セグメント、買い手の言葉、代替案、反論、買い手が求める証明)に沿って構成し、ローンチ計画に渡せる形にします。

ブリーフの費用は?

各 chat、抽出、X 検索は従量制クレジットを使います。現在の料金は料金ページにあります。プロンプトは使う前に承認を求めます。

関連ワークフロー

自分の形に変える

同じレシピを、実際の進め方に合わせて調整します。

地域ごとに実行する

章の構成は同じまま、地域と言語のプレースホルダーだけを変えます。地域ごとに1つの LiveDoc と同じ問いを使い、ブリーフを比較可能にします。

自分のインタビューメモを追加する

顧客通話のメモをドキュメントリソースとして貼り、社内とラベルします。ブリーフは公開証拠の隣で参照できますが、非公開メモを公開出典として提示しません。

ローンチ deck に渡す

反論と証明のセクションを deck ワークフローに渡し、出典リストを付けたままにします。ブリーフは証拠レイヤーで、deck はその表現であり、第二の真実ではありません。

このレシピの背景にあるリファレンスと、次に見るべきページ。