Felo API PlatformFelo API Platform

Content

Sozialgespräche in ein wöchentliches Listening-Briefing verwandeln

Suche die X-Posts der letzten Woche zu Marke und Wettbewerbern, ergänze belegten Web-Kontext, lies die Seiten dahinter und archiviere jede Ausgabe, damit die nächste Woche mit Bekanntem beginnt.

Dauer25 MinutenLevelFortgeschrittenAktualisiert2026-10-30
Für wenMarke & KommunikationProduktmarketingCommunity-Management

Prompt kopieren

Ersetze die Felder in eckigen Klammern und füge den Prompt in Claude Code, Codex oder eine KI mit Terminalzugriff ein. Sie installiert den Felo-Skill, fragt vor Credits und führt den Workflow aus.

Führe ein Social-Listening-Briefing zu [Marke, Produkt oder Kategorie] durch.

Beobachtungsbegriffe: [Marke], [Produktname], [Wettbewerbernamen], [Kategorie-Keywords].
Zeitraum: letzte [7 / 14] Tage. Zeitzone: [Zeitzone]. Zielgruppe: [Team].
Erlaubte Quellen: nur öffentliche X-Beiträge und öffentliche Webseiten.

Erstelle:
1. Eine fünfzeilige Zusammenfassung, was sich im Gespräch verändert hat.
2. Themen mit dem, was Menschen sagen, den stützenden Beiträgen und dem abgedeckten Zeitraum.
3. Wettbewerbsnennungen: wer empfohlen wird und in welchem Kontext.
4. Risiken: Beschwerden, Ausfälle, wiederkehrende Fragen oder Gegenwind.
5. Nächste Schritte, geteilt in „jetzt antworten“, „beobachten“ und „an das Produkt geben“.
6. Eine Quellenliste mit jeder Beitrags- und Seiten-URL und ihrem Datum.

Regeln:
- Melde nur Beiträge und Seiten, die die API zurückgibt. Erfinde niemals Sentiment-Scores, Engagement-Zahlen, Zitate oder Quellen.
- Behandle X als Signal, nicht als repräsentative Umfrage. Sage es, wenn die Stichprobe zu klein für Schlüsse ist.
- Trenne die Worte des Kunden von deiner Zusammenfassung und zitiere kurz mit Link.
- Löse den Zeitraum in explizite Start- und Enddaten auf und nenne die Zeitzone.
- Bevor Credits verbraucht werden, zeige die geplanten Suchen und Extraktionen und warte auf meine Freigabe.
- Antworte nicht, poste nicht, folge nicht und schreibe niemandem. Dieses Briefing ist schreibgeschützt.
- Schreibe das Ergebnis nach ./social-listening.md und fasse es im Chat zusammen.

Die Kopie enthält auch die Installationsschritte und Sicherheitsregeln.

Das bekommst du

Beispielausgabe eines Laufs. Keine Live-Generierung.

Beispiel-Briefing (Auszug)

Social-Listening-Briefing — 2026-10-30

Was sich geändert hat

  • Beschwerden über den Export-Flow sind jetzt das Top-Thema.
  • In Preis-Threads wird ein günstigerer Rivale empfohlen.
  • Der Ausfall vom 2026-10-27 wird nicht mehr erwähnt.

Themen

  1. Exporte sind seit dem Update langsam — @example_dev: „Der Export-Button braucht jetzt Minuten für ein 40-Seiten-Dokument.“ (2026-10-28); @example_ops: „Sehen andere Exporte am Monatsende in der Queue?“ (2026-10-29)
  2. Eine günstigere Alternative wird empfohlen — Example Rival taucht in Threads auf, in denen nach einem niedrigeren Preis gefragt wird

Wettbewerber

Example Rival wird empfohlen, wenn nach einer günstigeren Alternative gefragt wird; die Empfehlung betrifft den Preis, nicht die Funktionen.

Risiken

Die Export-Beschwerde taucht in supportnahen Threads auf und könnte Abwanderungsgespräche erreichen.

