Research
Eine Frage in ein belegtes Research-Briefing verwandeln
Frage das Web, speichere die Seiten hinter der Antwort als Markdown, ergänze, was Praktiker auf X sagen, und halte die Belege in einem LiveDoc fest, das du später erneut durchsuchen kannst.
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.
Erstelle ein belegtes Recherche-Briefing zu [Frage oder Entscheidung]. Umfang: [Markt, Region, Sprache]. Zeitraum: [letzte 30 Tage / letzte 12 Monate]. Zielgruppe: [wer es liest]. Tiefe: [Ein-Seiten-Überblick / vollständiges Briefing]. Erstelle ein Markdown-Briefing mit: 1. Einer kurzen Antwort in drei Stichpunkten. 2. Einer Evidenztabelle: Aussage, Quellentitel, URL, Veröffentlichungsdatum. 3. Wo die Quellen widersprüchlich sind. 4. Was noch unbekannt ist. 5. Einer vollständigen Quellenliste. Regeln: - Jede Tatsachenbehauptung braucht einen Quellenlink. Trenne Fakten, Meinungen und deine Schlussfolgerungen. - Erfinde niemals Zitate, Kennzahlen, Daten oder Quellen. Fehlende Daten heißen „Nicht verfügbar“, niemals null. - Bevorzuge Primärquellen. Nutze X als Praktiker-Signal, nicht als Beweis. - Löse den Zeitraum in explizite Start- und Enddaten auf und nenne die Zeitzone. - Bevor Credits verbraucht werden, zeige die geplanten API-Aufrufe und warte auf meine Freigabe. - Lege keine wiederkehrende Aufgabe an, versende keine Nachrichten und veröffentliche nichts. - Schreibe das Ergebnis nach ./research-brief.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.
Ersetzen kleine Modelle große Modelle in Support-Bots?
Kurze Antwort
- Kleine Modelle reichen für Klassifikation und Erstantworten.
- Der Engpass ist die Retrieval-Qualität, nicht die Modellgröße.
- Umgestellte Teams melden niedrigere Kosten pro Ticket, nicht höhere Lösungsquoten.
| Behauptung | Quelle | Datum |
|---|---|---|
| Retrieval-Qualität bestimmt Antwortqualität | https://example.com/rag-eval | 2026-10-12 |
| Kosten pro gelöstem Ticket sanken um 38 % | https://example.com/support-case | 2026-09-28 |
Wo die Quellen widersprechen
Anbieter-Benchmarks zeigen nahezu Gleichstand; unabhängige Tests sehen bei mehrstufigen Erstattungen weiter eine Lücke.
Noch unbekannt
Ob die Lücke durch bessere Tool-Nutzung schließt oder ein größeres Modell braucht.
Die konkreten Aufrufe
Für Entwickler: derselbe Workflow als kopierbarer Code in Ausführungsreihenfolge.
Konkrete API-Aufrufe zeigen
Stelle dem Web eine Frage
Chat durchsucht das Web, sortiert Quellen, schreibt die Antwort und gibt die genutzten Ressourcen zurück. Behalte die Top drei: Jeder spätere Schritt folgt einem dieser Links. Der Helper sendet den Key einmal und wirft bei Nicht-2xx einen Fehler.
research.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 }[] }; }; export async function answer(question: string) { const chat = await felo<ChatData>("/v2/chat", { query: question }); return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) }; }Beispielausgabe
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }Lade die Seiten hinter der Antwort
Ein Ausschnitt reicht für ein Briefing nicht. Lade die Seiten mit aktivierter Lesbarkeit als Markdown, damit Zitate und Überschriften ohne Navigationsrauschen erhalten bleiben. Ein erneuter Abruf derselben URL kann den Extraktions-Cache treffen.
research.ts type ExtractData = { data: { content: string } }; const pages = await Promise.all( sources.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 Article\n\nExtracted article content…"
Ergänze, was X sagt
Nachrichten berichten Ankündigungen; X zeigt, womit Menschen praktisch konfrontiert sind. Suche die letzten sieben Tage und behalte Autor und Zeit, damit das Briefing jede Aussage zuordnen kann. Erhöhe
limitfür mehr Reichweite; jede Ergebnisseite hat einen cursor.research.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; }[]; }; }; const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000); const social = await felo<XData>("/v2/x/tweet/search", { query: question, limit: 10, since_time: since, });Beispielausgabe
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }Lege die Belege in einem LiveDoc ab
Erstelle ein LiveDoc und füge die Quellen als URL-Ressourcen hinzu. Die API dedupliziert bereits gesehene URLs und gibt pro URL eine resource id zurück, sodass spätere Fragen dieselben Belege ohne erneuten Abruf durchsuchen können.
research.ts type LiveDocData = { data: { short_id: string } }; const doc = await felo<LiveDocData>("/v2/livedocs", { name: `Research: ${question.slice(0, 60)}`, description: "Sources collected while answering the question", }); await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, { urls: sources.map((source) => ({ url: source.link, title: source.title })), }); console.log(doc.data.short_id); // keep this for later queriesFrage die Belege später erneut
Das ist der Gewinn: Die nächste Frage führt eine semantische Suche im LiveDoc statt im offenen Web aus. Übergib
resource_idsnur, wenn du auf eine bekannte Teilmenge begrenzen willst.research.ts type Retrieved = { data: { title: string; content: string; score: number }[]; }; async function ask(livedoc: string, query: string) { const hits = await felo<Retrieved>( `/v2/livedocs/${livedoc}/resources/retrieve`, { query }, ); return hits.data.filter((hit) => hit.score >= 0.7); }Beispielausgabe
[ { "title": "…", "content": "…", "score": 0.92 } ]
Enthalten
- Belegte Antwort der Chat API und die Seiten dahinter
- Markdown-Extraktion ganzer Seiten für die stärksten Quellen
- X-Posts mit Autor und Zeit als Praktiker-Signal
- LiveDoc, das Belege für spätere Fragen durchsuchbar hält
Was es nicht macht
- Nur öffentliche Quellen; Paywall- und Login-Seiten können fehlschlagen
- X-Abdeckung ist ein Signal, keine repräsentative Umfrage
- Keine Interviews, privaten Daten oder bezahlten Datenbanken
- Wenn die Belege dünn sind, wird das gesagt statt Lücken zu füllen
- Ein Lauf pro Prompt; Zeitplanung übernimmt dein Agent oder cron
Fragen
Woher kommen die Quellen?
Die Chat API gibt die verwendeten Seiten zurück, Web Fetch macht die stärksten zu Markdown, und X Search ergänzt datierte Praktiker-Posts. Jeder Eintrag behält seine URL.
Kann ich einen Markt außerhalb von Tech recherchieren?
Ja. Ersetze den Scope-Platzhalter durch deinen Markt. Nischenmärkte haben oft weniger öffentliche Quellen; das Briefing markiert diese Lücken statt zu raten.
Bleiben die Belege nach dem Lauf erhalten?
Ja, wenn der LiveDoc-Schritt läuft. Die zurückgegebene short_id erlaubt späteren Fragen, dieselben Seiten zu durchsuchen, ohne sie erneut zu laden.
Was kostet ein Briefing?
Abrechnung nach verbrauchten Credits; aktuelle Preise stehen auf der Preisseite. Der Prompt fragt vor Ausgaben nach Bestätigung.
Kann ich es jede Woche laufen lassen?
Ja, aber dieser Prompt läuft einmal. Lege den Zeitplan in einem Agent oder cron an, der denselben Workflow ausführt.
Was, wenn eine Quelle hinter einer Paywall liegt?
Sie wird übersprungen und als nicht verfügbar markiert. Das Briefing füllt die Lücke nie mit einem erfundenen Fakt oder Zitat.
Verwandte Workflows
Einen täglichen KI-News-Digest bauen, den dein Team wirklich liest
Hole eine belegte News-Zusammenfassung, ergänze Diskussionen von Praktikern auf X, nimm ein Video-Transkript auf, verfasse die Ausgabe in Markdown und archiviere sie im LiveDoc.
Workflow öffnenOfficeEine Rechercheseite in eine Präsentation verwandeln
Extrahiere die Seite, speichere sie als LiveDoc-Kontext, lass die PPT Task API das Deck bauen und frage ab, bis der fertige Link vorliegt.
Workflow öffnenSupportSupport-Fragen aus deiner eigenen Dokumentation beantworten
Erstelle ein LiveDoc, lade Helpcenter und internes Runbook, rufe die Passagen ab, die den Ticket beantworten, und lass das Modell nur aus diesen Belegen antworten.
Workflow öffnenMach es zu deinem
Dasselbe Rezept, angepasst an deinen tatsächlichen Ablauf.
Briefing in eine Datei schreiben
Fasse Antwort, Seitenauszüge und X-Zitate in Markdown zusammen und übergib sie deinem Report-Tool oder committe sie ins Docs-Repo. Halte Quellenlinks neben den Aussagen – das Briefing ist nur so gut wie seine Zitate.
Per Zeitplan ausführen
Verpacke `answer()` in einen cron und schreibe jedes Briefing in eine datierte Datei. Dasselbe LiveDoc sammelt Quellen, sodass Woche vier aus den Belegen der Wochen eins bis drei antwortet.
LiveDoc überspringen
Wenn du bereits eine Datenbank hast, speichere Chat-Antwort und extrahierte Seiten dort. Der LiveDoc-Schritt dient der Suche, nicht dem Standard-Speichern.
Weiter
Die Referenzseiten hinter diesem Rezept und die nächsten Schritte.