Felo API PlatformFelo API Platform

콘텐츠

청중이 실제로 묻는 질문으로 한 달 콘텐츠 채우기

Chat으로 주제를 정리하고, 청중이 X에서 묻는 질문을 찾고, 참고 영상 자막에서 실제 각도를 뽑아 모든 행에 증거를 적은 4주 콘텐츠 캘린더를 만듭니다.

소요 시간25분난이도중급업데이트2026-10-30
대상콘텐츠 리드소셜 운영자크리에이터

프롬프트 복사

대괄호 항목을 바꾼 뒤 Claude Code, Codex 또는 터미널에 접근할 수 있는 AI에 붙여넣으세요. Felo 스킬을 설치하고 크레딧을 쓰기 전에 확인한 뒤 워크플로를 실행합니다.

[주제]에 대해 [독자]를 위한 4주 콘텐츠를 계획해 주세요.

채널: [채널]. 허용 형식: [형식 목록]. 게시 요일: [요일]. 언어: [언어].
참고 영상(선택): [YouTube URL 또는 영상 ID]. 독자 질문 기간: 최근 [90]일.

Markdown 캘린더 표를 아이디어 하나당 한 행으로 작성해 주세요.
| 날짜 | 형식 | 작업 제목 | 관점 | 근거 |
- 날짜: 허용된 게시 요일을 사용해 앞으로 4주.
- 형식: 허용된 형식 중 하나.
- 작업 제목: 이 콘텐츠의 제목.
- 관점: 독자에게 하는 약속을 한 문장으로.
- 근거: 아이디어를 정당화하는 질문, 게시물, 페이지, 영상 타임스탬프.

표 뒤에 다음을 추가해 주세요.
1. 이번 달을 떠받치는 세 가지 테마.
2. 어떤 아이디어가 독자 질문에서 왔고, 어떤 것이 참고 영상에서 왔고, 어떤 것이 당신의 가설인지.
3. 각 글을 쓰기 전에 추가로 조사해야 할 것.
4. 링크와 날짜가 있는 출처 목록.

규칙:
- 이것들은 아이디어이지 보장이 아닙니다. 도달, 클릭, 순위, 성장을 약속하지 마세요.
- 트렌드, 검색량, 참여 수치, 인용을 지어내지 마세요.
- 모든 독자 질문을 날짜가 있는 게시물이나 페이지에 연결하세요. 근거가 약하면 아이디어를 가설로 표시하세요.
- 참고 영상은 실제로 다루는 관점에만 사용하고, 짧게 인용하며 타임스탬프를 붙이세요.
- 크레딧을 쓰기 전에 실행할 검색과 추출을 보여 주고 제 승인을 기다려 주세요.
- 게시물 예약, CMS 초안 생성, 게시를 하지 마세요.
- 결과를 ./content-calendar.md에 쓰고 채팅에서 요약해 주세요.

복사 내용에는 설치 단계와 안전 규칙도 포함됩니다.

완성되는 것

실행 시 예제 출력입니다. 실시간 생성이 아닙니다.

캘린더 예시(발췌)

콘텐츠 캘린더 — 예시 월

테마

  1. 청소 시간이 숨은 비용.
  2. 카운터 공간이 구매를 결정.
  3. 자가 구매 vs 선물 구매.

캘린더

날짜형식작업 제목각도근거
2026-11-02캐러셀5분 청소 테스트아무도 찍지 않는 청소 단계를 보여줌@example_home, 2026-10-24
2026-11-04숏폼카운터 공간 측정실제 카운터에서 차지하는 면적 비교참고 영상 — 42초
2026-11-09뉴스레터씰이 왜 망가지나구매자가 계속 보고하는 고장 모드를 설명@example_buyer, 2026-10-19

아이디어 출처

두 행은 날짜 있는 오디언스 질문에서, 한 행은 참고 영상에서 왔다. 가설 행이면 그렇게 라벨링한다.

먼저 조사할 것

반품률과 씰 교체 정책 — 위 출처 모두 다루지 않는다.

출처

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

실제 호출

개발자용: 같은 워크플로를 실행 순서대로 담은 복사 가능한 코드.

실제 API 호출 보기
  1. Chat으로 주제 정리하기

    이 주제에서 청중이 자주 궁금해하는 하위 주제를 Chat에 묻고 출처를 남깁니다.

    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);

    예제 출력

    {
      "answer": "Beginners ask about cleanup, counter space, and grind size …",
      "sources": [
        { "link": "https://example.com/guide", "title": "…", "snippet": "…" }
      ]
    }
  2. X에서 청중 질문 찾기

    주제 관련 질문을 X에서 검색하고 최근 90일로 제한해 계정과 날짜를 남깁니다.

    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;

    예제 출력

    { "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. 참고 영상 자막 가져오기

    YouTube Subtitling으로 관련 영상 자막을 가져와 재사용할 실제 각도를 찾습니다.

    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`,
    );

    예제 출력

    {
      "title": "Example Video Title",
      "contents": [
        { "text": "Subtitle text", "start": 42.3, "duration": 8.1 }
      ]
    }
  4. 4주 캘린더 구성하기

    날짜, 형식, 작업 제목, 각도, 증거를 Markdown 표로 만듭니다.

    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);

    예제 출력

    | 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. LiveDoc에 저장하기

    캘린더와 출처를 LiveDoc에 저장해 월말 회고에서 검색합니다.

    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));

    예제 출력

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

포함되는 것

  • Chat의 주제 지도
  • 날짜 있는 X 청중 질문
  • 참고 영상 자막과 각도
  • 4주 콘텐츠 캘린더
  • 계획과 출처를 저장하는 LiveDoc

하지 않는 것

  • 성과나 트래픽을 보장하지 않음
  • 과거 analytics를 읽지 않음
  • 게시물 전체 작성이나 자동 발행은 하지 않음
  • 참고 영상이 없으면 해당 단계 생략 가능
  • 캘린더는 제안이며 약속이 아님

자주 묻는 질문

캘린더 아이디어는 어디서 오나요?

Chat의 주제 지도, X의 실제 청중 질문, 참고 영상의 각도에서 옵니다. 각 항목은 증거 링크나 날짜를 유지합니다.

과거에 무엇이 잘됐는지 아나요?

모릅니다. analytics를 읽지 않으므로 과거 성과는 직접 보충해야 합니다.

게시물도 써 주나요?

아니요. 캘린더와 각도를 출력하고 작성은 당신이나 작성 agent가 합니다.

참고 영상이 없으면?

해당 단계를 생략하세요. 주제와 X 질문만으로도 캘린더를 지탱할 수 있습니다.

자동 예약 발행할 수 있나요?

아니요. 계획 파일만 만들며 예약 발행은 자체 도구로 합니다.

한 번 계획 비용은?

Chat, X 검색, 영상 자막은 사용량 기반 크레딧입니다. 현재 요금은 가격 페이지에 있고 프롬프트는 쓰기 전에 승인을 요청합니다.

관련 워크플로

내 방식으로 바꾸기

같은 레시피를 실제 배포 방식에 맞게 조정합니다.

2주만 계획하기

4주를 2주로 압축해 발행을 막 시작한 팀에 맞춥니다.

채널별로 나누기

뉴스레터, X, YouTube를 열로 나눠 같은 주제를 다른 형식으로 만듭니다.

제품 출시일 넣기

출시일과 이벤트 날짜를 고정 행으로 두고 주변 콘텐츠를 채웁니다.

이 레시피의 배경이 되는 참고 페이지와 다음에 볼 곳.