Felo API PlatformFelo API Platform

Nội dung

Lấp một tháng nội dung bằng câu hỏi của khán giả

Lập bản đồ chủ đề với Chat, tìm câu hỏi khán giả trên X, lấy góc thật từ bản ghi video và dựng lịch bốn tuần nơi mỗi dòng nêu bằng chứng.

Thời gian25 phútMứcTrung cấpCập nhật2026-10-30
Dành cho aiContent leadSocial mediaCreator

Sao chép prompt

Thay các trường trong ngoặc vuông rồi dán vào Claude Code, Codex hoặc AI có quyền truy cập terminal. Nó cài skill Felo, hỏi trước khi dùng credit và chạy quy trình.

Lập kế hoạch bốn tuần nội dung về [chủ đề] cho [độc giả].

Kênh: [kênh]. Định dạng được phép: [danh sách]. Ngày đăng: [ngày]. Ngôn ngữ: [ngôn ngữ].
Video tham chiếu (tùy chọn): [URL YouTube hoặc ID video]. Khung thời gian cho câu hỏi độc giả: [90] ngày qua.

Tạo bảng lịch Markdown với một dòng cho mỗi ý tưởng:
| Ngày | Định dạng | Tiêu đề tạm | Góc tiếp cận | Bằng chứng |
- Ngày: bốn tuần tới, vào các ngày được phép.
- Định dạng: một trong các định dạng được phép.
- Tiêu đề tạm: tên của nội dung.
- Góc tiếp cận: lời hứa với độc giả trong một câu.
- Bằng chứng: câu hỏi, bài đăng, trang hoặc mốc thời gian video biện minh cho ý tưởng.

Sau bảng, thêm:
1. Ba chủ đề làm nền cho tháng.
2. Ý tưởng nào đến từ câu hỏi độc giả, ý nào từ video tham chiếu, ý nào là giả thuyết của bạn.
3. Những gì cần nghiên cứu trước khi viết từng nội dung.
4. Danh sách nguồn kèm liên kết và ngày.

Quy tắc:
- Đây là ý tưởng, không phải bảo đảm. Không bao giờ hứa về độ phủ, lượt nhấp, thứ hạng hay tăng trưởng.
- Không bịa xu hướng, lượng tìm kiếm, số tương tác hay trích dẫn.
- Gắn mỗi câu hỏi độc giả với bài đăng hoặc trang có ngày. Nếu bằng chứng mỏng, ghi ý tưởng là giả thuyết.
- Chỉ dùng video tham chiếu cho các góc nó thực sự bao phủ; trích ngắn kèm mốc thời gian.
- Trước khi tiêu tín dụng, hiển thị các tìm kiếm và trích xuất dự định và chờ tôi phê duyệt.
- Không lên lịch bài, không tạo bản nháp trong CMS và không công bố gì.
- Ghi kết quả vào ./content-calendar.md và tóm tắt trong chat.

Bản sao cũng gồm các bước cài đặt và quy tắc an toàn.

Bạn nhận được gì

Kết quả mẫu của một lần chạy. Không phải tạo trực tiếp.

Ví dụ lịch (trích)

Lịch nội dung — tháng ví dụ

Chủ đề

  1. Thời gian vệ sinh là chi phí ẩn.
  2. Không gian mặt bàn quyết định mua.
  3. Mua cho mình vs mua làm quà.

Lịch

NgàyĐịnh dạngTiêu đề tạmGócBằng chứng
2026-11-02CarouselBài kiểm tra vệ sinh 5 phútCho thấy bước vệ sinh không ai quay@example_home, 2026-10-24
2026-11-04Video ngắnKhông gian mặt bàn, đo đượcSo sánh dấu chân trên mặt bàn thậtVideo tham chiếu — 42 giây
2026-11-09Bản tinVì sao gioăng hỏngGiải thích kiểu hỏng người mua liên tục báo@example_buyer, 2026-10-19

Ý tưởng đến từ đâu

Hai dòng từ câu hỏi có ngày của độc giả, một từ video tham chiếu; dòng giả thuyết sẽ được ghi nhãn.

Cần nghiên cứu trước

Tỷ lệ trả hàng và chính sách thay gioăng — nguồn trên không đề cập.

Nguồn

  • https://example.com/category-guide — 2026-10-12
  • https://x.com/example_home/status/... — 2026-10-24

Các lệnh gọi chính xác

Dành cho lập trình viên: cùng quy trình dưới dạng mã, theo thứ tự chạy.

