~/ ← projects/ content-watch

content-watch

Automated content freshness alerts for WordPress — before traffic dies.

2026 · by serhii · beta · wordpressseocontent-opsphp

## case study

— problem & approach #case-study

the problem

Most WordPress posts are written once and forgotten. The piece that drove traffic eighteen months ago still points readers at a 2023 statistic, a deprecated screenshot, and a stale year in the title. Nothing tells you. Search rankings drop quietly. Visitors bounce.

the approach

ContentWatch watches every published post against a review interval you set, then pings you when something needs attention. One weekly email lists what’s stale. Open the dashboard to see traffic data per post (Search Console + GA4), get an AI-generated rewrite suggestion, and ship the update — or kill the page.

Key capabilities:

  • Configurable intervals — Daily through 5 Years; one rule per post type
  • Multi-channel notifications — Email digest, Telegram, Slack; extensible via filter
  • AI analyze — OpenAI-powered freshness scoring, suggestions, and rewrites per post; encrypted keys, configurable per-post-type guidance
  • Analytics-driven decisions — GSC impressions/clicks/CTR/position + GA4 engagement/bounce in a sidebar metabox; “Analyze with metrics” feeds data into the AI prompt
  • On-page SEO checks — title length, meta description (Yoast / Rank Math / AIOSEO), outdated-year detection in titles and slugs
  • Bulk actions + CSV export — bulk AI review via Action Scheduler queue, download results, bulk Watch/Ignore
  • Watch & Ignore lists — curate exact posts; watched always evaluated, ignored always skipped
  • REST API + webhooks/wp-json/cw/v1/stats, per-rule and global webhooks, HMAC-friendly

No subscription, no SaaS account, all data stays on the site.

stack

  • WordPress 6.0+, PHP 8.0+
  • Action Scheduler for background processing
  • Google Search Console + GA4 APIs
  • OpenAI Chat Completions API (opt-in)
  • REST API with x-api-key auth
// (c) 2026 symonov · independent dev studio vimgittmuxdocker EOF — end of file —