merchant-center-health

Installation
SKILL.md

Merchant Center Health

Check the health of the Merchant Center account linked to one Search Console property and find the products that are not serving in free listings, ending with a verdict and a fix list. The user's request may contain a property, a Merchant Center account name or id, a language code for the issue text, or a focus hint (for example "only the feed" or "disapproved products"); honor the hint by going deeper there, but still run every step.

Workflow

  1. Resolve the property. If the user's request or the conversation names a property, use it. Site URLs use GSC formats: sc-domain:example.com or https://www.example.com/. Otherwise call list_sites and pick the obvious match. If several plausible properties exist, ask the user which one before continuing.

  2. Find the linked account. Call list_gmc_accounts with the property's siteUrl (the argument is optional, but passing it adds linkedAccountId, the account this property is linked to). The accounts[] rows carry accountId, accountName, accountEmail, isAdvanced and linkedSiteUrls. Interpret the response before anything else:

    • connected: false with reason: "no_scope" means the Merchant Center consent has not been granted in the GSC Wizard app; reason: "credentials_revoked" means it was granted but Google now rejects the saved connection, so the Google account has to be reconnected on the Account page. Relay the hint and stop the Merchant Center steps, since nothing below can answer.
    • Accounts listed but no linkedAccountId means the property is not linked yet. Linking happens in the GSC Wizard app, not through a tool: show the account table and tell the user which account to link. For a grantee without the Merchant Center opt-in the id is withheld with a note; say so.
    • isAdvanced: true marks a multi-client parent that cannot be reported on; one of its sub-accounts has to be linked instead.
    • incomplete: true means the list is a floor: read gaps, unprobedAccountIds and errors, say what could not be read, and suggest a retry.
  3. Account health. Call get_gmc_account_health with siteUrl, optionally languageCode (BCP-47, for example "nl", default en-US) for the issue text and limit (default 200, max 500, most severe first). Read overallStatus first: it is the worst of the checks and the issues. Then read:

    • issues[] (title, detail, severity, affectsFreeListings, impactedDestinations with the reportingContext and the regions each one hits, documentationUri) and the issueCounts totals.
    • checks[] (key, status, message), where status is one of ok, suggestion, warning, critical or unknown. A setting this Google login may not read answers unknown and sections says why: report it as unverified, never as passed.
    • programs[] for the free-listings program state, its activeRegionCodes and any unmetRequirements; homepage.claimed for whether the website is claimed; countriesWithoutShippingService against targetCountries for the markets without an account-level shipping service. Business info is reported as presence flags only (businessInfo), and shipping and returns set per product in the feed are not read, so those two checks can flag what the feed already covers.
Installs
2
First Seen
2 days ago