Hiện lệnh gọi API thật
  1. Lập bản đồ chủ đề với Chat

    Hỏi Chat các chủ đề phụ khán giả tìm nhiều nhất và giữ nguồn.

    calendar.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 topic = "portable espresso makers";
    const audience = "home espresso beginners";
    
    const themes = await felo<ChatData>("/v2/chat", {
      query: `Themes, recurring questions, and content gaps around ${topic} for ${audience}`,
    });
    
    const sources = themes.data.resources.slice(0, 5);

    Kết quả mẫu

    {
      "answer": "Beginners ask about cleanup, counter space, and grind size …",
      "sources": [
        { "link": "https://example.com/guide", "title": "…", "snippet": "…" }
      ]
    }
  2. Tìm câu hỏi khán giả trên X

    Tìm câu hỏi liên quan chủ đề trên X trong 90 ngày, giữ tài khoản và ngày.

    calendar.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
          url: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000);
    
    const questions = await felo<XData>("/v2/x/tweet/search", {
      query: `"${topic}" (recommend OR beginner OR how)`,
      limit: 50,
      since_time: since,
    });
    
    const asked = questions.data.tweets;

    Kết quả mẫu

    { "data": { "tweets": [
      {
        "content": "How do you clean one of these without taking it apart?",
        "author": { "username": "example_home" },
        "created_at": "2026-10-24T11:30:00Z",
        "url": "https://x.com/example_home/status/..."
      }
    ] } }
  3. Lấy bản ghi tham chiếu

    Dùng YouTube Subtitling lấy bản ghi và tìm góc thật dùng lại được.

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

    Kết quả mẫu

    {
      "title": "Example Video Title",
      "contents": [
        { "text": "Subtitle text", "start": 42.3, "duration": 8.1 }
      ]
    }
  4. Dựng lịch bốn tuần

    Tạo bảng Markdown với ngày, định dạng, tiêu đề tạm, góc và bằng chứng.

    calendar.ts
    const start = new Date();
    const day = (offset: number) => {
      const date = new Date(start);
      date.setDate(date.getDate() + offset);
      return date.toISOString().slice(0, 10);
    };
    
    type Idea = {
      dayOffset: number;
      format: string;
      title: string;
      angle: string;
      evidence: string;
    };
    
    // Rows come from the themes, the dated questions, and the transcript.
    const anchor = video.data.contents[0];
    
    const ideas: Idea[] = [
      {
        dayOffset: 1,
        format: "carousel",
        title: "The 5-minute cleanup test",
        angle: "Show the cleanup step nobody films",
        evidence: asked[0]?.url ?? "hypothesis",
      },
      {
        dayOffset: 3,
        format: "short video",
        title: "Counter space, measured",
        angle: "Compare footprints on one real counter",
        evidence: anchor
          ? `${video.data.title} — ${Math.round(anchor.start)}s`
          : video.data.title,
      },
    ];
    
    const calendar = [
      "| Date | Format | Working title | Angle | Evidence |",
      "| --- | --- | --- | --- | --- |",
      ...ideas.map(
        (idea) =>
          `| ${day(idea.dayOffset)} | ${idea.format} | ${idea.title} | ${idea.angle} | ${idea.evidence} |`,
      ),
    ].join("\n");
    
    console.log(calendar);

    Kết quả mẫu

    | Date | Format | Working title | Angle | Evidence |
    | --- | --- | --- | --- | --- |
    | 2026-11-02 | carousel | The 5-minute cleanup test | Show the cleanup step nobody films | https://x.com/example_home/status/... |
    | 2026-11-04 | short video | Counter space, measured | Compare footprints on one real counter | Example Video Title — 42s |
  5. Lưu vào LiveDoc

    Lưu lịch và nguồn trong LiveDoc để xem lại cuối tháng.

    calendar.ts
    type LiveDocData = { data: { short_id: string } };
    
    const plan = await felo<LiveDocData>("/v2/livedocs", {
      name: `Content calendar: ${topic}`,
      description: "Monthly plan with themes, calendar rows, and evidence",
    });
    
    await felo(`/v2/livedocs/${plan.data.short_id}/resources/urls`, {
      urls: sources.map((source) => ({ url: source.link, title: source.title })),
    });
    
    await felo(`/v2/livedocs/${plan.data.short_id}/resources/doc`, {
      title: `Content calendar — ${day(0).slice(0, 7)}`,
      content: calendar,
    });
    
    type Retrieved = { data: { title: string; content: string; score: number }[] };
    
    const lastMonth = await felo<Retrieved>(
      `/v2/livedocs/${plan.data.short_id}/resources/retrieve`,
      { query: "what did we plan last month" },
    ).then((res) => res.data.filter((hit) => hit.score >= 0.7));

    Kết quả mẫu

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Bao gồm

  • Bản đồ chủ đề từ Chat
  • Câu hỏi khán giả có ngày trên X
  • Bản ghi và góc của video tham chiếu
  • Lịch nội dung bốn tuần
  • LiveDoc với kế hoạch và nguồn

Không làm gì

  • Không dự đoán hiệu suất hay bảo đảm traffic
  • Không đọc analytics lịch sử của bạn
  • Không viết toàn bộ bài và không đăng
  • Không có video tham chiếu thì có thể bỏ bước
  • Lịch là đề xuất, không phải lời hứa

Câu hỏi

Ý tưởng đến từ đâu?

Từ bản đồ chủ đề của Chat, câu hỏi thật của khán giả trên X và góc của video tham chiếu. Mỗi mục giữ liên kết hoặc ngày bằng chứng.

Có biết điều gì từng hiệu quả không?

Không. Nó không đọc analytics; kết quả lịch sử do bạn thêm.

Có viết bài không?

Không. Nó giao lịch và góc; việc viết do bạn hoặc writing agent.

Không có video tham chiếu thì sao?

Bỏ bước đó; chủ đề và câu hỏi X vẫn đủ chống lịch.

Có lên lịch đăng tự động không?

Không. Nó tạo tệp kế hoạch; lịch đăng nằm ở công cụ của bạn.

Một lần lập kế hoạch tốn bao nhiêu?

Chat, X Search và bản ghi video tính theo mức dùng; giá hiện tại ở trang giá và prompt hỏi duyệt trước khi chi.

Quy trình liên quan

Tùy biến

Cùng công thức, điều chỉnh theo cách bạn thực sự triển khai.

Chỉ hai tuần

Nén bốn tuần thành hai cho nhóm mới bắt đầu.

Tách theo kênh

Tạo cột newsletter, X và YouTube với cùng chủ đề ở định dạng khác.

Thêm ra mắt sản phẩm

Đặt ngày ra mắt làm dòng cố định và lấp nội dung xung quanh.

Các trang tham chiếu đằng sau công thức và nơi đi tiếp.