Felo API PlatformFelo API Platform

コンテンツ

製品ブリーフをランディングページに変える

読者を調査し、ブリーフを LiveDoc に保存し、その文脈から Landing Page タスクを作成し、ホストされたページが完成するまでポーリングします。

所要時間30 分レベル中級更新日2026-10-30
対象創業者プロダクトマーケ成長チーム

プロンプトをコピー

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

[読者] に向けた [製品] のランディングページを作成してください。

目的: [登録 / デモ / ウェイトリスト]。トーン: [トーン]。言語: [言語]。
素材: [製品ブリーフの URL、またはブリーフを貼り付け]。必ず含めるもの: [証明ポイント、価格、CTA]。

Chat と Web Fetch で読者と競合2〜3ページを調査してください。ブリーフと調査を LiveDoc に保存し、その LiveDoc をコンテキストにした Landing Page タスクを作成してください。完了するまでポーリングし、ホストされたページのリンクを返してください。

以下を作成してください。
1. ページ構成: ヒーロー、証明、機能、反論、CTA。
2. ホストされたページのリンク。
3. コンテキストに使った LiveDoc のリンク。
4. 検証が必要な主張のレビューのチェックリスト。

ルール:
- 数値、顧客、お客様の声、価格、コンプライアンス上の主張を捏造しないでください。
- すべての主張をブリーフまたは取得したページにたどれるようにしてください。
- 調査やページ生成でクレジットを消費する前に確認してください。
- 公開したりドメインを接続したりせず、レビュー用のホストリンクを返してください。
- 構成を ./landing-page-outline.md に書き、チャットで要約してください。

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

完成するもの

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

ランディングページ概要の例(抜粋)

ランディングページ構成

ヒーロー:「30個のタブを開かずに市場を調べる」 サブ見出し: 出典と下書きブリーフを1回で。 証明: ブリーフあたりの節約時間。すべての主張が出典にリンク。 機能: 検索、ページ抽出、X シグナル、LiveDoc の証拠。 反論:「数字を捏造しない?」しない。データがない場合は「該当データなし」。 CTA: 1つの問いから始める。

ページ: https://felo.ai/ai-page/... コンテキスト: https://felo.ai/livedoc/...

実際の呼び出し

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

実際の API 呼び出しを表示
  1. 読者と代替案を調査する

    Chat で読者は誰か、何を必要としているかを聞き、Web Fetch で競合ページを2〜3件読みます。

    landing.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 }[] };
    };
    type ExtractData = { data: { content: string } };
    
    const research = await felo<ChatData>("/v2/chat", {
      query: "Who is [audience] and what do they need from [product]?",
    });
    
    const pages = await Promise.all(
      research.data.resources.slice(0, 2).map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    出力例

    { "answer": "…", "resources": [{ "link": "https://example.com", "title": "…" }] }
  2. ブリーフを LiveDoc に保存する

    LiveDoc を作成し、製品ブリーフをドキュメントリソースとして追加し、取得した競合ページも添えます。

    landing.ts
    type LiveDocData = { data: { short_id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: "Landing page: [product]",
      description: "Product brief, audience research and competitor notes",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/doc`, {
      title: "Product brief",
      content: "[paste the brief: audience, problem, proof, pricing, CTA]",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, {
      urls: pages.map((page) => ({ url: page.link, title: page.title })),
    });
    
    console.log(doc.data.short_id); // page context
  3. ランディングページタスクを作成する

    /v2/landing_page にページプロンプトと LiveDoc short_id を送り、task_id を取得します。

    landing.ts
    type LandingTaskData = { data: { task_id: string } };
    
    const task = await felo<LandingTaskData>("/v2/landing_page", {
      query:
        "Create a landing page for [product] for [audience]. Goal: [signup]. " +
        "Use the product brief and research in the LiveDoc. Return a hero, proof, " +
        "features, objections and one CTA. Do not invent claims.",
      livedoc_short_id: doc.data.short_id,
    });
    
    console.log(task.data.task_id);

    出力例

    { "data": { "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }
  4. 完成までポーリングする

    タスク履歴を照会し、COMPLETED になったら ai_page_html を読みます。

    landing.ts
    type TaskState = {
      data: { task_status: string; ai_page_html?: string; ppt_url?: string };
    };
    
    async function waitForPage(taskId: string) {
      for (let attempt = 0; attempt < 40; attempt++) {
        const state = await felo<TaskState>(`/v2/tasks/${taskId}/historical`);
        if (state.data.task_status === "COMPLETED") {
          return state.data.ai_page_html ?? state.data.ppt_url;
        }
        if (["FAILED", "EXPIRED", "CANCELED"].includes(state.data.task_status)) {
          throw new Error(`Landing page task ${state.data.task_status}`);
        }
        await new Promise((resolve) => setTimeout(resolve, 3000));
      }
      throw new Error("Landing page task timed out");
    }
    
    const pageUrl = await waitForPage(task.data.task_id);
    console.log(pageUrl);

    出力例

    {
      "task_status": "COMPLETED",
      "ai_page_html": "https://felo.ai/ai-page/9qiLTmT77fA3aVurrMHvRJ",
      "ppt_url": "https://felo.ai/slides/9qiLTmT77fA3aVurrMHvRJ"
    }
  5. 共有前にレビューする

    主張、価格、法務表現、CTA リンクを確認してから共有します。

含まれるもの

  • 公開ページに基づく読者・競合調査
  • 製品ブリーフと調査を保存した LiveDoc
  • その文脈から生成したホスト型ページ
  • 共有前の主張・リンク・CTA レビューリスト

やらないこと

  • ホストページを生成するだけで、サイト公開や独自ドメイン接続はしない
  • 生成コピーは共有前に人のレビューが必要
  • A/B テストや analytics 連携はしない
  • ブリーフとページにない主張は検証できない
  • ロゴ、ブランドシステム、カスタムイラストは作らない

よくある質問

何を生成しますか?

製品ブリーフと調査に基づき、Felo 上でホストされるランディングページです。受け取るのはリンクで、デプロイ済みサイトではありません。

独自ドメインは使えますか?

このワークフローでは使いません。レビュー用のホストページを返し、ドメイン接続と公開は別ステップです。

顧客の声や指標を捏造しますか?

いいえ。プロンプトは捏造を禁止し、すべての主張をブリーフか取得ページに紐付けます。根拠のない内容は除外されます。

繰り返し改善できますか?

はい。LiveDoc のブリーフを修正し、新しい文脈で新しい Landing Page タスクを作成します。

カスタム画像も作りますか?

ページ構造とコピーを担当します。カスタムイラストやブランド素材は対象外です。

ページ1枚の費用は?

調査とページ生成は従量制クレジットです。現在の料金は料金ページにあり、プロンプトは使う前に確認を求めます。

関連ワークフロー

自分の形に変える

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

PDF ブリーフから始める

multipart で PDF を送ると、プラットフォームが LiveDoc リソースとして保存し、ページタスクに渡します。

2つのポジショニング版を作る

同じ LiveDoc で異なる角度のタスクを2つ作り、比較してから1つを磨きます。

スライドに再利用する

同じ LiveDoc を PPT タスクにも渡し、ページと deck のストーリーを揃えます。

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