seo_tag_geography
Classify keyword geographic intent and add geo:* tags (country, region, none, ambiguous). Use dryRun to preview tag counts and ambiguous keywords before writing.
Instructions
Geo pivot Stage 1. Async — classifies every keyword's geographic intent and writes a geo:* tag into userTags. Tags: geo:<country>-<subdivision> (e.g. "geo:us-mn") for a place that resolves to one region, geo:<country> (e.g. "geo:us") for country-only intent, geo:none for no geographic intent, geo:ambiguous for a place name that maps to multiple regions with no way to resolve it. Typically takes ~1–2 min. Uses credits (unless dryRun is true). Returns {operationId, status} — poll get_job with the operationId until state is completed (or failed/partially_failed/cancelled on error). The job result includes tagCounts (tag -> count), ambiguousKeywords (needs human review), and costUsd. Idempotent by default: keywords that already carry any geo:* tag are skipped on a re-run — pass retag:true to force re-classification of everything. Pass dryRun:true to get the full classification breakdown WITHOUT writing any tags — use this first to review tagCounts and ambiguousKeywords before committing. After completion, use seo_list_keywords or seo_list_keyword_ids with hasTag="geo:us-mn" (etc.) to select the tagged keywords for further action.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| retag | No | If true, re-classifies every keyword even if it already carries a geo:* tag (default: false — already-tagged keywords are skipped) | |
| dryRun | No | If true, classifies and returns the breakdown but writes nothing (default: false) | |
| brandId | No | Brand ID (defaults to active brand) |