Local SEO report CSV check | Turing Automate | Version 1, 25 October 2026 https://turingautomate.com/resources/automated-seo-reporting Purpose: validate the supplied daily Search Console property-total rows and recompute CTR and impression-weighted position. This is a local Python 3 standard-library script, not a collector, Google connector, API verification, GA4 validator, dashboard or sender. Review its source before use. It makes no network calls and writes no files. Use and adapt it for your own reporting. Download check_report.py and a CSV with Date, Clicks, Impressions, Position columns. A supplied CTR column is ignored and recomputed. Use one property, one search type and one requested reporting period. The Search Console chart export may contain these columns; inspect and adapt your export rather than assuming every export has the same shape. Use unfiltered property totals for the headline. Keep page/query exports separate. The script cannot determine the source aggregation or whether upstream collection succeeded. Run: python3 check_report.py example-daily-totals.csv --start 2026-09-01 --end 2026-09-02 The sample is synthetic, not a Turing or client result. Expected: 2 rows, 2 clicks, 100 impressions, CTR 0.02 (2%), weighted position 23. Missing dates, duplicate dates, out-of-period dates, invalid metrics and malformed inputs produce a non-zero exit code. A date present with zero metrics is not proof that collection succeeded; verify that separately. Do not use a partially available recent date as a complete reporting period. Keep client exports local. Do not upload them to Turing, put them in public repositories or include account credentials. JSON output is printed to your terminal. Python must be installed locally. Use a human-reviewed collector with source-status logging for scheduled production collection. Recipient checks, approval and delivery remain separate controls.