> ## Content Index
> Fetch the complete content index at: https://buildwire.ai/llms.txt
> Use this file to discover other available public pages before exploring further.

# 🔍 Search Intent Mismatch Detector
- URL: https://buildwire.ai/blog/search-intent-mismatch-detector/
- Published: 2026-01-28T16:34:15.000Z
- Updated: 2026-07-10T05:57:53.000Z
- Description: An automated n8n workflow that analyzes your Google Search Console keywords to identify pages that don’t match what searchers are actually looking for—helping you fix content misalignment and improve conversions.
- Author: Rananjay Raj
- Tags: #beehiiv, #Migrated-1781422191461, #Import 2026-06-14 13:00

![](https://buildwire.ai/content/images/2026/06/search-intent-mismatch-cover-png-t-1769617778.jpg)

## 📋 What This Workflow Does:

**The Problem It Solves:** Imagine someone searches “how to bake chocolate cake” (they want to learn), but Google shows them your cake shop’s pricing page (you want them to buy). That’s a **search intent mismatch**—the searcher won’t find what they need, they’ll bounce, and you’ll lose potential conversions.

This workflow automatically:

1. Pulls your top-performing keywords from Google Search Console
2. Reads the actual content of each page
3. Uses AI to determine if the page content matches what searchers expect
4. Sends you a prioritized report of pages that need fixing

---

## 🔄 Workflow Explained:

### Stage 1: Setup & Data Collection

| Node                           | What It Does                                                                                                                                                                                                                         |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Manual Trigger**             | Start button—click this to run the workflow manually                                                                                                                                                                                 |
| **⚙️ Setup Configuration**     | Your settings: website URL, thresholds, email address, business description. Think of it as the workflow’s control panel.                                                                                                            |
| 📊 **GSC: Fetch Top Keywords** | Connects to Google Search Console and pulls keyword data (which queries bring traffic, how many clicks, what pages rank). Uses a regex filter to focus only on main pages (homepage + first-level pages like /services/ or /about/). |

### Stage 2: Data Processing

| Node                              | What It Does                                                                                                                                                                           |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **📋 Process & Filter GSC Data**  | Cleans up the GSC data: removes low-traffic keywords (below your thresholds), sorts by clicks, and keeps only the top 100 keywords. Adds helpful info like “traffic potential” scores. |
| **Split Keywords for Processing** | Takes the list of 100 keywords and breaks them into individual items, so each keyword can be processed one by one.                                                                     |
| **Batch Keywords (10 at a time)** | Groups keywords into batches of 10\. This prevents overwhelming the AI and web scraping services with too many requests at once.                                                       |

### Stage 3: Content Analysis Loop

| Node                                    | What It Does                                                                                                                                                                                                                                    |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Deduplicate Pages**                   | Multiple keywords often point to the same page (e.g., “car insurance” and “auto insurance” both go to your insurance page). This node groups them together so we only scrape each page once—saving time and API costs.                          |
| **Filter Valid URLs**                   | Safety check: only processes URLs that start with “http”. Filters out any bad data before scraping.                                                                                                                                             |
| **Read URL Content (Jina AI)**          | Visits each page and extracts the text content in a clean format. If a page fails to load, it retries up to 2 times. Has a 60-second timeout for slow pages.                                                                                    |
| **Prepare AI Analysis Input**           | Packages everything the AI needs: the page content, the keywords pointing to it, and performance metrics. Trims content to 8,000 characters to keep costs reasonable.                                                                           |
| 🧠 **Claude: Intent Mismatch Analysis** | The brain of the operation! Sends the data to Claude AI, which analyzes: (1) What is the searcher looking for? (2) What does this page actually offer? (3) Do they match? Returns structured analysis with severity scores and recommendations. |
| **Parse Claude Analysis**               | Extracts the AI’s response and converts it to structured data the workflow can use. Handles errors gracefully if the AI response isn’t perfectly formatted.                                                                                     |
| **Loop Back for Next Batch**            | After processing one batch, this sends the workflow back to process the next batch of 10 keywords. Continues until all keywords are analyzed.                                                                                                   |

### Stage 4: Report Generation

| Node                            | What It Does                                                                                                                                                              |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Aggregate All Results**       | Collects all the individual analyses into one big dataset.                                                                                                                |
| 📊 **Generate Final Report**    | Crunches the numbers: How many mismatches? What’s the severity breakdown? Which pages need immediate attention? Creates prioritized lists and calculates traffic at risk. |
| 📧 **Format HTML Email Report** | Creates a beautiful, visual email report with color-coded severity badges, stats cards, and actionable recommendations.                                                   |
| 📧 **Send Email Report**        | Delivers the HTML report to your inbox via Gmail.                                                                                                                         |

### Stage 5: Data Storage

| Node                                | What It Does                                                                                                                                                                                                 |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Prepare Sheets Data**             | Formats the keyword-level data for storage.                                                                                                                                                                  |
| **Create a Database Page (Notion)** | Saves each keyword analysis to your Notion database for tracking over time. Stores: keyword, page URL, clicks, impressions, position, intent classification, page type, and whether a mismatch was detected. |

---

## 🎯 Understanding the Intent Classifications

### Keyword Intent Types

| Intent                           | What They Want         | Signal Words                                     |
| -------------------------------- | ---------------------- | ------------------------------------------------ |
| **INFORMATIONAL** 📚             | Learn something        | “how to”, “what is”, “why”, “guide”, “tutorial”  |
| **TRANSACTIONAL** 🛒             | Buy/convert now        | “buy”, “price”, “order”, “subscribe”, “near me”  |
| **COMMERCIAL\_INVESTIGATION** 🔍 | Research before buying | “best”, “review”, “vs”, “compare”, “alternative” |
| **NAVIGATIONAL** 🧭              | Find a specific page   | Brand name, “login”, “official”                  |

### Page Types

| Page Type             | Description                                |
| --------------------- | ------------------------------------------ |
| **PRODUCT\_PAGE**     | Selling a product or service               |
| **PRICING\_PAGE**     | Pricing, plans, packages                   |
| **BLOG\_EDUCATIONAL** | How-to guides, tutorials, learning content |
| **COMPARISON\_PAGE**  | Reviews, comparisons, “best of” lists      |
| **LANDING\_PAGE**     | Lead capture, signup forms                 |
| **HOMEPAGE**          | Main site overview                         |
| **CATEGORY\_PAGE**    | Product/service category listing           |
| **SUPPORT\_PAGE**     | Help docs, FAQs                            |

### Mismatch Examples

| If Keyword Intent Is…     | But Page Type Is… | Problem                                                         |
| ------------------------- | ----------------- | --------------------------------------------------------------- |
| INFORMATIONAL             | PRODUCT\_PAGE     | Person wants to learn, but you’re selling → They’ll bounce      |
| TRANSACTIONAL             | BLOG\_EDUCATIONAL | Person wants to buy, but you’re teaching → Lost sale            |
| COMMERCIAL\_INVESTIGATION | HOMEPAGE          | Person wants comparisons, but sees brand overview → Not helpful |

---

## ⚙️ Setup Instructions

### Prerequisites

- n8n instance (self-hosted or cloud)
- Google Search Console property verified
- Anthropic API key (for Claude)
- Gmail account with OAuth2
- Notion account with database created
- Jina AI account (free tier works)

### Step 1: Import the Workflow

1. Open n8n → Settings → Import
2. Upload the JSON file
3. Save the workflow

### Step 2: Configure Credentials

Create these credentials in n8n (Settings → Credentials):

| Credential                       | Used For              |
| -------------------------------- | --------------------- |
| **Google Search Console OAuth2** | Fetching keyword data |
| **Jina AI API**                  | Reading page content  |
| **Anthropic API**                | Claude AI analysis    |
| **Gmail OAuth2**                 | Sending email reports |
| **Notion API**                   | Storing results       |

### Step 3: Set Up Notion Database

Create a Notion database with these properties:

| Property          | Type                |
| ----------------- | ------------------- |
| Name (Title)      | Title (for keyword) |
| Page URL          | URL                 |
| Clicks            | Number              |
| Impressions       | Number              |
| Position          | Number              |
| Keyword Intent    | Rich Text           |
| Page Type         | Rich Text           |
| Mismatch Detected | Rich Text           |

### Step 4: Configure the Workflow

Edit the **⚙️ Setup Configuration** node:

```
{
  "site_url": "<https://yoursite.com/>",
  "date_range_days": 30,
  "min_clicks_threshold": 1,
  "min_impressions_threshold": 10,
  "top_keywords_limit": 100,
  "report_email": "your@email.com",
  "business_context": "Brief description of your business"
}

```

Update the **GSC node** regex filter if needed (currently filters for root + first-level pages only).

Update the **Notion node** with your database ID.

### Step 5: Test & Activate

1. Click “Test Workflow” to run manually
2. Check for errors
3. Toggle to “Active” for scheduled runs

---

## 💰 Cost Estimates

| Service             | Cost        | Notes                          |
| ------------------- | ----------- | ------------------------------ |
| **Claude Sonnet 4** | \~$0.90/run | 100 keywords ≈ 300K tokens     |
| **Jina AI**         | Free        | 1,000 requests/month included  |
| **n8n**             | Varies      | Self-hosted free, cloud varies |
| **Total**           | \~$4/month  | Weekly runs                    |

---

## 🔧 Customization Options

### Change the Schedule

Add a Schedule Trigger node connected to Setup Configuration:

- Cron expression: `0 9 * * 1` \= Every Monday at 9 AM

### Adjust Thresholds

In Setup Configuration, change:

- `min_clicks_threshold`: Minimum clicks to include a keyword
- `min_impressions_threshold`: Minimum impressions
- `top_keywords_limit`: How many keywords to analyze (max 100 recommended)

### Change the GSC Filter

The current regex `^https:\\/\\/yoursite\\.com\\/$|^https:\\/\\/yoursite\\.com\\/[^\\/]+\\/?$` only includes:

- Homepage
- First-level pages (e.g., `/about/`, `/services/`)

To include deeper pages, modify or remove this filter in the GSC node.

---

## 🐛 Troubleshooting

| Issue                   | Solution                                                           |
| ----------------------- | ------------------------------------------------------------------ |
| **GSC returns no data** | Check OAuth2 credentials, verify site property exists              |
| **Jina timeout errors** | Normal for slow pages—the retry will handle most cases             |
| **Claude parse errors** | Check AI response in execution logs—may need prompt adjustment     |
| **Notion not saving**   | Verify database ID and property names match exactly                |
| **Email not sending**   | Check Gmail OAuth2 credentials, verify “less secure apps” settings |

---

## 📊 Understanding Your Report

### Severity Levels

| Level          | Score  | Meaning                           | Action           |
| -------------- | ------ | --------------------------------- | ---------------- |
| **HIGH** 🔴    | 76-100 | Critical mismatch, major CVR loss | Fix immediately  |
| **MEDIUM** 🟠  | 51-75  | Significant opportunity           | Plan to address  |
| **LOW** 🔵     | 21-50  | Minor optimization needed         | Nice-to-have     |
| **ALIGNED** 🟢 | 0-20   | Content matches intent            | No action needed |

### Key Metrics

- **Mismatch Rate**: % of keywords with intent mismatches
- **Traffic at Risk**: Total clicks going to mismatched pages
- **CVR Opportunity**: Estimated conversion rate improvement if fixed

---

## 📈 Best Practices

1. **Run weekly** to catch new mismatches as rankings change
2. **Focus on HIGH severity first** \- biggest impact
3. **Track improvements** in Notion database over time
4. **Create new content** for keywords that don’t have a matching page
5. **Optimize existing pages** by adding sections that match searcher intent

---

## 📝 Changelog

**v1.0.0** \- Initial Release

- GSC data collection with page-level regex filter
- Jina AI native node with retry logic
- Claude Sonnet 4 analysis
- Notion database storage
- HTML email reports with severity badges
- Intent classification: 4 types
- Page type classification: 8 types
- Severity scoring: 0-100 scale

---

## FULL JSON CODE:

| ![](https://buildwire.ai/content/images/2026/06/file_attachment-38.png)Search\_Intent\_Mismatch\_Detector\_Sanitized.json41.99 KB • JSON File[Download](https://beehiiv-publication-files.s3.amazonaws.com/uploads/downloadables/a786a17c-8111-4762-9186-87896e7649de/7be4bcb5-c8b8-4e37-bcf5-bc3989169401/Search%5FIntent%5FMismatch%5FDetector%5FSanitized.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQCMHTQSE2JGAGXHJ%2F20260614%2Fus-east-1%2Fs3%2Faws4%5Frequest&X-Amz-Date=20260614T072955Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=395ee39ebb3637704cd138461b3121066f2c731faa257eda1f1ed4ee3086c9f0&ref=buildwire.ai) |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |