Дослідження
Перетворіть пошуковий запит на SEO-бриф контенту
Подивіться, які сторінки відповідають сьогодні, прочитайте їх як Markdown, змапуйте питання, які вони покривають і пропускають, і напишіть бриф, з якого автор зробить структуру.
Скопіювати промпт
Замініть поля в квадратних дужках і вставте в Claude Code, Codex або AI з доступом до термінала. Він встановить скіл Felo, запитає перед витратою кредитів і запустить процес.
Напиши SEO-бриф для запиту [цільовий запит] для [продукт або сайт]. Аудиторія: [читач]. Ринок і мова: [регіон], [мова]. Кут: [посібник / порівняння / сторінка продукту]. Рішення, яке він підтримує: [нова стаття / оновлення / закриття прогалини]. Спочатку прочитай, що зараз відповідає на цей запит, а потім складай структуру. Створи Markdown-бриф із: 1. Цільовим запитом і наміром, який ти виводиш, із доказами цього прочитання. 2. Тим, що охоплюють поточні сторінки: заголовок, URL і вступні розділи. 3. Питаннями, на які відповідають поточні сторінки, і тими, які вони пропускають. 4. Запропонованою структурою з одним рядком на розділ про те, що він має довести. 5. Доказами й прикладами з джерел із посиланнями. 6. Повним списком джерел. Правила: - Не заявляй обсяг пошуку, складність ключового слова, позицію чи трафік. Цей процес їх не вимірює; пиши «Тут не виміряно» замість числа. - Не вигадуй статистику, цитати чи твердження про контент конкурентів. - Описуй намір як прочитання сторінок, а не як виміряний факт. - Цитати мають бути короткими, із зазначенням джерела й посиланням. - Перетвори регіон і мову на явні значення. - Перед витратою кредитів покажи заплановані виклики API і дочекайся мого схвалення. - Нічого не публікуй, не плануй і не надсилай. - Запиши результат у ./seo-brief.md і підсумуй його в чаті.
Копія також містить кроки встановлення й правила безпеки.
Що ви отримаєте
Приклад результату одного запуску. Не живе генерування.
SEO-бриф — «як автоматизувати тріаж підтримки»
Цільовий запит та інтент
Запит: «як автоматизувати тріаж підтримки». Повернені сторінки починаються з кроків упровадження, а не зі сторінок продукту, тож інтент читається як how-to. Це прочитання сторінок, а не виміряний ярлик інтенту.
Що покривають поточні сторінки
| Сторінка | URL | Починається з |
|---|---|---|
| Автоматизація тріажу підтримки: практичний посібник | https://example.com/guide | Правила маршрутизації, потім теги |
| Чек-лист автоматизації тріажу | https://example.com/checklist | Сам чек-лист |
Питання, на які відповідають сторінки
- Що змінює автоматизація тріажу
- З яких правил маршрутизації почати
Питання, які пропущені
- Як виміряти, чи тріаж справді покращився
- Що робити, коли класифікатор помиляється
Запропонована структура
- Що змінює автоматизація тріажу — довести, що йдеться про чергу, а не про штат.
- Перші три правила маршрутизації — довести кожне прикладом.
- Як вимірювати першого місяця — довести метрикою, яку візьме керівник ops.
- Коли автоматизація помиляється — довести шлях ручного відкату.
Докази
- Приклад правила маршрутизації з https://example.com/guide (перевірено 2026-10-30)
Тут не вимірюється
Обсяг пошуку, складність ключового слова й позиція. Цей процес читає публічні сторінки; він не звертається до пошукового індексу чи трекера позицій.
Джерела
- https://example.com/guide
- https://example.com/checklist
Точні виклики
Для розробників: той самий процес як код, у порядку виконання.
Показати справжні виклики API
Подивіться, хто відповідає сьогодні
Запитайте Chat про запит і візьміть відповідь і цитовані сторінки. Ці сторінки — поточний конкурентний контент.
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 }));Приклад результату
{ "answer": "Readers searching this usually want a step-by-step …", "sources": [ { "link": "https://example.com/guide", "title": "…", "snippet": "…" } ] }Прочитайте сторінки як Markdown
Завантажте три-п’ять найсильніших сторінок через Web Fetch як Markdown, зберігаючи заголовки й питання.
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 }; }), );Приклад результату
{ "url": "https://example.com/guide", "checkedAt": "2026-10-30", "content": "# Automating support triage\n\n## Routing rules\n…" }Змапуйте покриття й прогалини
Вилучіть H2/H3 і питання FAQ кожної сторінки й зробіть таблицю: які питання мають відповідь, а які ні.
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]); }Приклад результату
// questions [ { "page": "…", "heading": "What routes should you automate first?" } ]Напишіть бриф
Опишіть запит, намір, порівняння покриття, відсутні питання, запропоновану структуру й список джерел.
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);Приклад результату
# SEO brief — "how to automate support triage"
Збережіть у LiveDoc
Збережіть бриф і посилання на сторінки в LiveDoc, щоб наступне оновлення завантажувало лише зміни.
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 archiveПриклад результату
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Що входить
- Список сторінок із джерелами з Chat і посиланнями на відповідь
- Поточні провідні сторінки як Markdown
- Заголовки й питання, які вони покривають
- Бриф, з якого одразу виходить структура
- LiveDoc із джерелами для наступного оновлення
Чого не робить
- Не вимірює позиції, обсяг, складність чи трафік
- Лише публічні сторінки; вхід і paywall можуть не працювати
- Не публікує й не переписує всю статтю
- Один запуск на запит; кілька запитів потребують вашого циклу
- Не гарантує позицій
Запитання
Чи вимірює обсяг або позиції?
Ні. Він читає публічні сторінки й оцінює, який контент відповідає сьогодні; позиції й обсяг — у ваших SEO-інструментах.
Звідки дані?
Chat повертає сторінки з джерелами, а Web Fetch перетворює їх на Markdown. Кожна оцінка вказує на конкретну сторінку й дату.
Чи витримує кілька запитів?
Так, але по одному. Повторіть кроки для кожного запиту й зберігайте окремі брифі.
Для яких запитів?
Інформаційних, порівняльних і «як зробити», бо публічні сторінки дають достатньо сигналу. Транзакційні потребують ваших даних про продукт і конверсії.
Чи пише статтю?
Ні. Дає бриф і структуру; написання — за редактором або вашим агентом письма.
Скільки коштує один запуск?
Chat і вилучення витрачають кредити за використання; актуальні тарифи на сторінці цін. Промпт просить схвалення перед витратою.
Пов’язані процеси
Перетворіть одне питання на дослідницький бриф із джерелами
Запитайте веб, збережіть сторінки за відповіддю як Markdown, додайте те, що кажуть практики на X, і тримайте докази в LiveDoc, який можна згодом переглянути.
Відкрити робочий процесКонтентНаповніть місяць контенту питаннями аудиторії
Змапуйте теми з Chat, знайдіть питання аудиторії на X, візьміть справжній кут із транскрипту відео й складіть чотиритижневий календар, де кожен рядок називає свій доказ.
Відкрити робочий процесКонтентПублікуйте щоденний AI-дайджест, який команда справді читає
Отримайте підсумок із джерелами, додайте розмови практиків на X, візьміть транскрипт відео, складіть випуск у Markdown і заархівуйте в LiveDoc.
Відкрити робочий процесАдаптуйте
Той самий рецепт, підлаштований під те, як ви насправді працюєте.
Лише порівняльні запити
Обмежте «X vs Y» і «найкращий X», щоб краще побачити кут відмінності.
Додайте свою сторінку продукту
Додайте сторінку продукту як додаткове джерело, щоб структура спиралася на ваші функції й ціни.
Оновлюйте щокварталу
Запустіть знову в тому самому LiveDoc і подивіться, як змінюються сторінки конкурентів і структура.
Далі
Довідкові сторінки за цим рецептом і наступні кроки.