Felo API PlatformFelo API Platform

リサーチ

初回アプローチの前にターゲット企業を調べる

相手企業のサイト、最近の報道、公開されている発信を読み、直近の動き、優先事項の仮説、会話のきっかけ、正直な不明点をまとめたアカウントブリーフを書きます。

所要時間20 分レベル初級更新日2026-10-30
対象創業者・運営者アカウントエグゼクティブ営業責任者

プロンプトをコピー

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

[会社名またはドメイン] のためのアカウントブリーフを、[アプローチ / ディスカバリー商談 / 更新] の前に作成してください。

私たちの提供: [製品またはサービス]。注目する購入者: [役割]。最近の動きの期間: [過去90日 / 過去12か月]。

相手のサイト、公開報道、公開投稿を読んでください。Markdown のブリーフに以下を含めてください。
1. 彼らが何をしているか(1段落、出典付き)。
2. 最近の動き: ローンチ、資金調達、採用、経営陣、提携。日付とリンクを添えてください。
3. 今四半期の優先事項(推測であることを明示)。
4. 会話のきっかけ: 具体的な観察を3つ、それぞれ出典付きで。
5. 不明点: 公開情報では確認できなかったこと。
6. 出典の完全な一覧。

ルール:
- 担当者名、メールアドレス、電話番号、従業員数、売上、調達額を捏造しないでください。
- 公開情報のみ: 非公開データ、ログイン必須ページ、スクレイピングしたディレクトリは使わないでください。
- CRM やその他のシステムに書き込まないでください。ブリーフは人が確認するファイルです。
- すべての推測を推測として明示し、事実にはリンクと日付を添えてください。
- 購入者の意図を事実として書かないでください。
- クレジットを消費する前に、実行予定の API 呼び出しを示して私の承認を待ってください。
- 送信、予約、公開、メッセージ送信はしないでください。
- 結果を ./account-brief.md に書き、チャットで要約してください。

コピー内容にはインストール手順と安全ルールも含まれます。

完成するもの

実行時の出力例です。リアルタイム生成ではありません。

アカウントブリーフの例(抜粋)

アカウントブリーフ — [会社]、2026-10-30 確認

彼らがやっていること

中規模物流事業者向けの倉庫ピッキングロボットを製造。出典: https://example.com/about(2026-10-30 確認)。

最近の動き

  • 2つ目の組み立て拠点を開設 — https://example.com/news/expansion (2026-10-24)
  • 「導入運用」チームを採用中 — https://example.com/careers(2026-10-30 確認)
  • パートナー連携についての自社アカウント投稿 — @example_company (2026-10-21)

優先事項の可能性(推論)

より多くの拠点でより速く導入すること。拡張の投稿と新しい導入職からの推論で、表明された計画でも公開情報で確認されたものでもない。

会話のきっかけ

  • 2つ目の拠点は新しい。拠点ごとに違うとき導入プレイブックがどう変わるか聞く。出典: https://example.com/news/expansion
  • 専任の導入運用職は、営業と設置の間の引き継ぎを示唆する。出典: https://example.com/careers

不明点

  • 現在誰が導入運用を担っているか: 公開ソースからは該当データなし。
  • 車両台数と契約金額: 該当データなし。

出典

  • https://example.com/about
  • https://example.com/news/expansion
  • https://example.com/careers

実際の呼び出し

開発者向け:同じワークフローを実行順に並べたコピー可能なコード。

