URL Keyword Strategist
When to Use
Use this skill when the user wants an SEO keyword strategy from a web page URL,
landing page URL, product page URL, or competitor page URL. Typical requests:
- Analyze this URL and suggest SEO keywords.
- Extract competitor keyword opportunities from this page.
- Build a keyword strategy for this landing page.
- Use SERP evidence to decide which keywords this page should target.
- Find content clusters, search intent, People Also Ask questions, related
searches, and competitor signals for a URL.
This skill is for strategy and evidence synthesis, not raw scraping alone. The
final answer should help the user decide which keywords to compete for and what
content or page structure to create.
Required:
url: The web page to analyze. It can be the user’s own page or a competitor
page.
Optional:
country or gl: Default to us unless the user specifies a market.
language or hl: Default to en unless the user writes in another
language or specifies a target language.
location: Optional SerpApi location string when the user names a city,
region, or country.
site_type: own_site, competitor, or unknown; infer when obvious.
business_context: A short user-provided description of the product,
audience, offer, or business goal.
content_goal: blog, landing_page, product_page, comparison_page,
docs, or unknown; infer from the URL and page when obvious.
max_seed_keywords: Default to 5 to control SerpApi usage unless the user
asks for a broader analysis.
Ask one focused follow-up only when no URL is provided, or when the requested
target market/language would materially change the search results and cannot be
inferred from the user message or page.
Execution
Use local reading and reasoning for the page understanding step, and use the
authenticated OO SerpApi connector for Google SERP evidence. Do not run oo search or oo connector search; the callable contract is already resolved.
Connector contract:
- Service:
serpapi
- Action:
google_search
- Description: Run a Google web search through SerpApi.
- Required input:
q
- Optional inputs:
location, hl, gl, start, num, safe
- Useful output fields:
organic_results, related_questions,
related_searches, search_information, search_metadata,
search_parameters
Canonical command:
oo connector run serpapi \
--action google_search \
--data '{"q":"<query>","num":10,"hl":"en","gl":"us"}' \
--json
For quote-heavy or generated payloads, write a temporary JSON payload and use:
oo connector run serpapi --action google_search --data @payload.json --json
Recommended workflow:
- Fetch and read the target URL with ordinary local tools or browser access.
Extract title, meta description, H1/H2 headings, visible product/offer copy,
CTA text, pricing/comparison terms, and repeated feature/problem words.
- Infer page type, core offer, target audience, geographic/language signals,
and whether the URL appears to be the user’s own page or a competitor page.
- Generate 3 to 5 seed keywords from the page. Prefer mid-tail phrases with
commercial, solution, comparison, problem-aware, or category intent. Avoid
pure brand terms unless the user explicitly wants brand visibility.
- Run
serpapi.google_search for each seed keyword. Use num: 10 by default,
the inferred or requested hl/gl, and location only when supplied or
clearly needed.
- Optionally run one or two refined SERP queries when the first results reveal
a better phrase from
related_searches, related_questions, repeated
snippet wording, or competitor positioning. Keep total queries modest unless
the user asks for a deep/batch analysis.
- Read SERP evidence from:
organic_results[].position, title, link, displayed_link, snippet
related_questions[].question, title, link, snippet
related_searches[].query
- ad or shopping fields if present in the raw response, but do not assume
they are always returned by the normalized schema
- Score opportunities qualitatively from SERP evidence. SerpApi does not
provide Ahrefs/Semrush-style search volume, CPC, or keyword difficulty, so do
not present those as measured values unless the user supplies another data
source. Use labels such as
low, medium, high, and include the evidence
behind each judgment.
Opportunity scoring heuristics:
- Positive: strong page fit, clear commercial or problem-aware intent,
mid-tail specificity, SERP results with smaller/specialized domains, repeated
related-search/PAA support, visible content gaps, comparison or alternative
intent, and clear fit to the user’s offer.
- Negative: ambiguous intent, SERP dominated by large authoritative domains,
mostly informational results for a commercial page, brand-only queries owned
by another company, weak fit to the URL, and no supporting related-search or
PAA evidence.
Use this task pattern because the user need extracted from n8n community
evidence is not merely “return SERP data”; users want a URL or topic turned into
ranked keyword opportunities, content clusters, and strategy using real SERP
signals.
Result Handling
Write the final report in the user’s language. If the user writes Chinese,
output Chinese. If the user writes English, output English. Keep keywords in
their natural search language unless translation is explicitly useful for the
target market.
Default final output is Markdown in chat. Include two layers:
- A concise strategy report for decision-making.
- Evidence tables that can be copied into a spreadsheet.
Use this structure unless the user requests a different format:
# Keyword Strategy
## 1. Page Understanding
- URL:
- Page type:
- Core offer:
- Target audience inferred:
- Main positioning:
- Current keyword signals from page:
## 2. Seed Keywords Extracted
| Seed keyword | Source | Intent guess | Why it matters |
|---|---|---|---|
## 3. SERP Evidence Summary
| Keyword | SERP intent | Top competitor domains | SERP features | Ads? | Related searches / PAA signals |
|---|---|---|---|---|---|
## 4. Keyword Opportunities
| Priority | Keyword | Intent | Opportunity | Competition estimate | Recommended page type | Evidence |
|---|---|---|---|---|---|---|
## 5. Recommended Keyword Clusters
### Cluster: <name>
- Primary keyword:
- Secondary keywords:
- Questions to answer:
- Suggested page/content:
- SERP rationale:
## 6. Content Strategy
- Pages to create or improve:
- Suggested title/H1 ideas:
- FAQ section:
- Internal linking ideas:
- Keywords to avoid or deprioritize:
## 7. Raw SERP Notes
- Important competitors:
- Repeated phrases in snippets:
- People Also Ask questions:
- Related searches:
Always distinguish measured facts from inference:
- Facts: SERP result titles, domains, snippets, related searches, PAA questions.
- Inferences: intent labels, competition estimates, content gaps, opportunity
score, recommended page type.
If the user asks for a file, create a local Markdown or CSV artifact under the
current working directory or user-approved project path and report the file path
clearly. Otherwise, keep the report inline.
Failure Handling
- Missing URL: Ask for the URL and optionally the target market/language.
- URL inaccessible: Report the fetch failure, then proceed only if the user
provides page text or authorizes using SERP-only analysis.
- SerpApi auth or authorization errors: Tell the user the OOMOL SerpApi
connector needs authorization or re-authorization and point them to
https://console.oomol.com/app-connections?provider=serpapi.
- Billing/quota/rate errors: Report that SerpApi quota or billing blocked the
SERP step. Offer a page-only preliminary strategy, clearly labeled as missing
SERP evidence.
- Empty or irrelevant SERP results: Try one refined query based on page wording.
If still poor, report low confidence and show the attempted queries.
- Schema rejection: Use only fields declared by the connector schema:
q, location, hl, gl, start, num, safe.
- Do not claim true search volume, CPC, or keyword difficulty from SerpApi
results. If the user needs those metrics, explain that a provider such as
DataForSEO, Google Ads Keyword Planner, Ahrefs, or Semrush would be needed.
---
name: url-keyword-strategist
description: 'Generate an SEO keyword strategy from a website URL, landing page, or competitor page. Use when the user asks to analyze a URL for keyword opportunities, SERP evidence, competitor signals, search intent, content clusters, and recommended SEO strategy using SerpApi through oo.'
metadata:
icon: ':lucide:search-check:'
title: URL Keyword Strategist
---
# URL Keyword Strategist
## When to Use
Use this skill when the user wants an SEO keyword strategy from a web page URL,
landing page URL, product page URL, or competitor page URL. Typical requests:
- Analyze this URL and suggest SEO keywords.
- Extract competitor keyword opportunities from this page.
- Build a keyword strategy for this landing page.
- Use SERP evidence to decide which keywords this page should target.
- Find content clusters, search intent, People Also Ask questions, related
searches, and competitor signals for a URL.
This skill is for strategy and evidence synthesis, not raw scraping alone. The
final answer should help the user decide which keywords to compete for and what
content or page structure to create.
## Inputs
Required:
- `url`: The web page to analyze. It can be the user's own page or a competitor
page.
Optional:
- `country` or `gl`: Default to `us` unless the user specifies a market.
- `language` or `hl`: Default to `en` unless the user writes in another
language or specifies a target language.
- `location`: Optional SerpApi location string when the user names a city,
region, or country.
- `site_type`: `own_site`, `competitor`, or `unknown`; infer when obvious.
- `business_context`: A short user-provided description of the product,
audience, offer, or business goal.
- `content_goal`: `blog`, `landing_page`, `product_page`, `comparison_page`,
`docs`, or `unknown`; infer from the URL and page when obvious.
- `max_seed_keywords`: Default to 5 to control SerpApi usage unless the user
asks for a broader analysis.
Ask one focused follow-up only when no URL is provided, or when the requested
target market/language would materially change the search results and cannot be
inferred from the user message or page.
## Execution
Use local reading and reasoning for the page understanding step, and use the
authenticated OO SerpApi connector for Google SERP evidence. Do not run `oo
search` or `oo connector search`; the callable contract is already resolved.
Connector contract:
- Service: `serpapi`
- Action: `google_search`
- Description: Run a Google web search through SerpApi.
- Required input: `q`
- Optional inputs: `location`, `hl`, `gl`, `start`, `num`, `safe`
- Useful output fields: `organic_results`, `related_questions`,
`related_searches`, `search_information`, `search_metadata`,
`search_parameters`
Canonical command:
```bash
oo connector run serpapi \
--action google_search \
--data '{"q":"<query>","num":10,"hl":"en","gl":"us"}' \
--json
```
For quote-heavy or generated payloads, write a temporary JSON payload and use:
```bash
oo connector run serpapi --action google_search --data @payload.json --json
```
Recommended workflow:
1. Fetch and read the target URL with ordinary local tools or browser access.
Extract title, meta description, H1/H2 headings, visible product/offer copy,
CTA text, pricing/comparison terms, and repeated feature/problem words.
2. Infer page type, core offer, target audience, geographic/language signals,
and whether the URL appears to be the user's own page or a competitor page.
3. Generate 3 to 5 seed keywords from the page. Prefer mid-tail phrases with
commercial, solution, comparison, problem-aware, or category intent. Avoid
pure brand terms unless the user explicitly wants brand visibility.
4. Run `serpapi.google_search` for each seed keyword. Use `num: 10` by default,
the inferred or requested `hl`/`gl`, and `location` only when supplied or
clearly needed.
5. Optionally run one or two refined SERP queries when the first results reveal
a better phrase from `related_searches`, `related_questions`, repeated
snippet wording, or competitor positioning. Keep total queries modest unless
the user asks for a deep/batch analysis.
6. Read SERP evidence from:
- `organic_results[].position`, `title`, `link`, `displayed_link`, `snippet`
- `related_questions[].question`, `title`, `link`, `snippet`
- `related_searches[].query`
- ad or shopping fields if present in the raw response, but do not assume
they are always returned by the normalized schema
7. Score opportunities qualitatively from SERP evidence. SerpApi does not
provide Ahrefs/Semrush-style search volume, CPC, or keyword difficulty, so do
not present those as measured values unless the user supplies another data
source. Use labels such as `low`, `medium`, `high`, and include the evidence
behind each judgment.
Opportunity scoring heuristics:
- Positive: strong page fit, clear commercial or problem-aware intent,
mid-tail specificity, SERP results with smaller/specialized domains, repeated
related-search/PAA support, visible content gaps, comparison or alternative
intent, and clear fit to the user's offer.
- Negative: ambiguous intent, SERP dominated by large authoritative domains,
mostly informational results for a commercial page, brand-only queries owned
by another company, weak fit to the URL, and no supporting related-search or
PAA evidence.
Use this task pattern because the user need extracted from n8n community
evidence is not merely "return SERP data"; users want a URL or topic turned into
ranked keyword opportunities, content clusters, and strategy using real SERP
signals.
## Result Handling
Write the final report in the user's language. If the user writes Chinese,
output Chinese. If the user writes English, output English. Keep keywords in
their natural search language unless translation is explicitly useful for the
target market.
Default final output is Markdown in chat. Include two layers:
1. A concise strategy report for decision-making.
2. Evidence tables that can be copied into a spreadsheet.
Use this structure unless the user requests a different format:
```markdown
# Keyword Strategy
## 1. Page Understanding
- URL:
- Page type:
- Core offer:
- Target audience inferred:
- Main positioning:
- Current keyword signals from page:
## 2. Seed Keywords Extracted
| Seed keyword | Source | Intent guess | Why it matters |
|---|---|---|---|
## 3. SERP Evidence Summary
| Keyword | SERP intent | Top competitor domains | SERP features | Ads? | Related searches / PAA signals |
|---|---|---|---|---|---|
## 4. Keyword Opportunities
| Priority | Keyword | Intent | Opportunity | Competition estimate | Recommended page type | Evidence |
|---|---|---|---|---|---|---|
## 5. Recommended Keyword Clusters
### Cluster: <name>
- Primary keyword:
- Secondary keywords:
- Questions to answer:
- Suggested page/content:
- SERP rationale:
## 6. Content Strategy
- Pages to create or improve:
- Suggested title/H1 ideas:
- FAQ section:
- Internal linking ideas:
- Keywords to avoid or deprioritize:
## 7. Raw SERP Notes
- Important competitors:
- Repeated phrases in snippets:
- People Also Ask questions:
- Related searches:
```
Always distinguish measured facts from inference:
- Facts: SERP result titles, domains, snippets, related searches, PAA questions.
- Inferences: intent labels, competition estimates, content gaps, opportunity
score, recommended page type.
If the user asks for a file, create a local Markdown or CSV artifact under the
current working directory or user-approved project path and report the file path
clearly. Otherwise, keep the report inline.
## Failure Handling
- Missing URL: Ask for the URL and optionally the target market/language.
- URL inaccessible: Report the fetch failure, then proceed only if the user
provides page text or authorizes using SERP-only analysis.
- SerpApi auth or authorization errors: Tell the user the OOMOL SerpApi
connector needs authorization or re-authorization and point them to
`https://console.oomol.com/app-connections?provider=serpapi`.
- Billing/quota/rate errors: Report that SerpApi quota or billing blocked the
SERP step. Offer a page-only preliminary strategy, clearly labeled as missing
SERP evidence.
- Empty or irrelevant SERP results: Try one refined query based on page wording.
If still poor, report low confidence and show the attempted queries.
- Schema rejection: Use only fields declared by the connector schema:
`q`, `location`, `hl`, `gl`, `start`, `num`, `safe`.
- Do not claim true search volume, CPC, or keyword difficulty from SerpApi
results. If the user needs those metrics, explain that a provider such as
DataForSEO, Google Ads Keyword Planner, Ahrefs, or Semrush would be needed.