Removed the late-AI-Overview retry and the unresolved status row. The folsrch block that 0.1 treated as a sign of a late AI Overview is the "people also search for" block: live checks showed it on stable pages without an AI Overview (weather tomorrow, notion templates) and never on a page with one, so those queries cost three requests and produced a free, wrong "undecided" row. A page without an AI Overview is now aiOverviewPresent: false with its organic results in a charged row after one request. The deferredRetries input is gone.
Layout guards are evidence-based per page: a page with citation records or the AI Overview disclaimer ("AI responses may include mistakes") but no AI Overview container is a layout error. Frequency guards (no AI Overview in five or more queries, AI Overviews without citations) are not used, because Google shows an AI Overview on only about 40 % of queries and none on most local and navigational ones, so they failed correct runs. The run message still reports how many AI Overviews and citations were found.
queries: null falls back to the default list.
The Google requests counter now includes failed attempts, so the measured proxy cost is not understated.
Removed unreachable code (aiOverviewPresent: null, dead tracking condition, duplicate counter in the run message).
Test fixture for a page without an AI Overview is now a live capture of the production URL (with the folsrch block).
0.1
First release: one row per Google query with the AI Overview text, the cited source pages in order (position, URL, domain, site name), the organic results of the first page, and tracking fields for your own domains (cited, citation position, organic rank) and brand names (mentioned, count inside the AI Overview text).
Google market set by country (gl) and interface language (hl).
A page whose AI Overview loads late is requested again up to the chosen number of times; if it stays undecided the query gives a free unresolved status row instead of a false "no AI Overview". Queries with no results or no readable page give a free status row with a reason.
Run message reports AI Overviews found, citations parsed and organic results parsed with counts; a changed Google page layout (no organic results, or AI Overviews without any citation) fails the run instead of delivering empty rows.
Tested inputs: two English queries with an AI Overview (typical, live), a Polish query list in the Polish market with domain and brand tracking where one query has no AI Overview and one never resolves (edge, live: one row with an AI Overview and citations, one row without, one free unresolved status row), and a query with no results (single free status row, local fixture).