{"id":39458,"plugin_id":"plugin_asdk_app_6a258ab1e0908191aa647c33299ad14c","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T12:47:05.640Z","digest":"0c6e9a5c20bd536480f6311e018ce00dacf45eab480e6b839ddb43a330f6e4f6","against":null,"payload":{"description":"Find, triage, and build recovery plans for decaying content in Google Search Console using the GSC Wizard MCP tools (get_decay_overview, find_decaying_content, per-page drill-downs, optional traffic forecast). Use when the user asks about decaying content, pages losing traffic, content refresh candidates, which pages are dying, declining organic clicks, or wants a content refresh or recovery plan.","included_files":[],"name":"content-decay","skill_md_contents":"---\nname: content-decay\ndescription: Find, triage, and build recovery plans for decaying content in Google Search Console using the GSC Wizard MCP tools (get_decay_overview, find_decaying_content, per-page drill-downs, optional traffic forecast). Use when the user asks about decaying content, pages losing traffic, content refresh candidates, which pages are dying, declining organic clicks, or wants a content refresh or recovery plan.\n---\n\n# Content Decay Triage\n\nIdentify which content is losing search traffic, diagnose why per page, and produce a concrete recovery plan. The user's request may contain a property (e.g. `sc-domain:example.com`) and/or a focus hint such as a URL path, a topic, or a custom date range; honor it if present.\n\n## Workflow\n\n1. **Resolve the property.** If the user's request or the conversation names a property, use it as `siteUrl` (GSC formats: `sc-domain:example.com` or `https://www.example.com/`). Otherwise call `list_sites` and pick the match; if several sites plausibly match, ask the user which one before proceeding.\n\n2. **Aggregate trend: `get_decay_overview`.** Call it with `dimension: \"page\"`, `metric: \"clicks\"`, and the default granularity (`month`) and window (last 16 complete months) unless the user specified a range.\n   - Read the per-period TOTALS to describe the site-wide trajectory: steadily declining, seasonal dip, cliff after a specific month, or flat.\n   - If a sharp cliff is visible, note the month; you may optionally call `detect_change_points` to pin down the exact date and cross-reference `list_algo_updates` for a coinciding Google update.\n   - Check the response `dataSource`; if history looks short, mention whether data came from the warehouse or the live API.\n\n3. **Ranked decliners: `find_decaying_content`.** Call with `dimension: \"page\"`.\n   - Period semantics: `startDate`/`endDate` is the RECENT period; `comparisonStartDate`/`comparisonEndDate` is the earlier BASELINE.\n   - Defaults (last 28 days vs the previous period) are fine unless the user asked for something else, but for slow decay a wider gap is more revealing, e.g. recent 28 days vs the same-length window 6-12 months earlier, guided by where the overview showed the peak.\n   - Results are bucketed by click loss: severe (> 50%), moderate (20-50%), mild (< 20%).\n   - Present the top decliners as a compact markdown table: page, baseline clicks, recent clicks, change %, severity, position change.\n\n4. **Drill into the worst 5-10 pages.** Pick by absolute clicks lost, not percentage alone (a 60% drop on 5 clicks matters less than a 25% drop on 5,000). For each page:\n   - `get_page_performance` with the full `pageUrl` and a window covering both periods: read the shape of the decline (gradual erosion vs step change) and which metric moved first (position, impressions, or CTR).\n   - `query_search_analytics` twice, filtered to the page, to find which queries drove the loss:\n     - `dimensions: [\"query\"]`, `filters: [{ dimension: \"page\", operator: \"equals\", expression: \"<pageUrl>\" }]`\n     - one call for the recent period, one for the baseline period; diff the two result sets per query.\n   - Classify the loss pattern:\n     - position slipped on the same queries: content freshness or competition;\n     - impressions collapsed: demand drop, deindexing, or cannibalization;\n     - CTR fell at stable position: SERP feature or title/snippet problem;\n     - or the page lost a single dominant query.\n\n5. **Optional: quantify the cost with `forecast_traffic`.** If the user wants to know what continued decay costs, call it for the property with `metric: \"clicks\"`; if the user supplies a conversion rate or average order value, pass them as `cvr` (decimal, e.g. 0.025) and `aov` to derive revenue. Contrast the projected trajectory with the baseline-period run rate. Frame it as an estimate.\n\n6. **Output a recovery plan.** Per triaged page, recommend exactly one primary action with a one-line justification tied to the diagnosis:\n   - **Refresh**: position slipping on still-valuable queries; update content, add current data, improve depth.\n   - **Consolidate**: several decaying pages split the same query set; merge into the strongest URL and redirect.\n   - **Retarget**: the page ranks for queries with drifting intent; rewrite for what the queries now mean.\n   - **Improve internal links**: gradual position erosion with thin internal linking; add contextual links from strong pages.\n   - **Retire**: demand is gone (impressions collapsed across all queries); prune or redirect, reclaim crawl budget.\n\n   End with a short prioritized list of concrete recommendations (highest clicks-at-stake first).\n\n## Conventions\n\n- Default date logic: last 28 days vs the previous period unless the user says otherwise; decay-specific defaults above take precedence where noted.\n- GSC data lags about 2 to 3 days. Never treat the most recent 2 days as complete; if a dip appears at the right edge of a chart or range, say explicitly that it is likely the reporting lag, not real decay.\n- `ctr` values are already percentages on a 0-100 scale. Never multiply them by 100.\n- `position`: lower is better. A move toward a lower number is an improvement; call position increases \"slipped\" or \"lost rank\".\n- Present multi-row results as compact markdown tables; keep prose for interpretation, and keep tables to the columns that matter (page/query, clicks before/after, change %, position before/after).\n- Do not fabricate rows the tools did not return. If `find_decaying_content` returns nothing above the threshold, say the property shows no meaningful decay and stop after step 3.\n- If a tool call fails with an authentication or subscription error, tell the user to reconnect the GSC Wizard app from their app or connector settings, and that a GSC Wizard account with an active plan or trial plus a connected Google Search Console account is required.\n\n## Grounding\n\nEvery 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.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}