Echo/Docs

CLI command

seo updates

Search updates read from Google's Search Status Dashboard, and an update's impact on a web source's search visits before and after it.

Invocation#

Shell
echo-cli seo updates sync
echo-cli seo updates list
echo-cli seo updates impact --update <update-id> --app <web source> --days <n>

Inputs and output#

sync and list write updates, newest first: id, name, service, began_at, ended_at (null while rolling out), uri and synced_at. impact writes update, app_id, days, before and after: each window's from and to and engines, one per search engine with its events, sessions and visitors.

State effect#

Every verb calls Echo Web's authenticated /api/seo/updates with ECHO_INTERNAL_BEARER at ECHO_WEB_BASE_URL; the Search updates section of the GEO screen and of Echo Desktop's GEO screen call the same operation, and echo-mcp reads them as echo_search_updates. sync reads https://status.search.google.com/incidents.json, the dashboard's own feed, and stores each incident once by its id in search_updates, updating one Google revised; /api/cron/search-updates does the same every day at 02:47 UTC, so the register holds new and finished updates without a sync, and answers the failure naming the feed's answer when the read fails. impact counts the web source's stored events whose referrer host ECHO_SEARCH_REFERRER_HOSTS_JSON declares as a search engine (host → engine; a parent domain covers its subdomains) in the --days days before the update began and the --days days after it ended.

Refusals#

  • A wrong invocation is refused before anything is sent: "seo updates takes sync; list; impact …; got <word>", "seo updates impact does not take <flag>; it takes …", "<flag> needs a value" and "seo updates impact needs <flag>".
  • Echo Web answers a bad request with "update_id is required: …", "app_id is required: …", "days must be a positive whole number: the length of each window; got <value>" or "<update> has not finished rolling out, so it has no after window yet"; not found with "no search update has id <id>; echo-cli seo updates sync reads them"; and fails naming the cause with "https://status.search.google.com/incidents.json answered <status>: <body>", "ECHO_SEARCH_REFERRER_HOSTS_JSON is not JSON: …", "… must be an object of referrer host to search engine name", "… names no search engine for <host>" or "… declares no host". The command prints Echo Web's sentence and exits 1.