Felo API PlatformFelo API Platform

内容

做一份团队真的会读的每日 AI 新闻简报

先拿有来源的新闻汇总,再加入实践者在 X 上的讨论,拉一条视频转录,最后用 Markdown 写成一期简报并存进 LiveDoc。

构建时间25 分钟难度进阶更新于2026-10-29
适合谁市场与增长创作者产品市场

复制 prompt

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

为[行业或主题]制作一份每日行业简报。

时间范围:过去 24 小时,时区[时区]。读者:[读者]。
关注列表(可选):X [账号或主题]、YouTube [频道]、Reddit [社区]。

挑选 5–8 条真正重要的内容。每条写:发生了什么、为什么重要、来源链接,以及它属于公告、结果还是观点。

章节:
1. 头条。
2. 5–8 条内容,每条附来源链接。
3. X 上大家在说什么,附账号和日期。
4. 一条带时间戳的视频引文。
5. 接下来关注什么。

规则:
- 每条都附链接。合并重复报道,保留最好的来源。
- 区分公告和独立结果;给厂商主张加标签。
- 只报告来源返回的指标。数据缺失时写“暂无数据”,不要写零。
- 如果没有重要事件,直接说明,不要为凑篇幅而填充。
- 消耗额度前,先展示计划执行的 API 调用并等待我批准。
- 不要排期、发布或发送任何内容。
- 将结果写入 ./daily-brief.md,并在对话中总结。

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

你会得到什么

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

期号示例(节选)

AI 行业简报 — 2026-10-30

头条

一家大型实验室发布了一款更小的模型,其工具使用基准分数与旗舰相同。厂商主张;独立结果仍待公布。

条目

  1. 小模型,同分 — 厂商基准,尚未复现。[来源]
  2. 智能体框架发布 — 新的追踪和重试控制。[来源]

大家在说什么

@example_dev:“赢的是延迟,不是分数。” — 2026-10-30 08:12 JST

一条视频引文

“我们不再测 token,开始测已解决工单。” — [12:40]

接下来关注

工具使用的独立评测,以及发布周后价格是否维持。

实际调用

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

展开实际 API 调用
  1. 先做有来源的新闻汇总

    用 Chat 问过去 24 小时的 AI 新闻,保留它引用的来源和日期。

    digest.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 roundup = await felo<ChatData>("/v2/chat", {
      query: "Biggest AI news stories in the last 24 hours",
    });
    
    const sources = roundup.data.resources.slice(0, 5);

    示例输出

    {
      "answer": "The main stories today are …",
      "sources": [
        { "link": "https://example.com/story", "title": "…", "snippet": "…" }
      ]
    }
  2. 加入实践者讨论

    在 X 搜同一话题,收集带账号和日期的实践者帖子。

    digest.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
          metrics: { retweet_count: number; favorite_count: number };
        }[];
        next_cursor: string | null;
        has_next: boolean;
      };
    };
    
    const since = Math.floor((Date.now() - 24 * 60 * 60 * 1000) / 1000);
    
    const social = await felo<XData>("/v2/x/tweet/search", {
      query: "AI agents",
      limit: 20,
      since_time: since,
    });
    
    const posts = social.data.tweets
      .filter((tweet) => tweet.metrics.favorite_count >= 50)
      .slice(0, 3);

    示例输出

    { "data": { "tweets": [
      {
        "content": "…",
        "author": { "username": "…" },
        "created_at": "2026-10-29T02:14:00Z",
        "metrics": { "retweet_count": 12, "favorite_count": 180 }
      }
    ] } }
  3. 拉一条视频转录

    用 YouTube Subtitling 拉一条相关视频的转录,挑一条带时间戳的引语。

    digest.ts
    type SubtitleData = {
      data: {
        title: string;
        contents: { text: string; start: number; duration: number }[];
      };
    };
    
    const videoCode = "dQw4w9WgXcQ"; // replace with today's video id
    
    const video = await felo<SubtitleData>(
      `/v2/youtube/subtitling?video_code=${videoCode}&language=en&with_time=true`,
    );
    
    const transcript = video.data.contents.map((line) => line.text).join(" ");

    示例输出

    {
      "title": "Example Video Title",
      "contents": [
        { "text": "Subtitle text", "start": 0.32, "duration": 14.26 }
      ]
    }
  4. 写成 Markdown 简报

    按“重点新闻 / 实践者反应 / 视频引语 / 下一步关注”组织内容。

    digest.ts
    const date = new Date().toISOString().slice(0, 10);
    
    const issue = [
      `# AI digest — ${date}`,
      "",
      "## The roundup",
      roundup.data.answer,
      "",
      "## What practitioners are posting",
      ...posts.map((post) => `- @${post.author.username}: ${post.content}`),
      "",
      "## From the video",
      transcript.slice(0, 1200),
      "",
      "## Sources",
      ...sources.map((source) => `- [${source.title}](${source.link})`),
    ].join("\n");
    
    console.log(issue);
  5. 归档到 LiveDoc

    把这一期和来源存进 LiveDoc,下一期可以检索历史。

    digest.ts
    type LiveDocData = { data: { short_id: string } };
    
    const archive = await felo<LiveDocData>("/v2/livedocs", {
      name: "AI digest archive",
      description: "One document resource per daily issue",
    });
    
    await felo(`/v2/livedocs/${archive.data.short_id}/resources/doc`, {
      title: `AI digest — ${date}`,
      content: issue,
    });
    
    type Retrieved = { data: { title: string; content: string; score: number }[] };
    
    const past = await felo<Retrieved>(
      `/v2/livedocs/${archive.data.short_id}/resources/retrieve`,
      { query: "what did we say about agent frameworks last month" },
    ).then((res) => res.data.filter((hit) => hit.score >= 0.7));

    示例输出

    [
      { "title": "AI digest — 2026-10-01", "content": "…", "score": 0.88 }
    ]

包含什么

  • 有来源的新闻汇总和链接
  • X 上带账号和日期的实践者讨论
  • 一条带时间戳的视频引语
  • 保存每一期、可语义检索的 LiveDoc

不做什么

  • 只覆盖公开来源;付费墙内容可能缺失
  • X 只作为信号,不代表完整舆情
  • 不自动发布或发送简报
  • 视频需要已有字幕
  • 每天运行一次,调度由你的 agent 或 cron 负责

常见问题

来源可靠吗?

每条新闻都带来源链接和发布日期;X 帖子额外带账号和时间戳。简报不会把未核实的内容写成事实。

可以换成其他行业吗?

可以。把主题占位符换成你的行业,来源和 X 搜索词跟着调整。

为什么需要视频?

视频提供一条带时间戳的实践者观点,让简报不只有新闻标题。没有字幕的视频会跳过。

会自动发到 Slack 吗?

不会。它生成 Markdown 文件;发送需要你自己的集成。

可以保存历史吗?

可以。LiveDoc 会保留每一期,之后可以检索过去几周的报道。

一次要花多少?

Chat、X 搜索、视频转录都按用量计费;当前费率在价格页面,prompt 会先请求确认。

相关 workflow

改成你的版本

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

只做某一个细分

把主题缩到 AI 编程、AI 视频或 AI 搜索,简报会更有针对性。

加一个“本周变化”段落

把上一期 LiveDoc 检索出来,对比本周新增了什么。

改成周报

把调度改成每周一次,减少每天的信息噪音。

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