Run date: Saturday, May 2, 2026

Mode: REPORT ONLY (deploys blocked)

Scope: All published WordPress pages (~290) and posts (~208) minus the standing EXCLUDE list

Auditor: image-audit scheduled task

Tag Note

Task spec requested tags Image-Audit and WordPress-API, neither of which exist as options in the SAIL Knowledge Base Tags property. Used the closest existing tags (QA: Open, improvement-mandate, seo, critical, weekly). Recommend Sam adds the two missing tag options for future runs. This is also covered in Q4 below.


Executive Summary

The site has a systemic hero-image problem driven by a small handful of generic stock assets being reused across many topic-specific pages. Two layers:

  1. Visual mismatch. A single generic accident scene shows on ATV, whiplash, nursing home, school zone, KY statute of limitations, etc. OpenAI vision check scored 0.0 on those topical fits.
  2. Alt-text mismatch. The reused asset's alt-text was authored for one specific page (e.g., "Harrodsburg Personal Injury Attorneys") and never updated when the asset was repointed elsewhere. So a Lexington page shows alt text claiming Harrodsburg.

Five media IDs alone account for 30+ topic-mismatch instances flagged below.

The pipeline cannot deploy fixes this run. Bash sandbox is broken (ENOSPC), no WordPress MCP is connected, and the image generator MCP requires the shell. Blocker remediation lives in the Post-run QA section.


Pipeline Preflight

Step Status Notes
0a Sandbox health FAIL ENOSPC: no space left on device on /sessions/upbeat-nice-mendel/tmp. Bash unusable.
0b Credentials PARTIAL .credentials/vault.env not loadable without bash. Notion A - Passwords reachable.
0c WP REST auth READ-ONLY WebFetch works for GET. Authenticated POST/PUT requires WP MCP, not available.
0d Image generator UNREACHABLE /banana and OpenAI create-image both need shell to write generated bytes back to disk.
0e WP MCP NOT INSTALLED Tool list does not include a wordpress-rest-write MCP.

Inventory Counted

Source Count How
Pages (published) ~290 /wp-json/wp/v2/pages?per_page=100 across 4 paginated calls
Posts (published) ~208 /wp-json/wp/v2/posts?per_page=100 across 3 paginated calls (100, 100, 8)
Pages excluded ~30 Standing EXCLUDE list per SKILL.md
Pages in audit scope ~260 Practice areas, location pages, injury pages
Posts in audit scope ~208 Blog posts

Findings - Grouped per SKILL.md Output Format