Google Workspace
ericrisco/rsc-harness
A skill your agent uses when server-side code reads or writes Gmail, Drive, Calendar, or Sheets with a GCP service account and no human in the OAuth loop: picking the auth mode (app-owned vs…
[RU: Google Search Console API, гугл серч консоль, вебмастер гугл, gsc] GSC (Webmasters) API v1 — OAuth 2.0 + service account, searchanalytics.query (dimensions, filter operators, 25k row cap +…
$ npx skills add VKirill/claude-lane-stack --skill google-search-console -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install VKirill/claude-lane-stack google-search-console --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/lane-stack/skills/google/google-search-console .claude/skills/google-search-console && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "google-search-console" agent skill from https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-console into .claude/skills/google-search-console/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-search-console", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-consoleType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add VKirill/claude-lane-stack --skill google-search-console -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install VKirill/claude-lane-stack google-search-console --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/lane-stack/skills/google/google-search-console .agents/skills/google-search-console && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "google-search-console" agent skill from https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-console into .agents/skills/google-search-console/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-search-console", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add VKirill/claude-lane-stack --skill google-search-console -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install VKirill/claude-lane-stack google-search-console --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/lane-stack/skills/google/google-search-console .cursor/skills/google-search-console && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "google-search-console" agent skill from https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-console into .cursor/skills/google-search-console/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-search-console", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/VKirill/claude-lane-stack.git --path plugins/lane-stack/skills/google/google-search-console--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add VKirill/claude-lane-stack --skill google-search-console -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install VKirill/claude-lane-stack google-search-console --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/lane-stack/skills/google/google-search-console .gemini/skills/google-search-console && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "google-search-console" agent skill from https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-console into .gemini/skills/google-search-console/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-search-console", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install VKirill/claude-lane-stack google-search-consoleInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add VKirill/claude-lane-stack --skill google-search-console -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/lane-stack/skills/google/google-search-console .github/skills/google-search-console && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "google-search-console" agent skill from https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-console into .github/skills/google-search-console/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-search-console", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add VKirill/claude-lane-stack --skill google-search-console -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install VKirill/claude-lane-stack google-search-console --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VKirill/claude-lane-stack.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/lane-stack/skills/google/google-search-console .opencode/skills/google-search-console && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "google-search-console" agent skill from https://github.com/VKirill/claude-lane-stack/tree/main/plugins/lane-stack/skills/google/google-search-console into .opencode/skills/google-search-console/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "google-search-console", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
google-search-console[RU: Google Search Console API, гугл серч консоль, вебмастер гугл, gsc] GSC (Webmasters) API v1 — OAuth 2.0 + service account, searchanalytics.query (dimensions, filter operators, 25k row cap +…
Google Search Console is an agent skill from VKirill/claude-lane-stack. [RU: Google Search Console API, гугл серч консоль, вебмастер гугл, gsc] GSC (Webmasters) API v1 — OAuth 2.0 + service account, searchanalytics.query (dimensions, filter operators, 25k row cap + startRow pagination), urlInspection.index.inspect (2000/day cap), Sites + Sitemaps CRUD, Indexing API for JobPosting/BroadcastEvent only, ~2-3 day data lag. Use when: GSC, search console, webmasters api, urlInspection, URL-prefix vs Domain property. SKIP: Yandex Webmaster (→yandex-webmaster); GA4 (→google-analytics); Bing…
Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including reference files (for example `references/errors.md`, `references/indexing-api.md` and `references/integration.md`).
It sits in Backend & APIs, covering Technical SEO, OAuth and OpenID Connect and Web scraping. It works with Google Search Console, Google Analytics, Google Cloud and Python. The repository describes itself as: Multi-agent AI coding factory for one person — Claude Code PM + Codex/Qwen/Grok/Kimi/AGY writers, durable conveyor, auto-merge to main. The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 45fa19e. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
googleapis.comsearchconsole.googleapis.comindexing.googleapis.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Google Search Console loads about 4.9k tokens when it runs, and up to ~19k if it reads all its reference files. Until then it costs about 159 tokens; SKILL.md has 2,064 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from VKirill/claude-lane-stack at commit 45fa19e, republished under its MIT licence (© VKirill). 2,064 words, ~4,920 tokens.
.claude/skills/google-search-console/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.<!-- versions:start -->
Primary pins:
v1 (Webmasters v3 endpoints stable; URL Inspection on searchconsole.googleapis.com/v1)v3 (JobPosting + BroadcastEvent only)3.14.x24.x (Active LTS)Source of truth: STACK_VERSIONS.md — verified 2026-08-24
<!-- versions:end -->
Loaded automatically when the description matches the active task. Read only the section you need, then follow the link to the relevant reference file for full detail.
urlInspection.index.inspect (verdict, coverageState, lastCrawlTime, googleCanonical vs userCanonical, mobileUsability, AMP, richResults).sitemap.xml for an added property (/webmasters/v3/sites/{siteUrl}/sitemaps).sc-domain:example.com) and check permission level.google-api-python-client + google-auth) or Node.js (googleapis) client with service account and automatic 25k-cap pagination.(query, page, country, device, date) → clicks/impressions/ctr/position.yandex-webmaster.google-analytics.google-cloud-auth.xmlstock.Google Search Console API (Webmasters v3 + URL Inspection v1) is the only official channel for Google organic data: queries, clicks, impressions, CTR, position, index status. This skill covers OAuth 2.0 (user + service account), Search Analytics query with filters and 25k pagination, URL Inspection with daily quota, Sites + Sitemaps CRUD, and — separately — Indexing API (with a strict JobPosting/BroadcastEvent warning).
This skill is high-stakes because:
dailyLimitExceeded. Design with a rate limiter and prioritization (new/changed URLs first).startRow pagination the long tail is silently lost — the classic "where are my queries?" bug.dataState: "final" (default) or know what all means.sc-domain:example.com aggregates all protocols/subdomains; https://www.example.com/ is only that exact prefix. Mixing them yields wrong numbers.searchAppearance dimension cannot be combined with other dimensions in one request — separate call required.quotaExceeded or dailyLimitExceeded. Backoff is mandatory.The skill owns provider-domain knowledge: endpoints, dimension/filter semantics, freshness lag, quotas, and the billing-free-but-quota-limited model. Pure HTTP plumbing belongs in httpx / nodejs. Deeper auth belongs in google-cloud-auth.
Two paths: (a) User OAuth 2.0 Authorization Code flow with refresh_token — for apps where the GSC owner logs in; scopes https://www.googleapis.com/auth/webmasters.readonly (read) or webmasters (full, includes sitemap submit). (b) Service Account JWT — for server-to-server; the service account email must be added as a user in the Search Console UI (Settings → Users and permissions → Add user). Without that, the API returns 403 Forbidden or 404 User does not have sufficient permission for site.
Full reference: references/setup.md
siteUrl comes in two shapes: URL-prefix (https://www.example.com/ — trailing slash mandatory, exact protocol) and Domain (sc-domain:example.com — aggregates all protocols/subdomains, DNS-verified). Their data does not match: a Domain property sees more impressions. For URL Inspection, siteUrl must match the property exactly.
Full reference: references/setup.md
POST /webmasters/v3/sites/{siteUrl}/searchAnalytics/query. Body: startDate, endDate (YYYY-MM-DD, Pacific Time), dimensions[] (date, hour, query, page, country, device, searchAppearance), type (web/discover/googleNews/news/image/video, default web), aggregationType (auto/byPage/byProperty/byNewsShowcasePanel), dimensionFilterGroups[] (groupType is always and; operators equals/contains/notEquals/notContains/includingRegex/excludingRegex), rowLimit (1-25000, default 1000), startRow (0+), dataState (final/all/hourly_all). Response: rows[].keys[] + clicks, impressions, ctr (0..1), position. Metadata: responseAggregationType, metadata.first_incomplete_date.
Full reference: references/search-analytics.md
Hard cap = 25,000 rows per response. Full export: loop with rowLimit=25000 and increment startRow += 25000 until a response returns fewer rows than the limit (or zero — empty response means end). There is no next-page-token. Without pagination the tail is silently lost beyond the top 25k by clicks.
Full reference: references/search-analytics.md
Final data appears with a 2-3 day delay (up to 4 for the long tail). dataState: "final" (default) excludes incomplete days. dataState: "all" includes fresh, recomputable rows (fine for "yesterday" dashboards, bad for historical reports). metadata.first_incomplete_date in the response tells you when data may still change. Hourly data: dataState: "hourly_all" + dimensions: ["hour"].
Full reference: references/search-analytics.md
POST https://searchconsole.googleapis.com/v1/urlInspection/index:inspect. Body: inspectionUrl, siteUrl (must match the added property; URL-prefix needs trailing /), languageCode (BCP-47). Response is inspectionResult containing: indexStatusResult (verdict, coverageState, robotsTxtState, indexingState, lastCrawlTime, pageFetchState, googleCanonical, userCanonical, sitemap[], referringUrls[], crawledAs), ampResult, mobileUsabilityResult, richResultsResult. Quota: 2000/day/property and 600 QPM/property.
Full reference: references/url-inspection.md
Sites: GET /webmasters/v3/sites (list), GET /sites/{siteUrl} (get), PUT /sites/{siteUrl} (add — attaches site to current user, not verification), DELETE /sites/{siteUrl}. Fields: siteUrl, permissionLevel (siteFullUser/siteOwner/siteRestrictedUser/siteUnverifiedUser). Sitemaps: GET /sites/{siteUrl}/sitemaps (list), GET /sites/{siteUrl}/sitemaps/{feedpath} (get; feedpath URL-encoded), PUT /sites/.../sitemaps/{feedpath} (submit), DELETE (unsubmit). Fields: path, lastSubmitted, lastDownloaded, isPending, isSitemapsIndex, type (sitemap/rssFeed/atomFeed/urlList/patternSitemap/notSitemap), warnings, errors, contents[].
Full reference: references/sites-and-sitemaps.md
POST https://indexing.googleapis.com/v3/urlNotifications:publish. Body: { "url": "...", "type": "URL_UPDATED" | "URL_DELETED" }. WARNING: Google explicitly states it "can only be used to crawl pages with either JobPosting or BroadcastEvent (embedded in VideoObject)". Using it for regular pages is abuse → revoke and possible manual action. Batch up to 100 sub-requests via multipart.
WARNING: Service account must have Owner role in the GSC property — Full user is insufficient for the Indexing API. Re-share property with SA email as Owner if you get 403.
Full reference: references/indexing-api.md
Search Analytics: 1200 QPM per-site, 1200 QPM per-user, 40,000 QPM + 30,000,000 QPD per-project. URL Inspection: 600 QPM per-site, 2000 QPD per-site, 15,000 QPM + 10,000,000 QPD per-project. Other resources (Sites/Sitemaps): 20 QPS + 200 QPM per-user, 100,000,000 QPD per-project. Exceeding → 429 with reason quotaExceeded / userRateLimitExceeded / dailyLimitExceeded. Exponential backoff is required.
Full reference: references/rate-limits.md
400 badRequest — invalid dimensions/dates. 401 authError — expired token, refresh. 403 forbidden — no permission on property or service account not added. 404 — siteUrl unknown to user. 429 — quota, backoff. 500/503 — transient, retry with jitter. Reason codes are in error.errors[].reason.
Full reference: references/errors.md
Auth bootstrap → Search Analytics query lifecycle → URL Inspection → Sitemaps → Indexing API caveat → Quota management → Daily ETL into PostgreSQL.
Full reference: references/workflow.md
Drop-in templates: Python with google-api-python-client (service account from JSON), Python with raw httpx + JWT assertion for fine control, Node.js with googleapis. Pagination helper for 25k cap. URL Inspection batch worker with per-property quota tracker. PostgreSQL schema for daily snapshots.
Full reference: references/integration.md
| Resource | Endpoint (base + path) | Method |
|---|---|---|
| Search Analytics query | webmasters/v3/sites/{siteUrl}/searchAnalytics/query | POST |
| Sites list | webmasters/v3/sites | GET |
| Sites get | webmasters/v3/sites/{siteUrl} | GET |
| Sites add | webmasters/v3/sites/{siteUrl} | PUT |
| Sites delete | webmasters/v3/sites/{siteUrl} | DELETE |
| Sitemaps list | webmasters/v3/sites/{siteUrl}/sitemaps | GET |
| Sitemap get | webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath} | GET |
| Sitemap submit | webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath} | PUT |
| Sitemap delete | webmasters/v3/sites/{siteUrl}/sitemaps/{feedpath} | DELETE |
| URL Inspection | searchconsole/v1/urlInspection/index:inspect | POST |
| Indexing API | indexing/v3/urlNotifications:publish | POST |
| Dimension | Notes |
|---|---|
date | YYYY-MM-DD (PT) |
hour | ISO-8601, only with dataState hourly_all |
query | search query |
page | landing URL |
country | ISO 3-letter, lower-case (usa, rus) |
device | DESKTOP/MOBILE/TABLET |
searchAppearance | features: AMP, RICH_RESULT, VIDEO, ... — cannot combine with other dimensions in one request |
| Filter operator | Behavior |
|---|---|
equals (default) | exact match |
notEquals | exact exclusion |
contains | substring |
notContains | without substring |
includingRegex | RE2 include |
excludingRegex | RE2 exclude |
| Status / Reason | Meaning | Action |
|---|---|---|
400 badRequest | invalid dimensions/dates | check formatting |
401 authError | token expired | refresh OAuth token |
403 forbidden | service account not added to property | add via UI |
| 404 | siteUrl unknown to user | verify, add, or use sc-domain: |
429 quotaExceeded | short-window | exp backoff |
429 userRateLimitExceeded | per-user QPM | backoff + lower concurrency |
429 dailyLimitExceeded | per-day | wait until PT midnight |
| 500 / 503 | transient | retry with jitter |
startRow += 25000 until response is empty.siteUrl — data will not match; URL Inspection returns 404. Fix: copy the string from GSC UI verbatim; Domain needs the sc-domain: prefix.xxx@yyy.iam.gserviceaccount.com as Restricted or Full user in the UI. The API never self-bootstraps.dataState: "all" for fresh incomplete data, or accept the delay.searchAppearance with other dimensions — spec requires a dedicated call. Fix: first request — just searchAppearance to discover values; second — filter by a specific feature.dailyLimitExceeded within minutes. Fix: 2000/day/property; prioritize new/changed; persist results for N days.encodeURIComponent("https://example.com/sitemap.xml").country as "US" — it is lower-case 3-letter ISO: "usa". Fix: validate filter format.permissionLevel: siteUnverifiedUser — that user gets empty API responses. Fix: ensure siteOwner / siteFullUser / siteRestrictedUser.discover or googleNews for a brand-new property — may be empty if Google has not classified the source. Fix: confirm baseline with type: web first.responseAggregationType differs from requested — Google may return byPage instead of auto. Fix: read the response field for analytics correctness.sites.list.dataState all, API default final), different property types (Domain vs URL-prefix), or missing pagination.dailyLimitExceeded on URL Inspection well before the day ends — no per-property limiter. Stop the worker; recompute around 2000/property.N URLs × 2000/day/property.final vs all dataState and explicitly call out the 2-3 day lag.sc-domain: prefix; never pass https://example.com/ as Domain.httpx (Python) or node:fetch / googleapis (Node) — never reimplement.webmasters.readonly scope for read-only; webmasters only when sitemap submit / sites add is genuinely needed.country filters — lowercase ISO-3 (usa, not US).device filters — uppercase (MOBILE, DESKTOP, TABLET).feedpath — URL-encoded.lastSubmitted / lastDownloaded timestamps — RFC 3339.yandex-webmaster — Yandex Webmaster API (separate provider, similar task for RU sites).google-analytics — Google Analytics 4 Data API (web analytics, not GSC).xmlstock — true SERP snapshots via parsing (position with geo/device).google-cloud-auth — generic OAuth / service account patterns for all Google APIs.httpx, nodejs — HTTP transport for custom clients.postgresql, redis — persistence for snapshots, refresh tokens, URL Inspection cache.| Section | Reference |
|---|---|
| Auth + property setup | references/setup.md |
| Search Analytics deep dive | references/search-analytics.md |
| URL Inspection | references/url-inspection.md |
| Sites + Sitemaps | references/sites-and-sitemaps.md |
| Indexing API caveat | references/indexing-api.md |
| Errors | references/errors.md |
| Rate limits | references/rate-limits.md |
| End-to-end workflows | references/workflow.md |
| Python + Node clients, DB schema | references/integration.md |
© VKirill, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 9 other files (references) in plugins/lane-stack/skills/google/google-search-console of VKirill/claude-lane-stack.
Open the folder on GitHubat commit 45fa19e
Google Search Console next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Google Search Console this skillVKirill/claude-lane-stack | 122 | — | ~4.9k | Automated safety check: Pass | MIT | |
| Google Workspaceericrisco/rsc-harness | 174 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Ga4 Auth Setupjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.6k | Automated safety check: Pass | MIT | |
| Search Console ReportLeoYeAI/openclaw-master-skills | 2.2k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Google SEO APIsAgriciDaniel/claude-seo | 19k | 1 repos | ~4.2k | Automated safety check: Pass | MIT | |
| Blog GoogleAgriciDaniel/claude-blog | 2.3k | 1 repos | ~3.3k | Automated safety check: Notes | MIT |
ericrisco/rsc-harness
A skill your agent uses when server-side code reads or writes Gmail, Drive, Calendar, or Sheets with a GCP service account and no human in the OAuth loop: picking the auth mode (app-owned vs…
jeremylongshore/tons-of-skills-marketplace
Configure auth for the GA4 Data API — OAuth user credentials for interactive use, or a service account for automation / CI.
LeoYeAI/openclaw-master-skills
Generate comprehensive SEO analysis reports from Google Search Console data with PDF export.
AgriciDaniel/claude-seo
Pulls real Google data for SEO work: Search Console, PageSpeed Insights, CrUX field data, the Indexing API and GA4 organic traffic, through /seo google commands.
AgriciDaniel/claude-blog
Google API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity…
sickn33/agentic-awesome-skills
Coleta e consulta dados de leiloeiros oficiais de todas as 27 Juntas Comerciais do Brasil.
VKirill/claude-lane-stack
Lane-stack design + brand intelligence (vendored ui-ux-pro-max).
VKirill/claude-lane-stack
Owner-facing architect for a new app or service. An agent skill from VKirill/claude-lane-stack.
VKirill/claude-lane-stack
Live browser QA + Playwright-compatible replay. An agent skill from VKirill/claude-lane-stack.
VKirill/claude-lane-stack
Карта файлов копирайта в .agents/copy/: шаблоны, статусы, цепочка audience→headlines→ux.
VKirill/claude-lane-stack
Dispatch copy-lead helpers: Tavily, Codex luna/terra, grok/X, OpenCode DeepSeek, Cursor Grok 4.6 medium-fast.
VKirill/claude-lane-stack
Keep living docs/ honest after code changes. An agent skill from VKirill/claude-lane-stack.
Categories
[RU: Google Search Console API, гугл серч консоль, вебмастер гугл, gsc] GSC (Webmasters) API v1 — OAuth 2.0 + service account, searchanalytics.query (dimensions, filter operators, 25k row cap +…. Google Search Console is an agent skill from VKirill/claude-lane-stack.inspect (2000/day cap), Sites + Sitemaps CRUD, Indexing API for JobPosting/BroadcastEvent only, ~2-3 day data lag.
Google Search Console fits situations like: URL-prefix vs Domain property; tasks that involve Technical SEO; tasks that involve OAuth and OpenID Connect.
Run `npx skills add VKirill/claude-lane-stack --skill google-search-console -a claude-code`. Or copy the skill folder (plugins/lane-stack/skills/google/google-search-console in VKirill/claude-lane-stack) into .claude/skills/google-search-console in your project. Claude Code loads it when a task matches its description.
Run `npx skills add VKirill/claude-lane-stack --skill google-search-console -a codex`. Or copy the skill folder (plugins/lane-stack/skills/google/google-search-console in VKirill/claude-lane-stack) into .agents/skills/google-search-console in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add VKirill/claude-lane-stack --skill google-search-console -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/google-search-console, .gemini/skills/google-search-console, .github/skills/google-search-console and .opencode/skills/google-search-console in your project.
SKILL.md names no scripts, command-line tools or credentials: Google Search Console is instructions for the agent only. Our summary lists: Python 3; Node.js.
SKILL.md names 3 domains. In commands or code: googleapis.com, searchconsole.googleapis.com and indexing.googleapis.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Google Search Console is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 14k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Google Search Console: Google Workspace (ericrisco/rsc-harness, 174 stars), Ga4 Auth Setup (jeremylongshore/tons-of-skills-marketplace, 2.8k stars), Search Console Report (LeoYeAI/openclaw-master-skills, 2.2k stars) and Google SEO APIs (AgriciDaniel/claude-seo, 19k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
VKirill (a GitHub user) maintains it in VKirill/claude-lane-stack, which has 122 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 9, 2026.
Source: VKirill/claude-lane-stack on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.