setup
Skill0 starsChanged 2 days agoMITView on GitHub
Connect the user's own Search Console, Bing Webmaster Tools, Google Analytics 4, Chrome UX Report (CrUX) and IndexNow accounts so the sitetiller CLI can read their data, then test each connection. Use when the user says 'set up Search Console', 'connect GSC/Bing/GA4', 'get an API key', 'GOOGLE_APPLICATION_CREDENTIALS', 'service account', 'my gsc command fails with 401/403', 'IndexNow key', or runs a sitetiller command that reports missing credentials. Covers read-only scopes, where secrets live, and a connection test per service.
- Reads credentials
191 other projects use a version of this.
Adopted by
Most recently taken up by
- GoogleCloudPlatform/gemini-cloud-assist-mcptheir own version, first seen Nov 15, 2026
- finolabs/vibecodetheir own version, first seen Nov 15, 2026
- quickchatai/quickreviewtheir own version, first seen Nov 15, 2026
- tomw1808/flash-agentstheir own version, first seen Nov 15, 2026
- felipeam86/pipe-skillstheir own version, first seen Nov 15, 2026
- oss-invisible/playwright_mcptheir own version, first seen Nov 15, 2026
Used with
Projects with it also use add-voice-transcription, add-discord and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
juancruzmunozalbeloSkilladd-voice-transcription
Add voice message transcription to NanoClaw using OpenAI's Whisper API. Automatically transcribes WhatsApp voice notes so the agent can read and respond to them.
Also in 5 projects that use this
MicrosoftSkilladd-discord
Add Discord bot channel integration via Chat SDK.
Also in 11 projects that use this
MicrosoftSkilladd-slack
Add Slack channel integration via Chat SDK.
Also in 11 projects that use this
juancruzmunozalbeloSkilladd-telegram-swarm
Add Agent Swarm (Teams) support to Telegram. Each subagent gets its own bot identity in the group. Requires Telegram channel to be set up first (use /add-telegram). Triggers on "agent swarm", "agent teams telegram", "telegram swarm", "bot pool".
Also in 7 projects that use this
- +8 more from microsoft
Other versions191 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 191
- anthropics/knowledge-work-plugins★ 36ksame name
- garrytan/gbrain★ 32ksame name
- nanocoai/nanoclaw★ 31ksame name
- gavrielc/nanoclaw★ 31ksame name
- qwibitai/nanoclaw★ 31ksame name
- Q00/ouroboros★ 6.4ksame name
- pytorch/executorch★ 5.2ksame name
- aws/agent-toolkit-for-aws★ 3.5ksame name
- agenticnotetaking/arscontexta★ 3.5ksame name
- spotify/portal-ai-plugins★ 2.8ksame name
181 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository44 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agent-readySkill
- ai-citationsSkill
- ai-crawlersSkill
- ai-logsSkill
- ai-trackerSkill
- backlinksSkill
- cannibalizationSkill
- canonicalsSkill
- citabilitySkill
- comparison-pagesSkill
- competitorsSkill
- content-briefSkill
- content-decaySkill
- content-qualitySkill
- core-web-vitalsSkill
- ecommerce-seoSkill
- ga4-aiSkill
- ghost-publishSkill
- gsc-bingSkill
- hreflangSkill
- imagesSkill
- indexingSkill
- internal-linksSkill
- llms-txtSkill
- local-seoSkill
- measure-rollbackSkill
- onpageSkill
- platformsSkill
- pseo-quality-gateSkill
- quick-winsSkill
- redirects-migrationSkill
- schemaSkill
- seo-planSkill
- seo-reportSkill
- site-architectureSkill
- sitemapsSkill
- static-site-publishSkill
- sxoSkill
- tech-auditSkill
- titles-metaSkill
- topic-clustersSkill
- weekly-checkSkill
- wordpress-publishSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 2 are distinctive, and 6 are very specific to this project.
0
Common
Most of the 170 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
Gitignore secrets first: add .env, key files such as gsc-key.json, and .sitetiller/ to .gitignore before the key exists.
- Very specific: line 28
Create a service account and a JSON key.
- Very specific: line 66
Create a service account and key as above (scope used: analytics.readonly).
- Very specific: line 91
Test the key file: curl -s https://example.com/<key>.txt must print exactly the key.
- Distinctive: line 122
Never print, log or commit a key, token or key file.
- Very specific: line 123
Do not request write scopes (webmasters, analytics.edit).
- Distinctive: line 124
Do not call a Bing or CrUX key read-only.
- Very specific: line 125
Do not state quotas Google does not publish.
“Common” is measured: kept by at least 6 in 10 of the 170 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Connect your data sources
Goal: get each credential working with the least access it needs, keep it out of chat and out of git, and prove it works with one real command per service. Public-site checks (crawlers, page, sitemap, pages, links, schema) need no setup. Only the services below do.
Inputs
- Which services the user wants: Search Console, Bing, GA4, CrUX, IndexNow.
- Their site as verified in each tool (for Search Console, a domain property
sc-domain:example.comor a URL-prefix propertyhttps://www.example.com/).
Rules before anything else
- Never ask the user to paste a key, token or JSON file into chat. Tell them to set it in their own shell or a local
.envand confirm with the test commands below. - Gitignore secrets first: add
.env, key files such asgsc-key.json, and.sitetiller/to.gitignorebefore the key exists. - Read-only where the vendor allows it. Google:
webmasters.readonlyandanalytics.readonly. Bing and CrUX keys cannot be scoped (see below), so say so. - Windows PowerShell sets variables differently:
$env:NAME = "value"instead ofexport NAME=value.
Search Console (Google)
The CLI uses either a service account key or a short-lived access token.
Option A: service account (best for repeat use)
- In a Google Cloud project, enable the Google Search Console API.
- Create a service account and a JSON key. Console: Service accounts, the account, Keys, Add key, Create new key, JSON. Or:
gcloud iam service-accounts keys create KEY_FILE --iam-account=SA_NAME@PROJECT_ID.iam.gserviceaccount.com. The key downloads once. If key creation fails, an organization policy (iam.disableServiceAccountKeyCreation) is enforced; use Option B or ask the org admin. - In Search Console open the property: Settings, Users and permissions, Add user. Enter the service account email (
...iam.gserviceaccount.com) and choose a permission level. Only property owners see this page.- Restricted is enough for
gsc(Performance data). Full is needed for URL Inspection (inspect): Google lists URL Inspection among the actions Full users can take and says Restricted users cannot take most actions. Ifinspectreturns 403 with Restricted, upgrade to Full. - Honest note: Google's Users and permissions page speaks of Google Account emails and does not mention service accounts. Adding a service account email is the usual practice; the test below proves it works for this property.
- Restricted is enough for
- Point the CLI at the key:
export GOOGLE_APPLICATION_CREDENTIALS=/path/outside/repo/gsc-key.json
Option B: user access token (no key file)
Plain gcloud auth print-access-token carries gcloud's default scopes, which do not include Search Console. Google's gcloud reference says that for scopes outside Google Cloud you supply an OAuth client file:
gcloud auth application-default login --scopes=https://www.googleapis.com/auth/webmasters.readonly,https://www.googleapis.com/auth/cloud-platform --client-id-file=client_secret.json
export GOOGLE_ACCESS_TOKEN=$(gcloud auth application-default print-access-token)The OAuth client file comes from the user's own Cloud project (Credentials, OAuth client ID, Desktop app). Tokens are short-lived: repeat the export when a command returns 401.
Test
npx sitetiller gsc example.com --start 2026-10-01 --end 2026-10-07 --dims query --json
npx sitetiller inspect example.com https://example.com/ --jsonExpect rows with clicks, impressions, ctr, position, query. example.com becomes sc-domain:example.com; pass a full https://.../ URL for a URL-prefix property (trailing slash required).
Bing Webmaster Tools
- Sign in at bing.com/webmasters, add and verify the site.
- Settings (top right), API Access, accept the terms, API Key, Generate API Key. One key per user, valid for all that user's verified sites.
export BING_WEBMASTER_API_KEY=...- The key is not scoped. Microsoft documents API key and OAuth 2.0 access (OAuth recommended) and describes no read-only key. Treat it like a password and delete and regenerate it if exposed. The CLI only calls the read methods
GetQueryStatsandGetPageStats.
Test
npx sitetiller bing https://example.com/ --start 2026-10-01 --end 2026-11-05 --jsonBing's stats update weekly; a new site may return an empty list.
Google Analytics 4 (AI-referral sessions)
- Enable the Google Analytics Data API in a Cloud project.
- Create a service account and key as above (scope used:
analytics.readonly). - In GA4: Admin, Property, Access Management, +, Add users. Enter the service account email and pick a role. Use Viewer, the lowest role that can read data. Google's role page does not call Viewer read-only: Viewers can create and edit their own explorations.
- Property ID: Admin, Property, Property Settings. It is a number, not the
G-...measurement ID.
Test
npx sitetiller ga4-ai 123456789 --start 2026-10-01 --end 2026-10-31 --jsonAn empty array means no matching sessions. A 403 means the account is not on that property.
Chrome UX Report (field Core Web Vitals)
- In Google Cloud Credentials create an API key and enable the Chrome UX Report API. Restrict the key to that API.
export CRUX_API_KEY=...- Free within 150 queries per minute per project (Google's CrUX API page; more quota cannot be bought).
Test
npx sitetiller cwv https://example.com/ --origin --jsonavailable: false with a note means CrUX has no data for that URL or origin. That is a data gap, not a broken key.
IndexNow (fast Bing notification)
- Make a key: 8 to 128 characters, letters, digits and dashes.
- Host a UTF-8 text file named
<key>.txtat the site root containing only the key. export INDEXNOW_KEY=<key>- Test the key file:
curl -s https://example.com/<key>.txtmust print exactly the key. - Submit only changed URLs (see the
indexingskill). IndexNow's FAQ says not to resubmit unchanged URLs, so do not use unchanged URLs as a test.
Connection checklist
| Service | Variable | Test | Pass looks like |
| Search Console | GOOGLE_APPLICATION_CREDENTIALS or GOOGLE_ACCESS_TOKEN | npx sitetiller gsc <site> --start .. --end .. --json | rows with clicks and impressions |
| URL Inspection | same | npx sitetiller inspect <site> <url> --json | verdict and coverageState filled |
| Bing | BING_WEBMASTER_API_KEY | npx sitetiller bing <siteUrl> --json | rows or an empty list, no HTTP error |
| GA4 | same Google variable | npx sitetiller ga4-ai <propertyId> --start .. --end .. | array, may be empty |
| CrUX | CRUX_API_KEY | npx sitetiller cwv <url> --origin --json | available: true or a data-gap note |
| IndexNow | INDEXNOW_KEY | curl the key file | body equals the key |
Common failures
| Message | Cause | Fix |
No Google credentials | neither variable set in this shell | set one; every new terminal needs it again |
Google API 403 on gsc | service account not on the property, or wrong property type | add it under Users and permissions; use sc-domain: for domain properties and the exact URL-prefix otherwise |
Google API 403 on inspect only | Restricted permission | give the account Full |
Google API 401 | expired token | regenerate GOOGLE_ACCESS_TOKEN |
Google API 403 saying the API is disabled | API not enabled in the Cloud project | enable it and retry in a few minutes |
No Bing key | variable unset | generate the key as above |
Set CRUX_API_KEY | variable unset | create the key |
Key file not found or wrong content | IndexNow file missing or has extra characters | re-upload it with only the key |
Output to the user
- Which services are connected, each with its test result.
- What is missing and the exact next step (never the secret itself).
- The permission level granted and how to revoke it.
Guardrails
- Never print, log or commit a key, token or key file. If the user pastes one, tell them to revoke and regenerate it.
- Do not request write scopes (
webmasters,analytics.edit). Submitting sitemaps through the Search Console API needs the write scope; use the Search Console UI. - Do not call a Bing or CrUX key read-only.
- Do not state quotas Google does not publish; only the numbers in
references/sources.mdare published.
References
references/sources.md: official documentation for every step, checked 2026-11-12.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

