Felo API PlatformFelo API Platform

Obsah

Proměňte sociální konverzace v týdenní brief naslouchání

Najděte posty X z tohoto týdne o značce a konkurentech, přidejte kontext webu se zdroji, přečtěte stránky za ním a archivujte každé vydání, aby další týden startoval od známého.

Čas25 minutÚroveňStředníAktualizováno2026-10-30
Pro kohoZnačka a komunikaceProduct marketingSpráva komunity

Zkopírovat prompt

Nahraďte pole v hranatých závorkách a vložte do Claude Code, Codex nebo AI s přístupem k terminálu. Nainstaluje skill Felo, zeptá se před utracením kreditů a spustí workflow.

Proveď social listening briefing pro [značka, produkt nebo kategorie].

Sledované výrazy: [značka], [název produktu], [názvy konkurentů], [klíčová slova kategorie].
Období: posledních [7 / 14] dní. Časové pásmo: [pásmo]. Publikum: [tým].
Povolené zdroje: pouze veřejné příspěvky X a veřejné webové stránky.

Vytvoř:
1. Pětřádkové shrnutí toho, co se v konverzaci změnilo.
2. Témata, každé s tím, co lidé říkají, příspěvky, které to podporují, a obdobím, které pokrývají.
3. Zmínky o konkurentech: kdo je doporučován a v jakém kontextu.
4. Rizika: stížnosti, výpadky, opakované otázky nebo negativní reakce.
5. Další kroky rozdělené na „odpovědět hned“, „sledovat“ a „předat produktu“.
6. Seznam zdrojů s každým příspěvkem a stránkou, URL a datem.

Pravidla:
- Reportuj jen příspěvky a stránky, které vrací API. Nikdy si nevymýšlej skóre sentimentu, čísla engagementu, citace ani zdroje.
- X ber jako signál, ne reprezentativní průzkum. Řekni, když je vzorek příliš malý na závěr.
- Odděluj slova zákazníka od svého shrnutí a cituj krátce s odkazem.
- Přveď období na konkrétní počáteční a koncové datum a uveď časové pásmo.
- Než utratíš kredity, ukaž plánovaná vyhledávání a extrakce a počkej na mé schválení.
- Neodpovídej, nepublikuj, nesleduj a nikomu nepiš. Tento briefing je pouze ke čtení.
- Výsledek zapiš do ./social-listening.md a shrň ho v chatu.

Kopie obsahuje i instalační kroky a bezpečnostní pravidla.

Co dostanete

Ukázkový výstup jednoho běhu. Ne živé generování.

Ukázkový briefing (výňatek)

Briefing social listening — 2026-10-30

Co se změnilo

  • Stížnosti na exportní tok jsou nyní hlavní téma.
  • V cenových vláknech je doporučován levnější rival.
  • Výpadek z 2026-10-27 už není zmiňován.

Témata

  1. Export je od aktualizace pomalý — @example_dev: „Tlačítko exportu teď u dokumentu na 40 stran trvá minuty.” (2026-10-28); @example_ops: „Vidí někdo na konci měsíce exporty ve frontě?” (2026-10-29)
  2. Doporučuje se levnější alternativa — Example Rival se objevuje ve vláknech, kde lidé žádají nižší cenu

Konkurence

Example Rival je doporučován, když lidé chtějí levnější alternativu; doporučení je o ceně, ne o funkcích.

Rizika

Stížnost na export se objevuje ve vláknech blízko podpory a může se dostat do rozhovorů o odchodu.

Další kroky

  • Odpovědět hned: exportní vlákno z 2026-10-28.
  • Sledovat: zda se stížnost šíří k publiku API.
  • Předat produktu: latence exportu na konci měsíce.

Zdroje

  • https://x.com/example_dev/status/... — 2026-10-28
  • https://example.com/export-thread — 2026-10-29

Přesná volání

Pro vývojáře: stejný workflow jako kód, v pořadí provádění.

