Research
Ein Wettbewerbs-Teardown erstellen, das dein Vertrieb direkt nutzt
Sammle die Seiten des Wettbewerbers, die Berichterstattung darum und die Stimmen von Käufern auf X und baue daraus ein Teardown, in dem jede Aussage Quelle, Datum und Status trägt.
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 einen Wettbewerbs-Teardown zu [Wettbewerbername] für [unser Produkt]. Umfang: [Segment], [Region], [Sprache]. Zeitraum: [letzte 90 Tage / letzte 12 Monate]. Entscheidung, die es stützt: [Preisänderung / Launch-Positionierung / Einwandbehandlung]. Startquellen: [Wettbewerber-Domain], [Preisseite URL], [Changelog URL]. Erstelle einen Markdown-Teardown mit: 1. Wie sie sich selbst positionieren, in ihren eigenen Worten. 2. Einer Evidenztabelle: Aussage, Quellentitel, URL, Datum, Status (Verified / Vendor claim / Third-party / Signal / Inference / Not verified). 3. Preisen: was auf der Seite steht, mit Link und Prüfdatum. Übernimm niemals einen Tarif ohne Seite und Datum in den Fließtext. 4. Wo Käufer widersprechen, mit X-Handles und Daten, als Signal gekennzeichnet. 5. Was wir als Nächstes tun sollten, als Empfehlung markiert. 6. Einer vollständigen Quellenliste. Regeln: - Zitiere ihre Positionierung; formuliere sie nicht stärker um. - Trenne Anbieteraussagen, Berichterstattung Dritter und deine Schlussfolgerungen. Beschrifte jede Zeile. - Erfinde niemals Preise, Kennzahlen, Kundennamen oder Benchmarks. Fehlende Daten heißen „Nicht verfügbar“. - Löse Zeitraum und Region in explizite Werte auf. - Bevor Credits verbraucht werden, zeige die geplanten API-Aufrufe und warte auf meine Freigabe. - Veröffentliche, versende, plane oder schreibe nichts in ein CRM. - Schreibe das Ergebnis nach ./competitor-teardown.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.
Wettbewerbs-Teardown — [Wettbewerber], geprüft am 2026-10-30
Wie sie sich positionieren
Homepage-Headline: „Die Plattform für wachsende Support-Teams.“ Kategorieseite: „Alles, was Ihr Support-Team braucht.“ Beides Anbieteraussagen, wörtlich zitiert.
Evidenztabelle
| Behauptung | Quelle | Datum | Status |
|---|---|---|---|
| Positioniert sich als Plattform, nicht als Punktlösung | https://example.com/competitor/home | 2026-10-30 | Verified |
| Liefert wöchentlich Änderungen | https://example.com/competitor/changelog | 2026-10-28 | Verified |
| In unabhängigen Roundups erwähnt | https://example.com/roundup | 2026-10-27 | Third-party |
| Käufer nennen langsames Onboarding | unten zitierter X-Beitrag | 2026-10-14 | Signal |
| Enterprise ist ihr größtes Segment | Nicht verfügbar | — | Not verified |
Preise
Die Preisseite nennt einen gestaffelten und einen nutzungsbasierten Plan. Tarife werden hier nicht wiederholt; prüfe die Live-Seite und das Datum: https://example.com/competitor/pricing (2026-10-30).
Wo Käufer widersprechen
@example_dev, 2026-10-14: „Das Setup dauerte länger als die Demo suggerierte.“ Ein datierter Beitrag; eine Beschwerde, keine Häufigkeitsschätzung.
Empfehlung
Auf der Vergleichsseite mit der Zeit bis zum ersten Ergebnis führen. Das ist unsere Schlussfolgerung, keine Aussage des Wettbewerbers.
Quellen
- https://example.com/competitor/home
- https://example.com/competitor/pricing
- https://example.com/competitor/changelog
Die konkreten Aufrufe
Für Entwickler: derselbe Workflow als kopierbarer Code in Ausführungsreihenfolge.
Konkrete API-Aufrufe zeigen
Mit einer belegten Basis starten
Chat gibt Antwort und genutzte Seiten zurück – eine Karte, wo der Wettbewerber diskutiert wird. Behandle die Antwort als Hinweis, nicht als Quelle: Behalte die Links, sie liefern die Drittanbieter-Zeilen der Evidenztabelle. Der Helper sendet den Key einmal und wirft bei Nicht-2xx.
competitor.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 competitor = "Example Competitor"; const segment = "mid-market support teams"; const baseline = await felo<ChatData>("/v2/chat", { query: `How does ${competitor} position itself for ${segment}? Include pricing and recent launches.`, }); const seedSources = baseline.data.resources.slice(0, 5);Beispielausgabe
{ "answer": "The competitor positions itself as …", "sources": [ { "link": "https://example.com/competitor", "title": "…", "snippet": "…" } ] }Die Seiten laden, die der Wettbewerber kontrolliert
Drittberichte zeigen, was Menschen denken; die eigenen Seiten zeigen, was der Wettbewerber behauptet. Extrahiere Homepage, Preisseite und Changelog mit Lesbarkeit als Markdown und stemple das Abrufdatum auf jede Seite – eine Preisseite ohne Datum ist eine Falle.
competitor.ts type ExtractData = { data: { content: string } }; const ownedPages = [ { url: "https://example.com/competitor/home", title: "Homepage" }, { url: "https://example.com/competitor/pricing", title: "Pricing" }, { url: "https://example.com/competitor/changelog", title: "Changelog" }, ]; const fetched = await Promise.all( ownedPages.map(async (page) => { const res = await felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, with_cache: true, }); const checkedAt = new Date().toISOString().slice(0, 10); return { ...page, checkedAt, content: res.data.content }; }), );Beispielausgabe
{ "url": "https://example.com/competitor/pricing", "checkedAt": "2026-10-30", "content": "# Pricing\n\nExtracted page text…" }Prüfen, was Käufer auf X sagen
Suche auf X nach Einwänden und Workarounds zum Wettbewerber. Behalte Handle und Datum jedes Posts; ein datiertes Zitat belegt eine Beschwerde, nicht ihre Häufigkeit. Das Teardown markiert es als Signal und macht aus ein paar Posts keine Prozentzahl.
competitor.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number }; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const buyerSignal = await felo<XData>("/v2/x/tweet/search", { query: `"${competitor}" (pricing OR onboarding OR migration)`, limit: 25, since_time: since, }); const objections = buyerSignal.data.tweets.slice(0, 5);Beispielausgabe
{ "data": { "tweets": [ { "content": "setup took longer than the demo suggested", "author": { "username": "example_dev" }, "created_at": "2026-10-14T09:20:00Z", "metrics": { "retweet_count": 3, "favorite_count": 24 } } ] } }Das Teardown mit Evidenztabelle bauen
Das ist der redaktionelle Schritt: Verwandle geladene Seiten und X-Posts in Aussagen und gib jeder Quelle, Datum und Status. Die Statusspalte hält das Dokument ehrlich:
Verifiedfür Seiteninhalt,Vendor claimfür Marketing,Third-partyfür externe Berichte,Signalfür einen datierten Post,Inferencefür deine Lesart,Not verifiedbei fehlenden Belegen.competitor.ts const today = new Date().toISOString().slice(0, 10); const row = (claim: string, source: string, date: string, status: string) => `| ${claim} | ${source} | ${date} | ${status} |`; const teardown = [ `# Competitor teardown — ${competitor}`, `Scope: ${segment}. Checked ${today}.`, "", "| Claim | Source | Date | Status |", "| --- | --- | --- | --- |", row("Free tier listed on the pricing page", ownedPages[1].url, fetched[1].checkedAt, "Verified"), row("Positions as a platform, not a point tool", ownedPages[0].url, fetched[0].checkedAt, "Vendor claim"), row("Discussed in independent coverage", seedSources[0]?.link ?? "Not available", today, "Third-party"), row("Buyers report onboarding friction", "X post, quoted below", today, "Signal"), row("Most revenue comes from enterprise", "Not available", "—", "Not verified"), "", "## Recommendation", "Lead with time-to-first-result on the comparison page. Inference, not a competitor claim.", ].join("\n"); console.log(teardown);Beispielausgabe
| Free tier listed on the pricing page | https://example.com/competitor/pricing | 2026-10-30 | Verified |
Für den nächsten Refresh im LiveDoc ablegen
Lege pro Wettbewerber ein LiveDoc an, füge die geladenen Seiten als URL-Ressourcen und das Teardown als Dokument hinzu. Erneutes Hinzufügen von URLs wird dedupliziert, sodass du im nächsten Quartal nur Änderungen lädst und das alte Teardown im selben Archiv bleibt.
competitor.ts type LiveDocData = { data: { short_id: string } }; const teardownDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Teardown: ${competitor}`, description: `Sources and teardown checked ${today}`, }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/urls`, { urls: fetched.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/doc`, { title: `Teardown ${today}`, content: teardown, }); console.log(teardownDoc.data.short_id); // the next refresh reuses this LiveDocBeispielausgabe
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Enthalten
- Belegte Basis aus der Chat API und die Seiten dahinter
- Homepage, Preise und Changelog des Wettbewerbers als Markdown
- Datierte Käuferkommentare aus X, als Signal statt Beweis markiert
- Evidenztabelle, die verifizierte Fakten, Anbieteraussagen und Schlussfolgerungen trennt
- LiveDoc mit den Quellen, damit der nächste Refresh nicht bei null beginnt
Was es nicht macht
- Nur öffentliche Quellen; keine Win/Loss-Interviews, CRM-Notizen oder privaten Dashboards
- Preise werden verlinkt und datiert, nie ohne Prüfdatum in eine Tabelle eingefroren
- X-Abdeckung ist unvollständig und keine repräsentative Käuferstichprobe
- Es wählt dein Positioning nicht; Empfehlungen sind als Schlussfolgerung markiert
- Es veröffentlicht das Teardown nicht und schreibt nicht in Battlecard-Tools
Fragen
Woher kommen die Belege?
Die Chat API liefert eine belegte Basis und die genutzten Seiten, Web Fetch macht die Seiten des Wettbewerbers zu Markdown, X Search ergänzt datierte Käufer-Posts. Jede Zeile behält Quelle und Datum, Schlussfolgerungen haben einen eigenen Status.
Kann ich mehrere Wettbewerber abdecken?
Ja. Führe denselben Prompt pro Wettbewerber aus und halte pro Firma ein LiveDoc. Eine Vergleichsseite verbindet nur Zeilen mit Status „verifiziert“, statt Belege aus zwei Läufen zu mischen.
Darf ich deren Preise zitieren?
Der Workflow hält fest, was auf der Preisseite steht, mit Link und Prüfdatum. Er friert Tarife nicht in Prosa ein, weil Anbieterpreise sich ändern und eine veraltete Zahl schlechter ist als keine.
Was ist mit unseren Win/Loss-Notizen?
Er liest nur öffentliche Quellen. Füge interne Notizen als separates Dokument im LiveDoc hinzu und markiere sie als intern; in kundenorientierten Materialien werden sie nie zitiert.
Wie oft aktualisieren?
Nach Auslöser, nicht nach Kalender: Preisänderung, Launch oder Beginn eines Verkaufszyklus. Führe den Workflow im selben LiveDoc erneut aus, damit das letzte Quartal neben dem neuen steht.
Was kostet ein Teardown?
Jeder Chat-, Extraktions- und X-Search-Aufruf verbraucht nutzungsbasierte Credits; aktuelle Preise stehen auf der Preisseite. Der Prompt fragt vor Ausgaben nach Bestätigung.
Verwandte Workflows
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.
Workflow öffnenResearchEine Marktfrage in ein Go-to-Market-Briefing verwandeln
Stelle dem Markt eine präzise Frage, lies die Kategorie- und Preisseiten hinter der Antwort, sammle auf X, wie Käufer das Problem beschreiben, und speichere ein GTM-Briefing mit belegten Aussagen und offenen Fragen.
Workflow öffnenContentEinen 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 öffnenMach es zu deinem
Dasselbe Rezept, angepasst an deinen tatsächlichen Ablauf.
Nach Auslöser statt Kalender aktualisieren
Führe denselben Workflow bei Preisänderung, großem Launch oder vor einem Verkaufszyklus erneut aus. Halte jedes Teardown als datiertes Dokument im selben LiveDoc, damit das Vorquartal neben dem neuen steht.
Teardown in Battlecards verwandeln
Schreibe aus derselben Evidenztabelle je eine Seite pro Rolle – wirtschaftlicher Käufer, Champion, technischer Prüfer – nur mit `Verified`-Zeilen und angehängten Links. Lass `Inference` aus kundenorientierten Materialien heraus.
Zwei Wettbewerber vergleichen
Führe den Workflow pro Wettbewerber mit separatem LiveDoc aus und baue eine Vergleichsseite nur aus Zeilen, die in beiden Läufen `Verified` sind. Führe zwei Läufe nie ohne Statusspalte in einer Evidenztabelle zusammen.
Weiter
Die Referenzseiten hinter diesem Rezept und die nächsten Schritte.