Felo API PlatformFelo API Platform

办公

把研究页面变成一套幻灯片

抽取页面,存成 LiveDoc 上下文,然后交给 PPT Task API 生成 deck,轮询拿到完成的链接。

构建时间15 分钟难度入门更新于2026-10-29
适合谁顾问销售与市场内部工具

复制 prompt

把方括号里的字段替换掉,然后粘贴到 Claude Code、Codex 或任何能访问终端的 AI。它会安装 Felo skill、在花额度前询问,并执行这套 workflow。

把这个来源变成一套幻灯片:[公开 URL 或 PDF 路径]。

受众:[谁来看]。页数:[6–10 页]。语言:[语言]。主题:[主题名或“default”]。

对公开页面(或上传文件)使用 Web Fetch,把来源保存为 LiveDoc 上下文,创建 PPT 任务,并轮询直到演示文稿完成。

输出:
1. 每页一行的幻灯片大纲。
2. 生成演示文稿的链接。
3. 作为上下文使用的 LiveDoc 链接。

规则:
- 不要编造来源中没有的事实。缺口标注为“来源未提及”。
- PPT 任务会消耗额度,提交前先询问。
- 保留来源 URL、大纲和演示文稿链接。
- 不要在工作区外发布或分享演示文稿。
- 将大纲写入 ./deck-outline.md,并在对话中总结。

复制的内容也包含安装步骤和安全规则。

你会得到什么

一次运行的示例输出,不是实时生成。

幻灯片大纲示例(节选)

来源 -> 幻灯片大纲

  1. 这份报告为什么重要
  2. 本季度发生了什么变化
  3. 三类客户细分
  4. 证据薄弱的地方
  5. 接下来测试什么

幻灯片:https://felo.ai/slides/... 上下文:https://felo.ai/livedoc/...

实际调用

给开发者:同一套 workflow 的可复制代码,按执行顺序排列。

展开实际 API 调用
  1. 抽取来源页面

    用 Web Fetch 把公开页面抓成 Markdown,保留标题和正文。

    deck.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 ExtractData = { data: { content: string } };
    
    const page = await felo<ExtractData>("/v2/web/extract", {
      url: "https://example.com/research",
      output_format: "markdown",
      with_readability: true,
    });
  2. 保存为 LiveDoc 上下文

    创建 LiveDoc,把来源作为文档资源加进去,拿到 short_id。

    deck.ts
    type LiveDocData = { data: { short_id: string } };
    type ResourceData = { data: { id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: "Quarterly research deck",
      description: "Source material for the next deck",
    });
    
    const resource = await felo<ResourceData>(
      `/v2/livedocs/${doc.data.short_id}/resources/doc`,
      {
        title: "Source page",
        content: page.data.content,
      },
    );
  3. 提交幻灯片任务

    调用 PPT Task API,传入页面内容和 LiveDoc short_id,拿到 task_id。

    deck.ts
    type PptTaskData = {
      data: { task_id: string; livedoc_short_id: string };
    };
    
    const task = await felo<PptTaskData>("/v2/ppts", {
      query: "Six slides for a product review: findings, evidence, next steps",
      livedoc_short_id: doc.data.short_id,
    });
    
    console.log(task.data.task_id);

    示例输出

    {
      "data": {
        "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3",
        "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr",
        "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9"
      }
    }
  4. 轮询直到完成

    查询任务状态,直到完成并读取幻灯片链接。

    deck.ts
    type TaskState = {
      data: { task_status: string; ppt_url?: string; live_doc_url?: string };
    };
    
    async function waitForDeck(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;
        if (["FAILED", "EXPIRED", "CANCELED"].includes(state.data.task_status)) {
          throw new Error(`Deck task ${state.data.task_status}`);
        }
        await new Promise((resolve) => setTimeout(resolve, 3000));
      }
      throw new Error("Deck task timed out");
    }
    
    const result = await waitForDeck(task.data.task_id);
    console.log(result.ppt_url);

    示例输出

    {
      "task_status": "COMPLETED",
      "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx",
      "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx"
    }

包含什么

  • 来源页面的干净 Markdown 提取
  • 保存为可复用上下文的 LiveDoc
  • 返回完成链接的异步 PPT 任务
  • 分享前可以 review 的幻灯片大纲

不做什么

  • 来源必须是公开页面或已上传文件;仅登录页面可能失败
  • 生成的幻灯片跟来源走,不覆盖完整品牌系统
  • 一次运行生成一套 deck;批量需要循环
  • 不编辑已有 deck,也不保证视觉完全匹配
  • 不替你发布或分享 deck

常见问题

可以用 PDF 而不是 URL 吗?

可以。把 PPT 任务改成 multipart form data,上传文件;平台会把文件存成 LiveDoc 资源并创建 deck。

可以选择主题吗?

可以。先列出主题,再在创建任务时传主题 id。

一套 deck 要多久?

这是异步任务。轮询任务历史直到完成;长 deck 会比短 deck 慢。

会编辑我已有的 deck 吗?

不会。它从来源创建新 deck;编辑已有 deck 是另一套 workflow。

一套 deck 要花多少?

幻灯片生成按用量计费;当前费率在价格页面,prompt 会先请求确认。

来源可以复用吗?

可以。LiveDoc 保存来源,后续 deck 或 mindmap 可以复用它的 short_id。

相关 workflow

改成你的版本

同一套配方,按你实际的交付方式调整。

换成 PDF 来源

用 multipart 上传 PDF,平台会先存成 LiveDoc 资源。

指定主题

先列出可用主题,再在创建任务时传主题 id。

复用到下一套 deck

用同一个 LiveDoc short_id 创建新的 PPT 任务。

这套配方背后的参考页面,以及下一步可以看什么。