Zobrazit skutečná API volání
  1. Najděte posty z týdne

    Použijte X Search pro značku a konkurenty za posledních 7 dní, držte účty a data.

    listening.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 XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
          metrics: { retweet_count: number; favorite_count: number; reply_count: number };
          url: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000);
    
    const search = await felo<XData>("/v2/x/tweet/search", {
      query: '"Acme" OR "Acme app"',
      limit: 50,
      since_time: since,
    });
    
    const posts = search.data.tweets;

    Ukázkový výstup

    { "data": { "tweets": [
      {
        "content": "The export flow is slow again.",
        "author": { "username": "example_dev" },
        "created_at": "2026-10-28T09:14:00Z",
        "metrics": { "retweet_count": 4, "favorite_count": 21, "reply_count": 6 },
        "url": "https://x.com/example_dev/status/..."
      }
    ] } }
  2. Přidejte kontext webu se zdroji

    Zeptejte se Chat na kontext diskusí a vezměte seznam stránek se zdroji.

    listening.ts
    type ChatData = {
      data: {
        answer: string;
        resources: { link: string; title: string; snippet: string }[];
      };
    };
    
    const context = await felo<ChatData>("/v2/chat", {
      query: "Recent customer complaints and competitor mentions around Acme",
    });
    
    const sources = context.data.resources.slice(0, 5);

    Ukázkový výstup

    {
      "answer": "The main threads are …",
      "sources": [
        { "link": "https://example.com/thread", "title": "…", "snippet": "…" }
      ]
    }
  3. Přečtěte stránky za nimi

    Přes Web Fetch přečtěte dvě nebo tři nejrelevantnější stránky a přidejte fakta a odkazy.

    listening.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      sources.slice(0, 3).map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
          with_cache: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    Ukázkový výstup

    // pages[0].content
    "# Example thread summary\n\nExtracted page content…"
  4. Napište report podle témat

    Sestavte Markdown s tématy, reprezentativními posty, kontextem, riziky a body pozornosti.

    listening.ts
    const date = new Date().toISOString().slice(0, 10);
    
    const ranked = [...posts].sort(
      (a, b) => b.metrics.favorite_count - a.metrics.favorite_count,
    );
    
    const brief = [
      `# Social listening brief — ${date}`,
      "",
      "## What the web says",
      context.data.answer,
      "",
      "## What people are posting",
      ...ranked.slice(0, 10).map(
        (post) =>
          `- @${post.author.username} (${post.created_at.slice(0, 10)}): ${post.content}\n  ${post.url}`,
      ),
      "",
      "## Pages behind the answer",
      ...pages.map((page) => `- [${page.title}](${page.link})`),
      "",
      "## Sources",
      ...sources.map((source) => `- [${source.title}](${source.link})`),
    ].join("\n");
    
    console.log(brief);
  5. Archivujte a porovnejte s minulým týdnem

    Uložte report a zdroje do LiveDoc, další týden najděte předchozí vydání.

    listening.ts
    type LiveDocData = { data: { short_id: string } };
    
    const archive = await felo<LiveDocData>("/v2/livedocs", {
      name: "Social listening archive",
      description: "One document resource per weekly brief",
    });
    
    await felo(`/v2/livedocs/${archive.data.short_id}/resources/doc`, {
      title: `Social listening — ${date}`,
      content: brief,
    });
    
    type Retrieved = { data: { title: string; content: string; score: number }[] };
    
    const previous = await felo<Retrieved>(
      `/v2/livedocs/${archive.data.short_id}/resources/retrieve`,
      { query: "what changed since last week" },
    ).then((res) => res.data.filter((hit) => hit.score >= 0.7));

    Ukázkový výstup

    [
      { "title": "Social listening — 2026-10-23", "content": "…", "score": 0.88 }
    ]

Co obsahuje

  • Datované posty X z týdne
  • Kontext webu se zdroji
  • Souhrn diskusí podle témat
  • Týdenní report připravený ke sdílení
  • LiveDoc s každým vydáním

Co nedělá

  • Pokrytí X je neúplné a nereprezentuje všechny uživatele
  • Bez konečných závěrů o sentimentu
  • Nepublikuje ani neodpovídá automaticky
  • Bez DM a privátních komunit
  • Jeden běh týdně; plánování patří agentovi nebo cronu

Otázky

Co se počítá jako zdroj?

Každý post X drží odkaz, účet a datum; kontext webu pochází z veřejných stránek Chat a Web Fetch. Tvrzení bez zdroje nevstupují.

Lze sledovat konkurenty?

Ano. Hledejte značku a konkurenty společně a seskupujte v reportu.

Měří sentiment?

Shrnuje témata a tón, ale označuje to jako redakční úsudek a netvrdí přesné procento sentimentu.

Jak daleko se dívá?

Výchozích posledních 7 dní pro týdenní report; pro větší okno změňte `since_time`.

Lze spouštět každý týden?

Ano. Dejte stejný prompt do cronu nebo plánovače agenta a pište do stejného LiveDoc.

Kolik stojí jeden brief?

X Search, Chat a extrakce stránek se účtují podle užití; aktuální sazby na stránce cen a prompt žádá schválení před útratou.

Související workflowy

Přizpůsobte

Stejný recept, upravený podle toho, jak skutečně dodáváte.

Jen jedno téma

Omezte na jeden launch nebo spor, aby se brief soustředil.

Přidejte názory z YouTube

Doplňte transkriptem videa, ale označte jako osobní zkušenost.

Udělejte měsíční

Změňte frekvenci na měsíční pro značku a PR.

Referenční stránky za tímto receptem a další kroky.