yandex-performance
Skill0 starsChanged 22 days agoMITView on GitHub
Report Yandex Webmaster performance for a Search Console property with the GSC Wizard MCP server's Yandex tools: verification status and canonical mirror, site quality index (SQI), pages in search and excluded pages, open site problems by severity, the top Yandex queries with derived CTR and both position metrics, and the crawl and indexing trend with the pages that appeared in or were removed from Yandex search, with the Google totals alongside for scale, ending with recommendations. Use when the user asks "how is my site doing on Yandex", "Yandex traffic", "SQI", "top Yandex queries", "Yandex indexing", "pages in Yandex search", "Yandex problems", or about Yandex Webmaster.
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
- experiment-resultsSkill
- 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
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
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 26
Top queries: Call get_yandex_query_stats with siteUrl and these arguments:
- Very specific: line 41
Every total from get_yandex_query_stats rows is a floor and every share is of the listed queries.
- Very specific: line 62
Add a second short table for the high-impression, low-ctr queries when step 5 ran twice.
- Distinctive: line 68
verify the host or reconnect Yandex when step 2 or 3 found a gap.
≈ “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
Yandex Performance
Report how a property stands in Yandex search (which matters mainly for Russian, Turkish, Kazakh, Belarusian and Uzbek traffic) and end with recommendations. The user's request may contain a property name or URL, a date range, a device (desktop, mobile or tablet) or a focus hint ("indexing", "queries", "problems"); honor it by going deeper on that part while still producing the full report.
Workflow
- 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. The Yandex tools take that same GSCsiteUrl. Yandex Webmaster tracks whole hosts, so a URL-prefix property with a path (such ashttps://example.com/blog/) is matched to its host and every figure covers the whole host; the response then says so inlimitations. - Confirm the Yandex side. Call
list_yandex_sites(no arguments; the host list is cached for ten minutes, so a site verified a moment ago can take that long to show).sites[]rows carryhostId,url,unicodeUrl,verifiedandmainMirrorUrl, and anemptyBecauseanswer means the connected account holds no sites yet. Only a site added and verified in Yandex Webmaster itself reports data, so a host withverified: falseneeds the owner to verify it there, which can take a few days. WhenmainMirrorUrldiffers fromurl, Yandex keeps the data on the main mirror; name it. - Read every
notConfiguredanswer. Each Yandex tool answersnotConfigured: truewith areasonand ahintinstead of an error. Tell the user what each reason means and what to do:not_connected: no Yandex account is connected to the property owner's GSC Wizard account; connect Yandex in the app.reauth: the owner must reconnect Yandex in the app, because Yandex rejected the connection or the grant predates thewebmaster:verifyscope.host_not_found: the host is not in the connected Yandex Webmaster account; add and verify it there.host_not_verified: the site is in the account but Yandex has not verified it; verify it in Yandex Webmaster and expect no data until then.owner_only: the property is shared, and Yandex reads use the owner's connection, which is not shared; only the owner can run this report. A Yandex 429 comes back as arate_limitederror whose message gives the retry delay in seconds, taken from Yandex's own reset time: wait that long before one retry and never loop. When Yandex refuses only a secondary section (the problem list, pages in search, the appeared/removed series), the tool keeps what it read and returns that section asnullwith an entry inwarningswhen the host is not verified, or empty with a warning after a rate limit or timeout; report the rest and call that section unknown, never clean or zero. Whatever the reason, still run the Google anchor in step 7.
- Site status. Call
get_yandex_site_summarywithsiteUrl. Readsqi,pagesInSearch,excludedPages,problemCountsBySeverityandproblems[](each withcode,severityandlastChangedAt, listed most severe first: FATAL, CRITICAL, POSSIBLE_PROBLEM, RECOMMENDATION). SQI is Yandex's own composite with no Google equivalent, the severities are Yandex's taxonomy, and Yandex serves no previous period, so report a single window and never compare SQI with a Google metric. An emptyproblemsbeside awarningsentry is an unread list, not a clean one;emptyBecauseandnextStepsay which case applies. Derive the excluded share asexcludedPagesoverexcludedPagespluspagesInSearch, and say it is derived. - Top queries. Call
get_yandex_query_statswithsiteUrland these arguments:startDateandendDate: the last 28 days unless the user set a range. Omitting both gives only the last week, and a longer window returns more rows. Yandex finishes a day about four days late, sorangeechoes the window it actually served; state those dates.orderBy:"TOTAL_CLICKS"for the traffic view; a second call with"TOTAL_SHOWS"(the default) surfaces high-impression, low-click queries, the snippet opportunities.deviceType:"ALL"by default, or"DESKTOP","MOBILE","TABLET"or"MOBILE_AND_TABLET"when the user asks for a device; the last overlaps the other two, so never sum device calls.limit: keep the default of 500 (max 3,000) unless the long tail matters; each extra 500 rows is another round trip to Yandex.queries[]rows carryquery,impressions,clicks,ctr(0-100, calculated from clicks and impressions because Yandex publishes no CTR, and null without impressions),avgImpressionPositionandavgClickPosition;totalAvailableandtruncatedsay how much of the pool was left. Yandex exposes at most its top 3,000 queries, so every total you derive is a floor and every share is of the listed queries, not of the site. There is no query-by-page report, so never attribute a Yandex query to a URL.
- Indexing trend. Call
get_yandex_indexing_historywithsiteUrland optionalstartDateandendDate(omit them for the window Yandex serves by default).crawlResponses[]holds one series per HTTPstatuswith datedpoints;pagesInSearchis a dated series;searchAppearanceChanges[]holds one series pereventfor the pages that appeared in or were removed from search, which has no Google equivalent. Read the direction of pages in search, any rise in non-2xx crawl responses, and days with a removal spike, and set them againstexcludedPagesfrom step 4. Anullseries with a warning is unknown, not zero. - Google anchor. Call
get_site_summarywithsiteUrland the samestartDateandendDatefor Google clicks and impressions over the window, so the user sees the scale of the Yandex numbers. Derive Yandex's share of combined clicks from the two totals, say it is derived and a floor (the step 5 rows are capped), and never average a Yandex position with a Google one: Yandex measures position differently and splits it into the position when shown and the position when clicked.
Interpretation rules
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; never color it as a decline. Yandex reports two positions,avgImpressionPositionandavgClickPosition, measured differently from Google's, so never average either with a Google position.- Every total from
get_yandex_query_statsrows is a floor and every share is of the listed queries; the site-level counts fromget_yandex_site_summaryare not capped that way. - Yandex serves no previous period, so report one window and never invent a comparison; the Google anchor is for scale, not for a delta.
- Judge every finding by the clicks and impressions at stake, not by percentage alone.
- 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.
- Pass on the
limitationsentries each response carries wherever a number could be misread as complete or comparable, and do not fabricate rows the tools did not return; if a tool returns nothing, say so and relay itsemptyBecauseandnextStep.
Output
Present the report in this order, with compact markdown tables (top rows only, typically 5 to 10) for multi-row data and prose only for interpretation:
- Status line: verification and mirror from step 2, then
sqi,pagesInSearch,excludedPagesand the derived excluded share, with the Google totals alongside. - Problems, or the reason the list is unknown:
| Severity | Code | Last changed | What to do |
- Top Yandex queries:
| Query | Impressions | Clicks | CTR | Position shown | Position clicked |
Add a second short table for the high-impression, low-ctr queries when step 5 ran twice. A query whose avgClickPosition is far better than its avgImpressionPosition only earns clicks when it ranks high, which makes it a ranking target rather than a snippet target.
4. Indexing trend: a few sentences, the first and last pagesInSearch points, the crawl statuses that grew, and the largest appeared and removed days.
5. End with a short prioritized list of 3 to 7 concrete recommendations, for example:
- fix the FATAL and CRITICAL problems first, naming each
code; - investigate the largest removal day or the crawl status that grew, against
excludedPages; - rewrite snippets for the high-impression, low-
ctrqueries and strengthen the pages behind the ranking targets; - verify the host or reconnect Yandex when step 2 or 3 found a gap.
For the Google side of the same property run the site-audit skill; for Bing run the bing-performance 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.

