apidojo-io/apidojo-skills

tracking-google-serp-rankings

Tracks Google search rankings and SERP features for any keyword using apidojo's Google Search scraper on Apify.

查看源码

使用方法

  1. 复制安装命令,在自己的智能体环境安装前先检查源码包。
  2. 从原始文档核对所需工具、凭据和支持的宿主。
  3. 说明输入材料与期望交付物,并对照来源检查输出。
npx skills add https://github.com/apidojo-io/apidojo-skills --skill tracking-google-serp-rankings

开始前需了解

  • 安装不包含模型订阅、API 额度或访问文件的权限。
  • 仓库星数和安装量反映活跃情况,不等于独立质量或安全测试。
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

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

ParameterTypeRequiredDefaultNotes
startUrlsarrayOptional[]Google search URLs
searchTermsarrayOptional[]Keywords to search on Google
countryCodestringOptionalUSCountry for Google search (e.g. US, GB, TR)
languageCodestringOptional—Language for results (e.g. en)
maxItemsnumberOptionalUnlimitedMaximum results to return across all queries
maxPagesPerQueryintegerOptional1Maximum result pages per query
mobileResultsbooleanOptionalfalseFetch mobile SERP layout
customMapFunctionstringOptional—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.

按任务相关推荐

来自同一仓库

更多 Skills

全部 Skills
apidojo-io
社区

scraping-urban-dictionary-definitions

Extracts definitions, examples, and community votes from Urban Dictionary using apidojo's Urban Dictionary Scraper on Apify. Triggers when the user asks to: get Urban Dictionary definitions for a word or phrase, look up slang terms on Urban Dictionary, scrape definitions for internet slang or memes, export Urban Dictionary entries for a keyword, find how a term is defined by the internet community, collect crowd-sourced definitions for multiple words, or analyze slang usage and voting patterns.

安装量
2
GitHub Stars
1
最近更新
5月13日
apidojo-io
社区

finding-speaking-opportunities-on-twitter

Finds speaking opportunities and event organizer contacts on Twitter using apidojo's Twitter scrapers. Triggers when the user asks to: find speaking opportunities on Twitter, discover conferences looking for speakers on X, find event organizers calling for speaker submissions, identify call-for-speakers announcements in an industry on Twitter, find podcast or summit hosts looking for guests, discover virtual event opportunities for thought leadership, or build a speaking opportunity pipeline fro

安装量
2
GitHub Stars
1
最近更新
5月13日
apidojo-io
社区

extracting-google-paa-questions-for-seo

Extracts Google People Also Ask questions for SEO content planning using apidojo's Google Search scraper on Apify. Triggers when the user asks to: find People Also Ask questions on Google for SEO, extract PAA questions for keyword research, discover what questions Google shows for a topic, find long-tail SEO questions from Google, research FAQ content opportunities from Google SERP, build a list of questions to answer in blog content from Google, or extract Google autocomplete and PAA data for c

安装量
1
GitHub Stars
1
最近更新
5月13日
apidojo-io
社区

scraping-youtube-channel-info

Extracts YouTube channel metadata, subscriber counts, video counts, and descriptions using apidojo's YouTube Channel Scraper on Apify. Triggers when the user asks to: get YouTube channel information, scrape YouTube channel stats, fetch subscriber count for a YouTube channel, export channel metadata in bulk, find YouTube channels by keyword, get channel descriptions and tags, check if a YouTube channel is verified, or research YouTube channels by niche. Returns channel name, subscriber count, vid

安装量
1
GitHub Stars
1
最近更新
5月13日