Live rank tracker
seo_track_keyword starts tracking a keyword’s position for a target domain. It creates the tracked row the daily ranking worker checks and queues the first check immediately — rank data arrives within minutes, not tomorrow.
- Required:
keywordandtarget_domain. search_engine:google(default),bing, or the AI engines —ai_overview,chatgpt,perplexity,claude,gemini— which track citation mentions rather than blue-link positions.ranking_type: "local"withbusiness_nametracks the local pack position; setlocation_nameto the city that matters (for example “Dallas, TX”).- Optional:
target_url(the page you expect to rank),device_type(desktop default),tracking_frequency(daily default, or weekly),target_rank(a goal like top 3),tags, andlocation_code/language_code. - Keywords tracking the same domain group together automatically; pass
goal_idonly to subdivide tracking within a domain.
seo_tracked_keywords_list shows what’s being tracked and seo_tracked_keyword_delete stops a keyword.
Reading results — seo_rankings_list has two views:
Page intelligence
The analysis suite (and where its data comes from)
Five analysis reads are computed by a weekly analysis pass (Sundays), not on demand. Each is empty — with a note saying so — until its data source is connected and the first weekly run completes. The honest data-source notes matter:Search Console: the full scope
Theseo_gsc_* family covers everything Google’s Search Console API exposes:
- Discovery:
seo_gsc_list_sites(verified properties). - Reports:
seo_gsc_search_queriesandseo_gsc_top_pagesfor the quick reads;seo_gsc_search_analyticsis the canonical query — any combination ofdate/query/page/country/device/searchAppearancedimensions with filters (equals, contains, regex), up to 25,000 rows per call;seo_gsc_time_seriesfor daily trends (“did my change help?” — overlay the deploy date);seo_gsc_period_comparisonjoins two periods and returns winners, losers, and rank climbers/droppers. - Indexing:
seo_gsc_inspect_urlruns URL Inspection (indexability, mobile usability, rich results — note Google’s public API only inspects the indexed snapshot; there is no live-test equivalent).seo_gsc_index_coverageis the best-available substitute for the Index Coverage report — Google exposes no bulk endpoint, so it fans out URL Inspection over a list you supply (up to 50 URLs per call) and buckets the results by coverage state. - Sitemaps:
seo_gsc_list_sitemapsandseo_gsc_get_sitemap(per-sitemap errors and warnings — the read to run when submitted exceeds indexed),seo_gsc_submit_sitemap(idempotent; run after a deploy that added indexable URLs), andseo_gsc_delete_sitemap(for structure migrations).
Sitemap writes need the write scope. Search Console connections authorized before late August 2026 were granted read-only access, which cannot submit or delete sitemaps. If
seo_gsc_submit_sitemap or seo_gsc_delete_sitemap fails with a permissions error, reconnect the Search Console connection — the reconnect grants the updated write scope. Reads are unaffected.Google Tag Manager: tag, version, publish
GTM rides the same Google authorization as your Google Analytics connection — one connection covers both. The flow exists to close a specific failure mode: a container whose conversion tags were created but never published records nothing, however complete it looks in GTM.1
Read the container — seo_gtm_status
Without
container_path, it lists the GTM accounts and containers the connection can see. With one, it returns the publish preview: the default workspace’s pending changes, the draft-vs-live tag split (draft-only tags are not serving), the currently live version, and a loud warning when the container has never been published.2
Create the tag — seo_gtm_tag_create
Creates a workspace draft only — nothing serves yet, so there’s no confirm gate.
tag_type is ga4_event (needs measurement_id + event_name) or ads_conversion (needs conversion_id + conversion_label from the Ads conversion action’s tag setup). Fire it from existing triggers (firing_trigger_ids) or create one: create_trigger: "all_pages", or "page_path" with trigger_page_path — the page-path trigger defaults to both a pageview and a history-change trigger, because on a modern site either one alone has a silent blind spot.3
Version it — seo_gtm_version_create
Snapshots the workspace into a container version. Still not live. Creating a version consumes the workspace (GTM opens a fresh one), and the call fails loudly on GTM sync problems instead of returning a version that doesn’t exist.
4
Publish — seo_gtm_publish
The step that changes the client’s live site: every tag in the version starts serving to real visitors immediately. It’s confirm-gated — the first call returns a preview (the version’s tags, what’s currently live, and any workspace changes that are not in this version) with
requires_confirm: true; repeat the identical call with confirm: true to publish.Version creation and publishing require the Tag Manager publish scopes, requested on new connections since late August 2026. A Google Analytics connection authorized before then returns a reconnect error naming the fix — reconnect Google Analytics and retry.
Related pages
- PPC Depth Tools — the conversion actions whose tags this flow installs
- Client Reporting & Approvals — rankings and search-term wins land in the client report; audit findings become implementable tasks
- Standing Playbooks — the weekly Core Web Vitals watch, rank-drop response, and content-decay refresh loops
- Track Your Rankings and Run an SEO Audit — the dashboard-side how-tos