Back to Skills

URL Keyword Strategist

url-keyword-strategist

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.

SKILL.md

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:

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:

  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:

# 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.