実際の API 呼び出しを表示
  1. まず企業概要を取る

    Chat で企業が何をしているか、最近どんな公開変化があったかを聞き、引用元を残します。

    account.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 company = "Example Robotics";
    const domain = "example.com";
    const buyerRole = "Head of Operations";
    
    const overview = await felo<ChatData>("/v2/chat", {
      query: `What does ${company} do, who buys from it, and what changed in the last 90 days?`,
    });
    
    const seedSources = overview.data.resources.slice(0, 5);

    出力例

    {
      "answer": "The company builds …",
      "sources": [
        { "link": "https://example.com/about", "title": "…", "snippet": "…" }
      ]
    }
  2. サイト、料金、採用を読む

    Web Fetch で About、料金、採用ページを読み、製品、顧客、募集中の職種を把握します。

    account.ts
    type ExtractData = { data: { content: string } };
    
    const companyPages = [
      { url: `https://${domain}/about`, title: "About" },
      { url: `https://${domain}/pricing`, title: "Pricing" },
      { url: `https://${domain}/careers`, title: "Careers" },
    ];
    
    const pages = await Promise.all(
      companyPages.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/careers",
      "checkedAt": "2026-10-30",
      "content": "# Careers\n\nOpen roles: deployment operations…"
    }
  3. 直近90日の公開の動きを見る

    X で企業名と製品名を検索し、直近90日の公開投稿、アカウント、日付を残します。

    account.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 posts = await felo<XData>("/v2/x/tweet/search", {
      query: `"${company}" (hiring OR launch OR partnership OR expansion)`,
      limit: 20,
      since_time: since,
    });
    
    const recent = posts.data.tweets.slice(0, 5);

    出力例

    { "data": { "tweets": [
      {
        "content": "We just opened our second assembly site",
        "author": { "username": "example_company" },
        "created_at": "2026-10-21T14:02:00Z",
        "metrics": { "retweet_count": 4, "favorite_count": 31 }
      }
    ] } }
  4. アカウントブリーフを書く

    企業概要、最近の動き、優先事項の仮説、会話のきっかけ、不明点、出典を書きます。

    account.ts
    const today = new Date().toISOString().slice(0, 10);
    
    const accountBrief = [
      `# Account brief — ${company}`,
      `Checked ${today}. Buyer role: ${buyerRole}.`,
      "",
      "## What they do",
      overview.data.answer,
      "",
      "## Recent moves",
      ...recent.map(
        (post) => `- ${post.created_at.slice(0, 10)}: ${post.content} (from @${post.author.username})`,
      ),
      ...pages.map((page) => `- ${page.title} page captured ${page.checkedAt}: ${page.url}`),
      "",
      "## Likely priorities (inference)",
      "<!-- One or two sentences from the moves above. Mark them as inference, never a stated plan. Delete this comment when filled. -->",
      "",
      "## Conversation starters",
      ...recent.slice(0, 3).map(
        (post) => `- Ask about: ${post.content.slice(0, 100)} (dated ${post.created_at.slice(0, 10)})`,
      ),
      "",
      "## Unknowns",
      "- Who owns the workflow we sell into: Not available from public sources.",
      "- Contract values and team size: Not available.",
      "",
      "## Sources",
      ...pages.map((page) => `- ${page.title}: ${page.url}`),
      ...seedSources.map((source) => `- ${source.title}: ${source.link}`),
    ].join("\n");
    
    console.log(accountBrief);

    出力例

    # Account brief — Example Robotics
  5. LiveDoc に保存する

    ブリーフと出典を LiveDoc に保存し、次のフォローで再利用します。

    account.ts
    type LiveDocData = { data: { short_id: string } };
    
    const accountDoc = await felo<LiveDocData>("/v2/livedocs", {
      name: `Account: ${company}`,
      description: `Briefs and sources checked ${today}`,
    });
    
    await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/urls`, {
      urls: [
        ...pages.map((page) => ({ url: page.url, title: page.title })),
        ...seedSources.map((source) => ({ url: source.link, title: source.title })),
      ],
    });
    
    await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/doc`, {
      title: `Account brief ${today}`,
      content: accountBrief,
    });
    
    console.log(accountDoc.data.short_id); // the next call reuses this LiveDoc

    出力例

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

含まれるもの

  • Chat の出典付き企業概要
  • 会社サイト、料金、採用ページの Markdown 抽出
  • 日付付きの X 公開投稿
  • 構造化されたアカウントブリーフ
  • 証拠を保存する LiveDoc

やらないこと

  • 連絡先メール、電話番号、個人情報は提供しない
  • 非公開データやログイン限定ページは読まない
  • CRM への書き込みやメッセージ送信はしない
  • 従業員数、売上、資金調達は出典が明示する場合のみ記録
  • 優先事項と意図は推論として明示する

よくある質問

連絡先メールを出しますか?

いいえ。公開情報の調査だけを行い、メール、電話、個人情報は提供しません。

データはどこから来ますか?

Chat が出典付きの企業概要を返し、Web Fetch が会社サイト、料金、採用ページを読み、X Search が公開の動きを補います。各項目はリンクと日付を保持します。

テック企業以外も調べられますか?

はい。公開情報が少ない業界では、ブリーフは推測せず不明点として明示します。

CRM に書き込みますか?

いいえ。Markdown ブリーフを生成するだけで、CRM 連携は自分で実装してください。

優先事項は事実ですか?

いいえ。ブリーフは「優先事項の仮説」とラベルし、根拠を示します。最終判断は営業担当が行います。

1回の費用は?

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

関連ワークフロー

自分の形に変える

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

1つのセグメントだけ調べる

業界や地域を絞ると、ブリーフが具体的になります。

直近の発表会を加える

発表会ページを追加ソースにすると、会話のきっかけが旬になります。

競合分析と一緒に使う

アカウントブリーフの優先事項と競合分析のポジショニングを照らし、差別化の切り口を見つけます。

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