Nächste Schritte

  • Jetzt antworten: der Export-Thread vom 2026-10-28.
  • Beobachten: ob sich die Beschwerde auf das API-Publikum ausbreitet.
  • An das Produkt geben: Export-Latenz am Monatsende.

Quellen

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

Die konkreten Aufrufe

Für Entwickler: derselbe Workflow als kopierbarer Code in Ausführungsreihenfolge.

Konkrete API-Aufrufe zeigen
  1. Posts der Woche suchen

    Suche mit X Search nach Marke und Wettbewerbern in den letzten 7 Tagen und behalte Konten und Daten.

    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;

    Beispielausgabe

    { "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. Belegten Web-Kontext ergänzen

    Frage Chat nach dem Kontext der Diskussionen und hole eine belegte Seitenliste.

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

    Beispielausgabe

    {
      "answer": "The main threads are …",
      "sources": [
        { "link": "https://example.com/thread", "title": "…", "snippet": "…" }
      ]
    }
  3. Die Seiten dahinter lesen

    Lies mit Web Fetch die zwei oder drei relevantesten Seiten und ergänze Fakten und Links.

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

    Beispielausgabe

    // pages[0].content
    "# Example thread summary\n\nExtracted page content…"
  4. Wochenbericht nach Themen schreiben

    Gliedere Markdown nach Themen, repräsentativen Posts, Kontext, Risiken und Fokuspunkten.

    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. Archivieren und mit Vorwoche vergleichen

    Speichere Bericht und Quellen im LiveDoc und suche in der nächsten Woche die Vorausgabe zum Vergleich.

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

    Beispielausgabe

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

Enthalten

  • Datierte X-Posts der Woche
  • Belegter Web-Kontext
  • Nach Themen gruppierte Zusammenfassung
  • Direkt teilbarer Wochenbericht
  • LiveDoc mit jeder Ausgabe

Was es nicht macht

  • X-Abdeckung ist unvollständig und repräsentiert nicht alle Nutzer
  • Keine eindeutigen Stimmungsaussagen
  • Postet oder antwortet nicht automatisch
  • Keine DMs oder privaten Communities
  • Ein Lauf pro Woche; Zeitplanung übernimmt dein Agent oder cron

Fragen

Was zählt als Quelle im Briefing?

Jeder X-Post behält Link, Konto und Datum; Web-Kontext kommt aus öffentlichen Chat- und Web-Fetch-Seiten. Aussagen ohne Quelle werden nicht aufgenommen.

Kann ich Wettbewerber mitverfolgen?

Ja. Suche Marke und Wettbewerber zusammen und gruppiere sie im Bericht.

Misst es Stimmung?

Es fasst Themen und Ton zusammen, markiert das aber als redaktionelle Einschätzung und behauptet keinen genauen Stimmungsanteil.

Wie weit reicht der Blick?

Standard sind die letzten 7 Tage für den Wochenbericht; für ein größeres Fenster ändere `since_time`.

Kann es wöchentlich laufen?

Ja. Setze denselben Prompt in cron oder einen Agent-Scheduler und schreibe in dasselbe LiveDoc.

Was kostet ein Briefing?

X Search, Chat und Seitenextraktion werden nutzungsbasiert abgerechnet; aktuelle Preise stehen auf der Preisseite, und der Prompt fragt vor Ausgaben nach Bestätigung.

Verwandte Workflows

Mach es zu deinem

Dasselbe Rezept, angepasst an deinen tatsächlichen Ablauf.

Nur ein Thema

Beschränke dich auf einen Launch oder eine Debatte, damit das Briefing fokussiert bleibt.

YouTube-Meinungen ergänzen

Ergänze ein Video-Transkript, markiere es aber als persönliche Erfahrung.

Monatsbericht daraus machen

Stelle die Frequenz auf monatlich um und bediene Marke und PR.

Die Referenzseiten hinter diesem Rezept und die nächsten Schritte.