{"slug":"people-also-ask-content-discovery","title":"How We Use \"People Also Ask\" to Generate 40% of Our Comparison Content Ideas","excerpt":"Google's \"People Also Ask\" (PAA) boxes are one of the most underused content discovery tools in SEO....","content":"Google's \"People Also Ask\" (PAA) boxes are one of the most underused content discovery tools in SEO. For product comparison sites, they're a goldmine.\n\nAt [SmartReview](https://www.aversusb.net), PAA data drives roughly 40% of our new content ideas. Here's how we systematically extract, score, and turn PAA questions into high-performing comparison and FAQ content.\n\n## Why PAA Matters for Comparison Sites\n\nWhen someone searches \"AirPods Pro vs Sony WF-1000XM5,\" Google typically shows 4-8 PAA questions like:\n\n- \"Are AirPods Pro better than Sony for phone calls?\"\n- \"Which has better noise cancellation, AirPods or Sony?\"\n- \"How long do AirPods Pro last compared to Sony?\"\n- \"Is Sony WF-1000XM5 worth the price?\"\n\nEach of these represents a **real user question** with search demand. And here's the key insight: answering these questions on your comparison page helps you:\n\n1. **Win the PAA box itself** u2014 Google pulls answers from pages that directly address the question\n2. **Rank for long-tail variations** u2014 each PAA question maps to dozens of similar queries\n3. **Increase time on page** u2014 comprehensive FAQ sections keep users engaged\n4. **Discover new comparison angles** u2014 PAA reveals what users actually care about\n\n## Our PAA Extraction Pipeline\n\nWe extract PAA data from every SERP we monitor using the DataForSEO API:\n\n```typescript\ninterface PAAItem {\n  question: string;\n  sourceUrl: string;\n  sourceTitle: string;\n  snippet: string;\n  position: number;  // position in the PAA box (1-8)\n}\n\nasync function extractPAA(keyword: string): Promise<PAAItem[]> {\n  const response = await dataforseo.post(\n    \"/serp/google/organic/live/advanced\",\n    [{\n      keyword,\n      location_code: 2840,\n      language_code: \"en\",\n      device: \"desktop\",\n    }]\n  );\n\n  const items = response.tasks[0].result[0].items;\n  return items\n    .filter((item: any) => item.type === \"people_also_ask\")\n    .flatMap((paa: any) => paa.items.map((q: any, i: number) => ({\n      question: q.title,\n      sourceUrl: q.url,\n      sourceTitle: q.source,\n      snippet: q.snippet,\n      position: i + 1,\n    })));\n}\n```\n\n## Scoring PAA Questions\n\nNot all PAA questions are worth targeting. We score them on three dimensions:\n\n### 1. Comparison Relevance\nDoes the question involve comparing two products?\n\n```typescript\nfunction isComparisonQuestion(question: string): boolean {\n  const patterns = [\n    /better than/i,\n    /compared to/i,\n    /vs\\.?\\s/i,\n    /versus/i,\n    /difference between/i,\n    /which (is|should|has)/i,\n    /or\\s+\\w+\\s*\\?/i,  // \"X or Y?\"\n  ];\n  return patterns.some(p => p.test(question));\n}\n```\n\n### 2. Answerability\nCan we answer this with structured data we already have?\n\n```typescript\nfunction getAnswerability(question: string, comparison: ComparisonData): number {\n  const attributes = comparison.attributes.map(a => a.name.toLowerCase());\n  const questionLower = question.toLowerCase();\n  \n  // Check if question maps to a known attribute\n  const matchedAttributes = attributes.filter(attr => \n    questionLower.includes(attr) || \n    synonymMap[attr]?.some(syn => questionLower.includes(syn))\n  );\n  \n  return matchedAttributes.length > 0 ? 1.0 : 0.5;\n}\n```\n\n### 3. Content Gap\nAre we already answering this question on the page?\n\n```typescript\nfunction isContentGap(question: string, existingFaqs: string[]): boolean {\n  return !existingFaqs.some(faq => \n    stringSimilarity(question, faq) > 0.7\n  );\n}\n```\n\nThe combined score determines priority:\n\n```typescript\nconst priority = \n  (isComparisonQuestion(q) ? 3 : 1) *\n  getAnswerability(q, comparison) *\n  (isContentGap(q, existingFaqs) ? 2 : 0.5);\n```\n\n## Turning PAA Into Content\n\nOnce scored, PAA questions flow into two content streams:\n\n### Stream 1: FAQ Enrichment\nHigh-scoring questions get added to existing comparison pages as FAQ items. We generate answers using our enrichment pipeline:\n\n```typescript\nasync function generateFaqAnswer(\n  question: string,\n  comparison: ComparisonData\n): Promise<string> {\n  // Pull fresh data relevant to the question\n  const context = await tavily.search(\n    `${question} ${comparison.entityA.name} ${comparison.entityB.name}`,\n    { searchDepth: \"advanced\" }\n  );\n\n  // Generate a concise, factual answer\n  const answer = await claude.generate({\n    prompt: `Answer this product comparison question concisely (2-3 sentences).\n    \n    Question: ${question}\n    Product A: ${JSON.stringify(comparison.entityA)}\n    Product B: ${JSON.stringify(comparison.entityB)}\n    Recent context: ${context.results.map(r => r.content).join(\"\n\")}\n    \n    Rules:\n    - Be specific with numbers and specs\n    - Name a winner if one exists\n    - Cite the key differentiating factor`,\n  });\n\n  return answer;\n}\n```\n\n### Stream 2: New Comparison Discovery\nPAA questions sometimes reveal comparison pairs we haven't covered:\n\n- \"Is Dyson V15 better than Shark Navigator?\" u2192 new comparison opportunity\n- \"How does Purple compare to Tempur-Pedic?\" u2192 might already exist, but validates demand\n- \"Which robot vacuum is best for pet hair?\" u2192 category roundup opportunity\n\nWe extract entity pairs from these questions and feed them back into our keyword discovery pipeline.\n\n## The FAQPage Schema Connection\n\nEvery FAQ answer we generate gets wrapped in `FAQPage` JSON-LD schema (covered in [Part 4](https://dev.to/danie_rozin/json-ld-for-product-comparisons-how-to-win-rich-snippets-in-google-1geb)). This creates a direct feedback loop:\n\n1. Extract PAA questions from SERPs\n2. Generate data-backed answers\n3. Add to comparison page with FAQPage schema\n4. Google surfaces our answers in PAA boxes\n5. More visibility u2192 more data on what users ask\n\n## Results\n\nAfter 3 months of PAA-driven content enrichment:\n\n- **40% of new content ideas** originated from PAA extraction\n- **PAA box appearances increased 3x** (from ~200 to ~600 keywords)\n- **Organic CTR improved 18%** on pages with PAA-optimized FAQ sections\n- **Average FAQ section grew from 3 to 7 questions** per comparison page\n- **Long-tail keyword coverage expanded 45%** without creating new pages\n\nThe most surprising finding: PAA questions often reveal user concerns that aren't obvious from keyword data alone. \"Are AirPods safe for kids' ears?\" would never show up in a keyword tool, but it's a real question that real buyers ask.\n\n## Try It\n\nCheck any comparison page on [aversusb.net](https://www.aversusb.net) u2014 the FAQ sections are largely PAA-driven. View source to see the FAQPage schema wrapping each answer.\n\n---\n\n*Part 7 of our \"Building SmartReview\" series. Previous: [Part 6: ISR and On-Demand Revalidation](https://dev.to/danie_rozin/isr-on-demand-revalidation-and-10k-product-pages-our-nextjs-scaling-playbook-1jgj)*","category":"business","tags":["seo","webdev","javascript","tutorial"],"url":"https://www.aversusb.net/blog/people-also-ask-content-discovery","publishedAt":"2026-06-25T11:21:34.731Z","updatedAt":"2026-06-25T11:21:34.733Z","articleSchema":{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://www.aversusb.net/blog/people-also-ask-content-discovery#article","headline":"How We Use \"People Also Ask\" to Generate 40% of Our Comparison Content Ideas","description":"Google's \"People Also Ask\" (PAA) boxes are one of the most underused content discovery tools in SEO....","abstract":"Google's \"People Also Ask\" (PAA) boxes are one of the most underused content discovery tools in SEO....","url":"https://www.aversusb.net/blog/people-also-ask-content-discovery","image":{"@type":"ImageObject","@id":"https://www.aversusb.net/blog/people-also-ask-content-discovery#primaryImage","url":"https://www.aversusb.net/api/og?title=How%20We%20Use%20%22People%20Also%20Ask%22%20to%20Generate%2040%25%20of%20Our%20Comparison%20Content%20Ideas&type=blog","contentUrl":"https://www.aversusb.net/api/og?title=How%20We%20Use%20%22People%20Also%20Ask%22%20to%20Generate%2040%25%20of%20Our%20Comparison%20Content%20Ideas&type=blog","width":1200,"height":630,"caption":"How We Use \"People Also Ask\" to Generate 40% of Our Comparison Content Ideas"},"thumbnailUrl":"https://www.aversusb.net/api/og?title=How%20We%20Use%20%22People%20Also%20Ask%22%20to%20Generate%2040%25%20of%20Our%20Comparison%20Content%20Ideas&type=blog","contentReferenceTime":"2026-06-25T11:21:34.733Z","datePublished":"2026-06-25T11:21:34.731Z","dateCreated":"2026-06-25T11:21:34.731Z","dateModified":"2026-06-25T11:21:34.733Z","author":{"@type":"Organization","@id":"https://www.aversusb.net/#organization","name":"A Versus B"},"publisher":{"@type":"Organization","@id":"https://www.aversusb.net/#organization","name":"A Versus B"},"inLanguage":"en-US","isPartOf":{"@type":"WebSite","@id":"https://www.aversusb.net/#website"},"keywords":"seo, webdev, javascript, tutorial","articleSection":"business","wordCount":873,"license":"https://creativecommons.org/licenses/by/4.0/","speakable":{"@type":"SpeakableSpecification","cssSelector":["h1",".article-excerpt",".article-intro","#article-summary"]},"accessMode":["textual"],"accessModeSufficient":[{"@type":"ItemList","itemListElement":["textual"]}],"isAccessibleForFree":true}}