tracking-google-serp-rankings — скилл для Claude Code: позиции
Скилл собирает выдачу Google по списку ключевых слов: позиции, URL, заголовки, сниппеты и SERP-фичи. Пригодится для SEO-аудита и разбора конкурентов.
npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a claude-codeЧто делает tracking-google-serp-rankings
Скилл запускает актёр apidojo/google-search-scraper на Apify и разбирает датасет: по каждому ключу достаёт органические результаты с позицией, адресом, заголовком и описанием, а ещё фиксирует фичи выдачи — featured snippet, People Also Ask, local pack, рекламу и related searches. Если нужно, он ищет все позиции конкретного домена и считает среднюю позицию по списку ключей.
Работает через scripts/run_actor.js: скрипт сам ждёт завершения прогона и сохраняет результат в CSV или JSON. Есть вариант через Apify MCP-сервер, а если ничего из этого не подключено — обычный POST-запрос к REST API Apify. Перед запуском нужен APIFY_TOKEN в переменных окружения или в .env. Без токена ничего не поедет, так что это первое, что стоит проверить.
На вход подаются searchTerms или startUrls, страна (countryCode, по умолчанию US), язык, число страниц на запрос и мобильная раскладка. Выдача Google персонализируется и позиции гуляют между прогонами, поэтому для сравнения запускайте замеры в одно и то же время и из одного места.
Какие задачи решает
- собрать таблицу позиций сайта по списку ключей
- найти, кто занимает топ-3 по нужному запросу
- вытащить featured snippet и вопросы People Also Ask
- посчитать среднюю позицию домена по группе ключей
- разобрать, какие SERP-фичи есть в выдаче по теме
Примеры запросов агенту
- проверь позиции example.com по этим ключам в Google
- собери топ-10 выдачи по запросу «купить кофемолку», страна TR
- какие featured snippet и People Also Ask есть по этому запросу
Как установить tracking-google-serp-rankings
1Через Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a claude-code2Вручную: положить файлы
~/.claude/skills/tracking-google-serp-rankings/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/tracking-google-serp-rankings/
1Через Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a codex2Вручную: положить файлы
.agents/skills/tracking-google-serp-rankings/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a cursor2Вручную: положить файлы
.cursor/skills/tracking-google-serp-rankings/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install apidojo-io/apidojo-skills tracking-google-serp-rankings2Вручную: положить файлы
.github/skills/tracking-google-serp-rankings/SKILL.md1Через Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a gemini-cli2Командой платформы
gemini skills install https://github.com/apidojo-io/apidojo-skills --path skills/intent/tracking-google-serp-rankingsВручную: положить файлы
.devin/skills/tracking-google-serp-rankings/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о tracking-google-serp-rankings
Как установить tracking-google-serp-rankings в Claude?
Выполните npx skills add apidojo-io/apidojo-skills --skill tracking-google-serp-rankings -a claude-code. После этого файл скилла лежит в ~/.claude/skills/tracking-google-serp-rankings/SKILL.md.
Что делает tracking-google-serp-rankings?
Собирает выдачу Google по ключевым словам через актёр Apify и отдаёт позиции, URL, заголовки, сниппеты и тип SERP-фичи по каждому результату. Дальше строит отчёт по позициям и конкурентам.
Что нужно для работы скилла?
Переменная окружения APIFY_TOKEN. Опционально можно подключить Apify MCP-сервер, тогда запуск идёт через инструмент apify:run-actor.
Исходный текст
SKILL.md · Apache-2.0
---
name: tracking-google-serp-rankings
description: >
Tracks Google search rankings and SERP features for any keyword using apidojo's Google Search scraper on Apify.
Triggers when the user asks to: check Google rankings for a keyword, see who ranks on page 1 for a
search term, track SERP positions for a list of keywords, monitor competitor rankings on Google, find
featured snippets or People Also Ask boxes for a query, analyze the search results landscape for a
topic, audit top-ranking content for a keyword, or research organic search competition for SEO.
Returns ranking position, URL, title, snippet, and SERP feature type per result.
Ideal for SEO managers, content strategists, and digital marketing agencies.
license: Apache-2.0
metadata:
author: apidojo
version: "1.0"
apify-actor: apidojo/google-search-scraper
---
# Tracking Google SERP Rankings
Scrapes Google Search results for any keyword(s) to show who ranks where, what SERP features appear (featured snippets, PAA, local pack, ads), and how competitors are positioned. Use for SEO audits, content gap analysis, or keyword research.
## Prerequisites
- `APIFY_TOKEN` environment variable set
- Optional: Apify MCP server installed
## Inputs
| Parameter | Type | Required | Default | Notes |
|-----------|------|----------|---------|-------|
| `startUrls` | array | Optional | `[]` | Google search URLs |
| `searchTerms` | array | Optional | `[]` | Keywords to search on Google |
| `countryCode` | string | Optional | `US` | Country for Google search (e.g. `US`, `GB`, `TR`) |
| `languageCode` | string | Optional | — | Language for results (e.g. `en`) |
| `maxItems` | number | Optional | Unlimited | Maximum results to return across all queries |
| `maxPagesPerQuery` | integer | Optional | `1` | Maximum result pages per query |
| `mobileResults` | boolean | Optional | `false` | Fetch mobile SERP layout |
| `customMapFunction` | string | Optional | — | JavaScript function to transform each output object |
## Workflow
```
Progress:
- [ ] Step 1: Define keywords and search parameters
- [ ] Step 2: Run google-search-scraper
- [ ] Step 3: Fetch and parse SERP data
- [ ] Step 4: Map ranking positions and SERP features
- [ ] Step 5: Deliver ranking report
```
### Step 1: Clarify Parameters
Ask the user for:
- **Keywords** to track (1–20 keywords)
- **Country** (default: US)
- **Language** (default: English)
- **Number of results** per keyword (default: 20 = top 2 pages)
- **Device** — desktop or mobile (default: desktop)
- **Safe search** — on or off (default: off for unfiltered results)
- **Specific domain to track** (optional — e.g., "where does example.com rank for these keywords?")
### Step 2: Run the Actor
**Recommended — run_actor.js (handles waiting, output, and file saving automatically):**
```bash
# Quick answer (prints table to chat)
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}'
# Save as CSV
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.csv --format csv
# Save as JSON
node scripts/run_actor.js \
--actor "apidojo~google-search-scraper" \
--input '{"param": "value"}' \
--output YYYY-MM-DD_results.json --format json
```
> `APIFY_TOKEN` must be set in environment or `.env` file.
**If Apify MCP is available:**
```
Tool: apify:run-actor
Actor: "apidojo~google-search-scraper"
Input:
{
"queries": ["[keyword1]", "[keyword2]", "[keyword3]"],
"maxPagesPerQuery": 2,
"countryCode": "US",
"languageCode": "en",
"mobileResults": false
}
```
**REST API fallback:**
```bash
curl -X POST \
"https://api.apify.com/v2/acts/apidojo~google-search-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"queries": ["[keyword1]", "[keyword2]"],
"maxPagesPerQuery": 2,
"countryCode": "US",
"languageCode": "en"
}'
```
### Step 3: Parse SERP Data
From dataset, for each keyword extract:
- Organic results: `position`, `url`, `title`, `description`, `displayedUrl`
- SERP features: `featuredSnippet`, `peopleAlsoAsk`, `localPack`, `ads`, `relatedSearches`
- Total organic results count
If tracking a specific domain: find all positions where `url` contains the target domain.
### Step 4: Map Rankings
For each keyword, build the position table. Calculate:
- Average position across all keywords (for a specific domain)
- Keywords where target domain appears in top 3 / top 10 / not at all
- Keywords owned by the same competitor (URL domain appears multiple times)
### Step 5: Format Report
## Output Format
```
# Google SERP Ranking Report
Keywords analyzed: [N] | Country: [US] | Device: [Desktop] | Date: [DATE]
## Rankings Summary (for [target domain], if specified)
- Keywords in top 3: [N]
- Keywords in top 10: [N]
- Keywords on page 2: [N]
- Keywords not ranking: [N]
## Keyword-by-Keyword Results
### "[keyword1]"
| Position | URL | Title | Type |
|----------|-----|-------|------|
| 1 | [url] | [title] | Organic |
| 2 | [url] | [title] | Organic |
| — | — | Featured Snippet: "[snippet text excerpt]" | Feature |
| — | — | People Also Ask: [N] questions | Feature |
| [pos] | [your domain] | [title] | **YOUR RANKING** |
SERP features present: [Featured Snippet / PAA / Local Pack / Ads]
Ranking difficulty signal: [Easy / Medium / Hard — based on DR of top results if available]
### "[keyword2]"
[same structure]
## Competitor Dominance Analysis
| Domain | Keywords Where They Rank Top 3 | Avg Position |
|--------|-------------------------------|--------------|
| [domain] | [N] | [X.X] |
## SERP Feature Opportunities
Keywords where a featured snippet exists but [your domain] is not the source:
- "[keyword]" — snippet currently owned by [domain]
- "[keyword]" — snippet currently owned by [domain]
```
## Troubleshooting
**Results vary between runs:** Google personalizes results and rotates positions. Run at the same time of day and same location for consistent tracking.
**No results for a keyword:** Very low-volume keywords may return limited results. Try broader variations.
**Ad-heavy SERPs:** Some keywords are dominated by ads — organic position 1 may appear lower on the page. Note this in the report.
© apidojo · Apache-2.0 · apidojo-io/apidojo-skills