keyword-research — скилл для Claude Code: что делает и как установить
Подбирает поисковые запросы через MCP-инструменты OpenSEO, оценивает метрики выдачи и сохраняет перспективные фразы в проект.
npx skills add every-app/open-seo --skill keyword-research -a claude-codeЧто делает keyword-research
Скилл превращает базовые темы в приоритизированный список поисковых запросов через MCP-сервер OpenSEO. Для запуска обязателен projectId. Агент обращается к get_project_context, проверяет цели бизнеса и читает журнал прошлых исследований. Если аналогичный поиск уже запускался за последние 30 дней, данные берутся из кэша без расхода кредитов.
Внутри работают инструменты OpenSEO. Функция research_keywords генерирует идеи, а get_keyword_metrics добавляет частотность и сложность для пачек до 700 запросов. Фразы с позициями от 5 до 20 подтягиваются из Search Console. Инструмент save_keywords вызывается только после подтверждения пользователем.
Итоговый отчёт формируется через скилл seo-report. Зависимость от seo-report строгая: если его нет, агент остановит процесс до генерации HTML.
Какие задачи решает
- собрать список поисковых запросов по опорным темам через OpenSEO
- оценить сложность, частотность и интент ключевых фраз
- найти фразы в Search Console в зоне видимости
- проверить локальную выдачу и конкурентов для конкретного региона
- сохранить отобранные ключевые слова с тегами в проект
Примеры запросов агенту
- Собери ключевые слова по теме веб-разработки для проекта с projectId my-project
- Выгрузи фразы из Search Console в зоне видимости и проверь их сложность через OpenSEO
- Проверь локальные поисковые запросы и конкурентов для проекта my-project
Как установить keyword-research
1Через Skills CLI (Vercel)
npx skills add every-app/open-seo --skill keyword-research -a claude-code2Вручную: положить файлы
~/.claude/skills/keyword-research/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/keyword-research/
1Через Skills CLI (Vercel)
npx skills add every-app/open-seo --skill keyword-research -a codex2Вручную: положить файлы
.agents/skills/keyword-research/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add every-app/open-seo --skill keyword-research -a cursor2Вручную: положить файлы
.cursor/skills/keyword-research/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install every-app/open-seo keyword-research2Вручную: положить файлы
.github/skills/keyword-research/SKILL.md1Через Skills CLI (Vercel)
npx skills add every-app/open-seo --skill keyword-research -a gemini-cli2Командой платформы
gemini skills install https://github.com/every-app/open-seo --path plugins/openseo/skills/keyword-researchВручную: положить файлы
.devin/skills/keyword-research/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add every-app/open-seo --skill keyword-research -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора9
Весь набор →Похожие
Вопросы о keyword-research
Как установить keyword-research в Claude Code?
Установите скилл командой npx skills add every-app/open-seo --skill keyword-research -a claude-code.
Что делает keyword-research?
Скилл анализирует поисковый спрос через MCP-сервер OpenSEO, обогащает запросы данными о частотности и конкуренции, а также формирует структурированный отчёт по возможностям продвижения.
Нужен ли дополнительный скилл для создания отчёта?
Да, скилл передаёт результаты через seo-report. Если seo-report отсутствует, агент прерывает работу до создания итогового HTML-документа.
Исходный текст
SKILL.md · MIT
---
name: keyword-research
description: "Discover keyword opportunities, evaluate metrics and SERPs, and save/tag promising terms."
---
# OpenSEO Keyword Research
## Goal
Turn seed topics into a prioritized keyword opportunity set using OpenSEO MCP data. The output should help the user decide what to target, what to save, and what to research next.
## Required inputs
- `projectId`
- One or more seed topics, products, pages, competitors, or audience problems
- Optional market/location/language
If `projectId` is missing, use `list_projects` first. If the target market/location/language is unclear and would materially affect keyword metrics, ask the user; otherwise use the MCP tool defaults.
## Project context
The project-context tools are free and shared with the app and other agents.
1. Call `get_project_context` first and ground the research in it — the business, the goal, the markets, and the competitors and key pages already saved.
2. This skill needs `business_overview` and `current_goal`. If either is empty, run a minimal inline setup: ask the user, or infer from the site and confirm, just enough to fill them, write them back with `update_project_context`, then continue the research. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest.
3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it.
4. On finish, write back what is durable — a sharpened `business_overview` or `current_goal`, competitors that kept appearing in the SERPs via `addCompetitors`, pages the keywords should land on via `addKeyPages` — and append a research log entry: `{ appendResearchLog: { summary: "Keyword research: <seeds/market>. Verdict: <conclusion>" } }`.
## Deliver as a report
Deliver through the `seo-report` skill, saving with `skill: "keyword-research"`. If that skill is not available, say so and stop before writing HTML.
## OpenSEO MCP tools
- `research_keywords`: primary discovery tool. Use 1-5 seeds per call and prefer 150 results unless the user asks for exhaustive research. For demand in one city, county, or region, call `search_serp_locations` and pass the returned `locationName` on the seed: volume, CPC, and competition become local; keyword ideas, KD, and intent stay national.
- `get_keyword_metrics`: hydrate up to 700 known keywords with volume, keyword difficulty (KD), search intent, CPC, and monthly trends in one call. Use it to score candidate or known terms — including the Search Console striking-distance queries from step 1.
- `get_ranked_keywords`: pull exact ranking keyword rows when a target domain or page is part of the research brief.
- `get_search_console_performance`: when Search Console is connected, start from the project's real first-party demand — queries already earning impressions and near-ranking ("striking distance") terms. Pass `minPosition: 5, maxPosition: 20, minImpressions: 50` so the server filters the striking-distance rows for you (Google sorts by clicks and can't filter by position itself). Then hydrate those striking-distance queries with `get_keyword_metrics` to attach difficulty and intent.
- `get_serp_results`: inspect SERPs for the top candidate terms, especially when intent is ambiguous. Pass the same `locationName` for the SERP in one city, county, or region.
- `search_local_businesses`, `get_local_serp_results`, and `get_google_business_questions`: use for local SEO topics when a business/location radius matters.
- `list_saved_keywords`: avoid duplicating already-saved work or use existing tags as context.
- `save_keywords`: save selected keywords only after explicit user confirmation.
## Workflow
1. Normalize seeds into a small set of distinct research angles. If Search Console is connected for the project, first pull `get_search_console_performance` with `minPosition: 5, maxPosition: 20, minImpressions: 50` (default lookback), and hydrate those queries with `get_keyword_metrics` to attach KD and intent. That ranked, hydrated list is your fastest opportunity set — work it before broad discovery.
2. If the request is local SEO, identify the business, location/coordinates or service area, and local categories. Research local volume for that city or county with `research_keywords` and `locationName`. Use `search_local_businesses` and `get_local_serp_results` for the most important location/keyword set instead of relying only on national keyword/SERP data.
3. Call `research_keywords` for exploratory seeds. Use bulk calls when possible.
4. Use `get_keyword_metrics` to hydrate a fixed keyword list — or the striking-distance queries from step 1 — with volume, KD, and intent before prioritizing.
5. Use `get_ranked_keywords` when the user provides a domain/page and wants opportunities based on current rankings, near-misses, or competitor-owned terms.
6. Remove irrelevant, duplicate, branded-only, and off-intent terms.
7. Prioritize by practical opportunity, not volume alone:
- Strong match to the user's product/page/topic
- Clear search intent
- Reasonable difficulty
- Useful volume/CPC signal
- SERP where the user can plausibly compete
- For local SEO, local-pack/Maps visibility and proximity fit
8. Use `get_serp_results` for high-potential or ambiguous keywords when SERP intent would change the recommendation; keep the default check small.
9. Present a shortlist and a longer opportunity table.
10. Ask before saving keywords. When saving, suggest concise tags such as `topic:<topic>`, `intent:<intent>`, or `page:<slug>`.
## Output format
`h1`: the site or topic.
If a report template applies (see `seo-report`), its sections and tone replace this list.
Sections in this order:
1. **The opportunity** — one or two opening sentences naming the best theme and why the site can win it now.
2. **Target these now** — a table of keyword, intent, volume, KD, CPC, and the page to make. Add a bar chart comparing the volumes of the shortlist.
3. **Why these** — one finding per keyword that needs justifying: the SERP or metric evidence, then the page to build.
4. **The longer opportunity list** — a second table, same columns.
5. **Risks and caveats** — notes: SERP intent that would change the recommendation, missing metrics written as `unknown`, close-variant volumes that are one bucket rather than several.
6. **What to do next** — an ordered list, including whether to run keyword clustering, write a content brief, or save the chosen keywords.
7. **How this report was made** — opens with the skill link line from `seo-report`, pointing at `https://openseo.so/docs/skills/keyword-research` ("OpenSEO Keyword Research skill"), then which tools returned what.
## Guardrails
- Do not invent metrics. If OpenSEO does not return a value, write `unknown`.
- Do not call `save_keywords` without explicit confirmation.
- Prefer business-fit and intent-fit over chasing the largest volume term.
© every-app · MIT · every-app/open-seo