Výzkum
Proměňte vyhledávací dotaz v SEO obsahový brief
Podívejte se, které stránky dnes odpovídají, přečtěte je jako Markdown, zmapujte pokryté a chybějící otázky a napište brief, ze kterého autor udělá osnovu.
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.
Napiš SEO obsahový briefing pro dotaz [cílový dotaz] pro [produkt nebo web]. Publikum: [čtenář]. Trh a jazyk: [region], [jazyk]. Úhel: [průvodce / srovnání / produktová stránka]. Rozhodnutí, které podporuje: [nový článek / obnovení / doplnění mezery]. Než uděláš osnovu, přečti si, co dnes na tento dotaz odpovídá. Vytvoř Markdown briefing s: 1. Cílovým dotazem a záměrem, který odvozuješ, s důkazy tohoto čtení. 2. Tím, co současné stránky pokrývají: titul, URL a úvodní sekce. 3. Otázkami, na které současné stránky odpovídají, a těmi, které vynechávají. 4. Navrženou osnovou s jedním řádkem na sekci o tom, co má dokázat. 5. Důkazy a příklady ze zdrojů s odkazy. 6. Úplným seznamem zdrojů. Pravidla: - Netvrď objem vyhledávání, obtížnost klíčového slova, pozici ani návštěvnost. Tento workflow je neměří; piš „Zde neměřeno“ místo čísla. - Nevymýšlej statistiky, citace ani tvrzení o obsahu konkurence. - Záměr popisuj jako čtení stránek, ne jako změřený fakt. - Citace krátké, s uvedením zdroje a odkazem. - Přveď region a jazyk na konkrétní hodnoty. - Než utratíš kredity, ukaž plánovaná volání API a počkej na mé schválení. - Nic nezveřejňuj, neplánuj a nic neposílej. - Výsledek zapiš do ./seo-brief.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í.
SEO briefing — „jak automatizovat triage podpory”
Cílový dotaz a záměr
Dotaz: „jak automatizovat triage podpory”. Vrácené stránky začínají kroky implementace, ne produktovými stránkami, takže záměr se čte jako how-to. To je čtení stránek, ne měřený štítek záměru.
Co aktuální stránky pokrývají
| Stránka | URL | Začíná |
|---|---|---|
| Automatizace triage podpory: praktický průvodce | https://example.com/guide | Routingová pravidla, pak tagy |
| Checklist automatizace triage | https://example.com/checklist | Samotný checklist |
Otázky, na které stránky odpovídají
- Co automatizace triage mění
- Kterými routingovými pravidly začít
Otázky, které vynechávají
- Jak měřit, zda se triage opravdu zlepšil
- Co dělat, když klasifikátor chybuje
Navržená osnova
- Co automatizace triage mění — doložit, že jde o frontu, ne o počet lidí.
- První tři routingová pravidla — doložit každé příkladem.
- Jak to měřit první měsíc — doložit metrikou, kterou vedoucí ops vytáhne.
- Když automatizace chybuje — doložit lidskou záložní cestu.
Důkazy
- Příklad routingového pravidla, citováno z https://example.com/guide (zkontrolováno 2026-10-30)
Zde neměřeno
Objem vyhledávání, obtížnost klíčového slova a pozice. Tento workflow čte veřejné stránky; neptá se indexu vyhledávání ani trackeru pozic.
Zdroje
- https://example.com/guide
- https://example.com/checklist
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í
Podívejte se, kdo dnes odpovídá
Zeptejte se Chat na dotaz a vezměte odpověď i citované stránky. Ty stránky jsou současný konkurenční obsah.
seo-brief.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 query = "how to automate support triage"; const ourSite = "example.com"; const coverage = await felo<ChatData>("/v2/chat", { query: `What pages currently answer the search query "${query}"? List the pages and what each one covers.`, }); const candidates = coverage.data.resources .filter((resource) => !resource.link.includes(ourSite)) .slice(0, 5) .map((resource) => ({ url: resource.link, title: resource.title }));Ukázkový výstup
{ "answer": "Readers searching this usually want a step-by-step …", "sources": [ { "link": "https://example.com/guide", "title": "…", "snippet": "…" } ] }Přečtěte stránky jako Markdown
Stáhněte tři až pět nejsilnějších stránek přes Web Fetch jako Markdown a držte nadpisy a otázky.
seo-brief.ts type ExtractData = { data: { content: string } }; const pages = await Promise.all( candidates.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 }; }), );Ukázkový výstup
{ "url": "https://example.com/guide", "checkedAt": "2026-10-30", "content": "# Automating support triage\n\n## Routing rules\n…" }Zmapujte pokrytí a mezery
Extrahujte H2/H3 a FAQ otázky každé stránky a udělejte tabulku: které otázky jsou zodpovězené a které ne.
seo-brief.ts type Heading = { page: string; heading: string }; const headings: Heading[] = pages.flatMap((page) => page.content .split("\n") .filter((line) => line.startsWith("## ")) .map((line) => ({ page: page.title, heading: line.replace(/^##\s+/, ""), })), ); const questions = headings.filter((item) => item.heading.includes("?")); const byTopic = new Map<string, string[]>(); for (const item of headings) { byTopic.set(item.heading, [...(byTopic.get(item.heading) ?? []), item.page]); }Ukázkový výstup
// questions [ { "page": "…", "heading": "What routes should you automate first?" } ]Napište brief
Popište dotaz, záměr, srovnání pokrytí, chybějící otázky, navrženou osnovu a seznam zdrojů.
seo-brief.ts const today = new Date().toISOString().slice(0, 10); const brief = [ `# SEO brief — "${query}"`, `Checked ${today}. Site: ${ourSite}.`, "", "## Intent read", "The pages returned for this query lead with: " + headings.slice(0, 6).map((item) => item.heading).join("; ") + ". This is a reading of their structure, not a measured intent label.", "", "## What the pages cover", "| Page | URL | Checked |", "| --- | --- | --- |", ...pages.map((page) => `| ${page.title} | ${page.url} | ${page.checkedAt} |`), "", "## Questions the pages answer", ...questions.map((item) => `- ${item.heading} (${item.page})`), "", "## Topics more than one page covers", ...[byTopic.entries()] .filter(([, pageTitles]) => pageTitles.length > 1) .map(([heading, pageTitles]) => `- ${heading} (${pageTitles.length} pages)`), "", "## Proposed outline", ...questions.slice(0, 5).map((item, index) => `${index + 1}. ${item.heading}`), "", "## Questions they miss", "<!-- Only questions none of the fetched pages answer. Delete this comment when filled. -->", "", "## Not measured here", "Search volume, keyword difficulty, and ranking position. This workflow reads public pages; it does not query a search index or a rank tracker.", "", "## Sources", ...pages.map((page) => `- ${page.title}: ${page.url}`), ].join("\n"); console.log(brief);Ukázkový výstup
# SEO brief — "how to automate support triage"
Uložte do LiveDoc
Uložte brief a odkazy stránek do LiveDoc, aby další aktualizace stahovala jen změny.
seo-brief.ts type LiveDocData = { data: { short_id: string } }; const briefDoc = await felo<LiveDocData>("/v2/livedocs", { name: `SEO briefs: ${ourSite}`, description: "One document resource per target query", }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/urls`, { urls: pages.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/doc`, { title: `SEO brief — ${query}`, content: brief, }); console.log(briefDoc.data.short_id); // the next query adds to this archiveUkázkový výstup
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Co obsahuje
- Seznam stránek se zdroji z Chat a odkazy na odpověď
- Současné špičkové stránky jako Markdown
- Nadpisy a otázky, které pokrývají
- Brief, ze kterého hned vznikne osnova
- LiveDoc se zdroji pro další aktualizaci
Co nedělá
- Neměří pozice, objem, obtížnost ani návštěvnost
- Jen veřejné stránky; přihlášení a paywall mohou selhat
- Nepublikuje ani nepřepisuje celý článek
- Jeden běh na dotaz; více dotazů chce vaši smyčku
- Negarantuje pozice
Otázky
Měří objem nebo pozice?
Ne. Čte veřejné stránky a hodnotí, který obsah dnes odpovídá; pozice a objem jsou ve vašich SEO nástrojích.
Odkud data?
Chat vrací stránky se zdroji a Web Fetch je mění na Markdown. Každé hodnocení ukazuje konkrétní stránku a datum.
Zvládne více dotazů?
Ano, ale jeden po druhém. Opakujte kroky pro každý dotaz a ukládejte samostatné briefy.
Pro které dotazy?
Informační, srovnávací a „jak na to“, protože veřejné stránky dávají dost signálu. Transakční chtějí vaše produktová a konverzní data.
Píše článek?
Ne. Dává brief a osnovu; psaní patří editorovi nebo vašemu psacímu agentovi.
Kolik stojí jeden běh?
Chat a extrakce spotřebují kredity podle užití; aktuální sazby na stránce cen. Prompt žádá schválení před útratou.
Související workflowy
Proměňte jednu otázku ve výzkumný brief se zdroji
Zeptejte se webu, uložte stránky za odpovědí jako Markdown, přidejte, co říkají praktici na X, a udržte důkazy v LiveDoc, který lze později prohledat.
Otevřít workflowObsahNaplňte měsíc obsahu otázkami publika
Zmapujte témata s Chat, najděte otázky publika na X, vezměte skutečný úhel z transkriptu videa a sestavte čtyřtýdenní kalendář, kde každý řádek uvádí svůj důkaz.
Otevřít workflowObsahVydávejte denní AI digest, který tým opravdu čte
Získejte souhrn se zdroji, přidejte diskuse praktiků na X, vezměte transkript videa, sestavte vydání v Markdownu a archivujte v LiveDoc.
Otevřít workflowPřizpůsobte
Stejný recept, upravený podle toho, jak skutečně dodáváte.
Jen srovnávací dotazy
Omezte na „X vs Y“ a „nejlepší X“, aby byl lépe vidět úhel odlišení.
Přidejte svou produktovou stránku
Přidejte produktovou stránku jako další zdroj, aby osnova přistála na vašich funkcích a cenách.
Obnovujte každé čtvrtletí
Spusťte znovu ve stejném LiveDoc a sledujte, jak se mění stránky konkurentů a osnova.
Pokračujte
Referenční stránky za tímto receptem a další kroky.