Felo API PlatformFelo API Platform

內容

做一份團隊真的會讀的每日 AI 新聞簡報

先拿有來源的新聞匯總,再加入實務者在 X 上的討論,拉一條影片轉錄,最後用 Markdown 寫成一期簡報並存進 LiveDoc。

建置時間25 分鐘難度進階更新於2026-10-29
適合誰行銷與成長創作者產品行銷

複製 prompt

把方括號裡的欄位替換掉,然後貼到 Claude Code、Codex 或任何能存取終端機的 AI。它會安裝 Felo skill、在花額度前詢問,並執行這套工作流程。

為[產業或主題]製作一份每日產業簡報。

時間範圍:過去 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]

接下來關注

工具使用的獨立評測,以及發布週後價格是否維持。

實際呼叫

給開發者:同一套工作流程的可複製程式碼,依執行順序排列。

展開實際 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 會先請求確認。

相關工作流程

改成你的版本

同一套配方,依你實際的交付方式調整。

只做某一個細分

把主題縮到 AI 程式設計、AI 影片或 AI 搜尋,簡報會更有針對性。

加一個「本週變化」段落

把上一期 LiveDoc 檢索出來,對比本週新增了什麼。

改成週報

把排程改成每週一次,減少每天的資訊噪音。

這套配方背後的參考頁面,以及下一步可以看什麼。