experiment-results
Skill0 starsChanged 22 days agoMITView on GitHub
Read out an SEO split test for a Search Console property with the experiment tools of the GSC Wizard MCP server: the experiments with their control and variant URL groups, the control-versus-variant click growth with significance test, uplift confidence interval and winner, a sanity check of a few URLs per group, confounders (Google algorithm updates and logged site changes during the test), and a roll-out, extend or stop verdict that can be logged as an annotation. Use when the user asks "how is my SEO test doing", "did the variant win", "read my experiment results", "is the uplift significant", or "should I roll out the change".
In this repository33 other files it gives its agents.
- ai-assistant-trafficSkill
- anomaly-checkSkill
- bing-crawl-healthSkill
- bing-performanceSkill
- branded-splitSkill
- cannibalizationSkill
- client-reportSkill
- content-decaySkill
- content-groupsSkill
- core-web-vitalsSkill
- country-deviceSkill
- ctr-optimizationSkill
- ga4-overviewSkill
- indexing-healthSkill
- indexing-trackerSkill
- indexnow-submitSkill
- long-tail-analysisSkill
- merchant-center-healthSkill
- onpage-auditSkill
- page-deep-diveSkill
- portfolio-overviewSkill
- property-setupSkill
- query-deep-diveSkill
- quick-winsSkill
- ranking-changesSkill
- shopping-performanceSkill
- site-auditSkill
- sitemap-auditSkill
- site-migrationSkill
- traffic-dropSkill
- traffic-forecastSkill
- weekly-reportSkill
- yandex-performanceSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Resolve the property: If the user's request or the conversation names a property, use it.
- Very specific: line 14
Find the experiment: Call list_experiments with the siteUrl.
- Distinctive: line 18
When none exists, tell the user to create one in the app first (define the control and variant URL groups there) and stop.
- Very specific: line 36
Confounders: Call list_algo_updates with startDate about 14 days before the comparison window starts and endDate set to the test window's …
- Distinctive: line 43
If the write is refused because the connection is read-only, say that this step needs write access and finish with the read-only parts.
- Distinctive: line 54
When a confounder lands on the variant pages only, say that the uplift cannot be attributed to the test change until the test is re-run or …
- Distinctive: line 59
stop and revert: a significant negative uplift, or variant pages dropping out of the index.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Experiment Results
Read out one SEO split test: which group won, by how much, whether the difference is significant, what else happened during the test, and what to do next. Experiments are created in the GSC Wizard app (its Experimentation page, where the control and variant URL groups are defined), not through the MCP; the tools here read and score them. The user's request may contain a property, an experiment name or id, a test window, a confidence level, or a note on what was changed on the variant pages.
Steps
- Resolve the property. If the user's request or the conversation names a property, use it. Site URLs use GSC formats:
sc-domain:example.comorhttps://www.example.com/. Otherwise calllist_sitesand pick the obvious match. If several plausible properties exist, ask the user which one before continuing. - Find the experiment. Call
list_experimentswith thesiteUrl; addincludeArchived: truewhen the user asks about a finished or old test.- Each entry carries
id,name,description,status,startDate,groupCountandgroups(group,urlCount,color); the first group is the control. - Pick the experiment the user named, or show the list in a short table and ask when more than one is active.
- An empty list comes with
emptyBecauseandnextStep. Whenerroris set the list could not be read, and the empty result does not mean the property has none. - When none exists, tell the user to create one in the app first (define the control and variant URL groups there) and stop.
- Each entry carries
- Score it. Call
get_experiment_resultswithsiteUrl,experimentIdand, unless the user wants the default last 28 settled days,startDateset to the experiment'sstartDate(when it has one) withendDateleft out, so the window runs to the latest settled day. The comparison window is always the same-length period immediately before the window, so this makes the pre-test period the baseline.confidenceLevelis 0.8 to 0.999 (default 0.95). Read:groups: per groupmatchedPages,totalClicks,totalImpressions,prevTotalClicks,prevTotalImpressions,ctr(0-100),avgPosition(impression-weighted),clickGrowthPct(null when the group had no clicks in the comparison window) andctrConfidenceInterval(lower,point,upper).comparisons: one per variant against the control, withcontrolGrowthPct,variantGrowthPct,upliftPoints(variant growth minus control growth, in percentage points),upliftCI(lower,upper),pValue,significant(true exactly when the uplift CI excludes 0),ctrPValue(a separate CTR comparison, for reference),confidenceLevel,winner(the winning group's name, set only whensignificantis true, otherwise null),powerWarning(true when either group has under 100 clicks in either window) andclicksDiff.emptyBecauseandnextStepwhen no group matched a page: the group URLs do not match the pages Search Console reports (matching ignores case, a trailing slash and www), so the zeros measure nothing. RelaynextStepand stop scoring.truncatedandtruncationNote: a page read hit its row cap and low-traffic experiment pages may be missing from a group; comparematchedPageswith each group'surlCountfrom step 2 and say how many URLs are unaccounted for.windowNormalization, when present: growth was compared per day because the two windows differ in length.rangeandcomparison: the two windows the tool actually used; quote both in the verdict, since the user may have asked for a window the data could not cover.note: the tool's own reading rules (control first, a winner only on a significant growth difference); where it and this skill differ, the tool's note wins.
- Sanity-check the series. Call
get_page_performancefor two or three URLs from the control group and two or three from the variant group, withpageUrlas the full URL,startDatemoved back by the test's length so the baseline is visible, andendDateas in step 3. Read thedailyrows (date,clicks,impressions,ctr,position) and look for:- a single URL carrying the whole group's growth;
- a URL flat at zero (not indexed, or spelled differently in the group than in Search Console);
- a step on a date other than the test start;
- a dip at the newest edge. GSC data lags about 2 to 3 days: never treat the most recent 2 days as complete, and if a dip appears at the very edge of the range, say it is likely reporting lag, not a real drop.
ctrvalues are already percentages on a 0-100 scale; never multiply them by 100.position: lower is better; a change toward a lower number is an improvement.
- Confounders. Call
list_algo_updateswithstartDateabout 14 days before the comparison window starts andendDateset to the test window's end, andlist_annotationswith thesiteUrland the same dates.- Each
updatesentry hasname,beginISO,endISO,severityanduri. Only Google-confirmed updates are listed, so an empty list is not proof that nothing changed. - An update that overlaps the test window hits both groups in principle, but not equally when the groups differ in template, section or intent, so say which group it could bias and in which direction.
- An annotation (a deploy, a template change, a redirect batch) dated inside the test window and touching the variant pages is a stronger confounder than the test change itself.
- Each
- Offer to log the conclusion. Offer
create_annotationwith thesiteUrl,eventDate(the decision date or the test's end), alabelsuch as "Experiment<name>: variant rolled out", an optionaldescriptionholding the numbers and an optionalcategory(free text, up to 50 characters).- Show the exact values and run the call only after the user confirms. The annotation marks the chart; it does not change the experiment's status in the app.
- If the write is refused because the connection is read-only, say that this step needs write access and finish with the read-only parts.
Output
- Verdict: the experiment's name and window, control and variant growth, the uplift in points with its CI, the p-value and whether it is significant at the chosen confidence level, and the
winnerthe tool named. Put the numbers in a compact table fromgroups: group, matched pages, clicks, previous clicks, growth %, CTR, position. - Is it real: the significance call in plain words.
- A positive
upliftPointswithsignificant: false(and sowinnernull) is a lead, not a result. powerWarningmeans the groups have too few clicks to detect a realistic uplift; say how wide the CI is.- Weight the judgement by the clicks at stake, not by the percentage alone: a 30% uplift on 40 clicks is worth less than 4% on 10,000.
- A positive
- Confounders: the overlapping updates and annotations and what each could have done to the groups.
- Be explicit when the cause is uncertain, and do not force a narrative.
- When a confounder lands on the variant pages only, say that the uplift cannot be attributed to the test change until the test is re-run or extended past it.
- Series check: one short paragraph on what the URL-level series showed (a concentrated gain, a dead URL, a step on the wrong date), or that nothing odd showed up.
- Recommendation: one of the three, with the reason:
- roll out: a significant positive uplift, no confounder that explains it, and the gain spread across the variant URLs;
- extend: not significant, a power warning, a CI that straddles zero while the point estimate is useful, or fewer than four weeks of post-change data;
- stop and revert: a significant negative uplift, or variant pages dropping out of the index. Then a short prioritized list of 3 to 5 concrete next steps: the roll-out scope, how much longer to run, which URLs to fix in the group definition, what to annotate.
Present every multi-row result as a compact markdown table (top rows only, typically 5 to 10); keep prose for interpretation, not for restating numbers. Do not fabricate rows the tools did not return. For a property-wide read of the same period run the weekly-report skill; for pages competing with each other inside a group, the cannibalization skill.
Error handling
If any tool call fails with an authentication or subscription error, tell the user to run /mcp to (re)authenticate, and that a GSC Wizard account with an active plan or trial plus a connected Google Search Console account is required. If the property is not found, re-run list_sites and offer the closest matches instead of guessing a URL format. If a single tool fails for another reason, report the gap in the relevant section and complete the rest of the workflow with the remaining data.
Grounding
Every number you report must name the tool it came from and the date range it covers, for example "clicks 12,340 (get_site_summary, 2026-09-21 to 2026-09-27)". For a table, state the tool and date range once on the line above it. If you derive a figure yourself (a delta, a sum, a share), say so and name the tool outputs it was computed from. Never report a number no tool returned.
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.

