extracting-google-paa-questions-for-seo
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseExtracting Google PAA Questions for SEO
提取Google PAA问题用于SEO
Pulls People Also Ask (PAA) questions from Google SERPs for a target keyword. PAA questions are Google-validated signals of what real users want to know — use them as H2/H3 headings or FAQ sections in content.
从Google SERP中提取目标关键词对应的People Also Ask(PAA)问题。PAA问题是Google验证过的真实用户需求信号——可将其用作内容中的H2/H3标题或FAQ板块。
Prerequisites
前提条件
- environment variable set
APIFY_TOKEN - Optional: Apify MCP server installed
- 已设置环境变量
APIFY_TOKEN - 可选:已安装Apify MCP服务器
Inputs
输入参数
| Parameter | Type | Required | Default | Notes |
|---|---|---|---|---|
| array | Optional | | Google search URLs |
| array | Optional | | Keywords to search on Google |
| string | Optional | | Country for Google search (e.g. |
| string | Optional | — | Language for results (e.g. |
| number | Optional | Unlimited | Maximum results to return across all queries |
| integer | Optional | | Maximum result pages per query |
| boolean | Optional | | Fetch mobile SERP layout |
| string | Optional | — | JavaScript function to transform each output object |
| 参数 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 数组 | 可选 | | Google搜索URL |
| 数组 | 可选 | | 要在Google上搜索的关键词 |
| 字符串 | 可选 | | Google搜索的国家/地区(例如 |
| 字符串 | 可选 | — | 结果语言(例如 |
| 数字 | 可选 | 无限制 | 所有查询返回的最大结果数 |
| 整数 | 可选 | | 每个查询的最大结果页数 |
| 布尔值 | 可选 | | 获取移动端SERP布局 |
| 字符串 | 可选 | — | 用于转换每个输出对象的JavaScript函数 |
Workflow
工作流程
Progress:
- [ ] Step 1: Run google-search-scraper for keyword and variants
- [ ] Step 2: Extract PAA questions from results
- [ ] Step 3: Classify questions by search intent
- [ ] Step 4: Score content opportunity per question
- [ ] Step 5: Deliver SEO content briefProgress:
- [ ] Step 1: Run google-search-scraper for keyword and variants
- [ ] Step 2: Extract PAA questions from results
- [ ] Step 3: Classify questions by search intent
- [ ] Step 4: Score content opportunity per question
- [ ] Step 5: Deliver SEO content briefStep 1: Run google-search-scraper
步骤1:运行google-search-scraper
Recommended — run_actor.js (handles waiting, output, and file saving automatically):
bash
undefined推荐方式 — run_actor.js(自动处理等待、输出和文件保存):
bash
undefinedQuick answer (prints table to chat)
Quick answer (prints table to chat)
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
Save as CSV
Save as CSV
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.csv --format csv
Save as JSON
Save as JSON
node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--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": ["[KEYWORD]", "best [KEYWORD]", "how to [KEYWORD]", "[KEYWORD] for beginners"],
"maxPagesPerQuery": 3,
"countryCode": "US",
"languageCode": "en",
"includePeopleAlsoAsk": true
}
**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": ["email marketing tools", "best email marketing tools", "how to email marketing"],
"maxPagesPerQuery": 3,
"countryCode": "US",
"includePeopleAlsoAsk": true
}'node scripts/run_actor.js
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
--actor "apidojo~google-search-scraper"
--input '{"param": "value"}'
--output YYYY-MM-DD_results.json --format json
> 必须在环境变量或`.env`文件中设置`APIFY_TOKEN`。
**如果Apify MCP可用:**Tool: apify:run-actor
Actor: "apidojo~google-search-scraper"
Input:
{
"queries": ["[KEYWORD]", "best [KEYWORD]", "how to [KEYWORD]", "[KEYWORD] for beginners"],
"maxPagesPerQuery": 3,
"countryCode": "US",
"languageCode": "en",
"includePeopleAlsoAsk": true
}
**REST API备选方案:**
```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": ["email marketing tools", "best email marketing tools", "how to email marketing"],
"maxPagesPerQuery": 3,
"countryCode": "US",
"includePeopleAlsoAsk": true
}'Step 2: Classify PAA Questions by Intent
步骤2:按搜索意图分类PAA问题
intent:
INFORMATIONAL = "what is", "how does", "what does", "explain"
COMPARATIVE = "vs", "or", "better", "difference between"
TRANSACTIONAL = "how to buy", "where to get", "best price", "free"
NAVIGATIONAL = "[brand] how to", "login", "sign up"
TROUBLESHOOTING = "not working", "error", "fix", "issue"intent:
INFORMATIONAL = "what is", "how does", "what does", "explain"
COMPARATIVE = "vs", "or", "better", "difference between"
TRANSACTIONAL = "how to buy", "where to get", "best price", "free"
NAVIGATIONAL = "[brand] how to", "login", "sign up"
TROUBLESHOOTING = "not working", "error", "fix", "issue"Step 3: Score Content Opportunity
步骤3:评估内容创作机会
paa_score = (question_appears_across_multiple_keywords ? 1 : 0.5) * 0.35
+ (intent == INFORMATIONAL ? 1 : 0.7) * 0.30
+ (current_SERP_has_no_featured_snippet ? 1 : 0.4) * 0.35Featured snippet opportunity: if PAA answer shown is > 200 words or from a weak domain → high opportunity to claim.
paa_score = (question_appears_across_multiple_keywords ? 1 : 0.5) * 0.35
+ (intent == INFORMATIONAL ? 1 : 0.7) * 0.30
+ (current_SERP_has_no_featured_snippet ? 1 : 0.4) * 0.35**特色摘要机会:**如果展示的PAA答案超过200词或来自权威度较低的域名→抢占该位置的机会很高。
Step 4: Edge Cases
步骤4:边缘情况处理
- PAA questions not returned: Some queries return no PAA boxes; try more question-form queries ("how to [keyword]", "what is [keyword]")
- Duplicate questions across keywords: Deduplicate by question text similarity (≥ 80% overlap = same question); count as one, note it appeared for [N] keywords
- Questions are too broad: Flag as — better suited for a pillar page or FAQ section, not a standalone post
BROAD_QUESTION - Questions are brand-specific competitors: Include with flag — these tell you what users are asking about your competitors
COMPETITIVE_INTELLIGENCE
- 未返回PAA问题:部分查询不会返回PAA模块;尝试使用更多疑问句式的查询(例如“how to [keyword]”、“what is [keyword]”)
- 不同关键词下出现重复问题:通过问题文本相似度去重(重叠度≥80%视为同一问题);计为一个问题,并标注它在[N]个关键词下出现过
- 问题过于宽泛:标记为——更适合用作支柱页面或FAQ板块,而非独立文章
BROAD_QUESTION - 问题涉及竞品品牌:添加标记——这些问题能反映用户对竞品的关注点
COMPETITIVE_INTELLIGENCE
Output Format
输出格式
undefinedundefinedGoogle PAA Questions: "[KEYWORD]"
Google PAA Questions: "[KEYWORD]"
Queries run: [N] | Unique PAA questions: [N] | Featured snippet opportunities: [N] | Date: [DATE]
Queries run: [N] | Unique PAA questions: [N] | Featured snippet opportunities: [N] | Date: [DATE]
PAA Question Bank (Sorted by Opportunity Score)
PAA Question Bank (Sorted by Opportunity Score)
| # | Question | Intent | Appears For | Featured Snippet? | Score |
|---|---|---|---|---|---|
| 1 | "[question]" | INFORMATIONAL | [N] keywords | No | [0.XX] |
| # | Question | Intent | Appears For | Featured Snippet? | Score |
|---|---|---|---|---|---|
| 1 | "[question]" | INFORMATIONAL | [N] keywords | No | [0.XX] |
High-Priority Questions (Use as H2/H3 in Content)
High-Priority Questions (Use as H2/H3 in Content)
- "[question]" — Answer in [X] words; [informational guide / comparison table / step-by-step]
- "[question]"
- "[question]" — Answer in [X] words; [informational guide / comparison table / step-by-step]
- "[question]"
FAQ Section Builder
FAQ Section Builder
Questions suitable for FAQ schema markup:
- Q: "[question]" — A: [1-sentence answer start]
Questions suitable for FAQ schema markup:
- Q: "[question]" — A: [1-sentence answer start]
Content Angle Recommendations
Content Angle Recommendations
- For "[primary keyword]" blog post: Use [N] of these PAA questions as headers
- For FAQ page: [N] questions qualify for FAQ schema
- For comparison page: [N] vs/comparison questions found
undefined- For "[primary keyword]" blog post: Use [N] of these PAA questions as headers
- For FAQ page: [N] questions qualify for FAQ schema
- For comparison page: [N] vs/comparison questions found
undefinedTroubleshooting
故障排除
"includePeopleAlsoAsk" returns no results: Not all keywords trigger PAA boxes. Try adding "how", "why", "best", "what" as prefixes to force question-form SERPs.
PAA questions are all branded (competitor names): High competitor brand presence on SERPs — separate branded vs. non-branded question sets in your content plan.
Questions are too obscure: PAA expands dynamically based on prior searches — the questions returned reflect real user journeys; trust them even if obscure.
"includePeopleAlsoAsk"未返回结果:并非所有关键词都会触发PAA模块。尝试添加“how”、“why”、“best”、“what”作为前缀,强制生成疑问句式的SERP。
PAA问题均为品牌相关(竞品名称):竞品品牌在SERP上的存在感较强——在内容规划中区分品牌相关与非品牌相关的问题集合。
问题过于冷门:PAA会根据过往搜索动态扩展;返回的问题反映了真实的用户旅程,即使冷门也可信任。