ctr-optimization
CTR Optimization
Find where the property's click-through rate falls short of what its positions should earn, and produce a candidates table plus a rewrite brief per page. The user's request may contain a property, a date range, a site section or path, a country, and a focus hint such as "product pages only"; honor all of them. When the user wants one merged list of every kind of opportunity, run the quick-wins skill instead.
Workflow
-
Resolve the property and the window. 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.- Use the last 28 days unless the user specifies dates; a shorter window makes the per-position CTR too noisy to judge.
- When the user's request names a section, a path or a country, carry it into the step 4 filters rather than judging the whole property.
- 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.
-
CTR curve against benchmarks. Call
analyze_ctr_curvewithsiteUrl, the dates,minImpressions: 10andbenchmarkSource: "all"(or one ofawr,awr2026,awrAio,firstPageSage,sistrix,backlinko, which adds the flatexpectedCtrandctrDeltafields).bucketsalways holds positions 1 to 20 in order, each with clicks, impressions,queryCount,ctr,benchmarks(expected CTR per source) anddeltas(actual minus expected).ctrvalues are already percentages on a 0-100 scale, never multiply them by 100, and the deltas are percentage points: a negative delta means the bucket underperforms that benchmark.- Keep the buckets whose delta is negative against most sources and whose impressions are large; a bucket with
queryCount0 has no data, andemptyBecausemeans every bucket is empty, so its zeros are placeholders, not underperformance. - The gap between
awr2026andawrAiois the AI Overview click tax: a property that trailsawr2026but matchesawrAiois probably losing clicks to AI Overviews rather than to weak titles, which a rewrite cannot fix. truncated: truemeans the live API read was cut atscanLimitqueries and zero-click queries were dropped first, so the bucket CTRs read high, not low.