Role
I built Checkpoint News end to end as a solo project: a gaming news site plus a local editorial Desk. AI can research and draft daily coverage, but publishing is a human workflow — write or synthesize a story, ship it to web and social, then use live analytics (GA4, YouTube, Instagram, Facebook, and on-site visits) to decide what to publish next.
- Designed and built the full Next.js site (App Router, TypeScript) with a bold, IGN-style dark UI: full-bleed hero for the top story, category navigation, and a responsive mobile drawer menu.
- Built a scheduled Cursor Automation that uses an MCP web-search tool (Exa) to find real gaming news, write original 4-paragraph summaries with proper attribution, classify them into one of 7 categories, and flag unconfirmed rumors.
- Designed a protected ingestion API with strict validation (Zod), multi-signal duplicate detection (normalized URL, title hash, content hash), and automatic image sourcing (provided image → source page's Open Graph image → YouTube thumbnail → category placeholder).
- Implemented an auto-publish workflow with email notifications (EmailJS) on every new article, including HMAC-signed one-click links to pull an article down without needing to log into an admin panel.
- Added YouTube video embeds for trailer/reveal coverage, and a Vercel Cron job that safely prunes rejected drafts and old audit logs without ever touching published content.
- Built a local editorial Desk (Remotion UI) so publishing to web and social is one workflow, including a dedicated Analytics panel that turns live performance into the next thing to publish.
Tech
- Live website: https://thecheckpointnews.com/
- Next.js (App Router) + TypeScript + Tailwind CSS for the site and API routes.
- Drizzle ORM over Vercel Postgres (Neon) for articles, first-party
view_count, and an ingest audit log. - Vercel Blob for re-hosting cover images so the site never depends on third-party image hosts staying online.
- Cursor Automation + MCP (Exa) as the AI research/content-generation pipeline, calling a signed ingestion endpoint on a daily schedule.
- EmailJS for transactional notifications, with HMAC-signed tokens for one-click moderation actions.
- Full SEO layer:
robots.txt, dynamicsitemap.xml, Open Graph/Twitter metadata, andNewsArticleJSON-LD structured data per article. - Vercel Cron for scheduled cleanup of rejected drafts and stale logs.
- Desk analytics: Google Analytics 4 Data API (web, 7 days), YouTube Data API, Instagram Graph, and Facebook Page insights, plus session-unique page views stored on each article.
- OpenAI over those metrics for performance readouts, “what to publish now,” and best-time-to-post windows.
Desk analytics
Inside Desk, Analytics is an editorial console rather than a vanity dashboard. It pulls every network at once, then tells you what to do next.
- Network summaries for Web (GA4 users, sessions, views), YouTube Shorts, Instagram (watch time, 3s hook, sends/reach), and Facebook, with per-piece tables for recent posts and top pages/channels.
- First-party site traffic from
view_count: today’s published stories ranked by visits, and the most-read articles of the last 7 days, in a collapsible block so it stays out of the way until you need it. - “What to publish now” crosses today’s articles with what’s already on each network and what’s missing (Short, post, Reel), then suggests the next action and a schedule window.
- AI performance report: growing / stable / declining, what improved or got worse, patterns, alerts, winning content, and ranked next actions with evidence.
- Best posting times by weekday for each platform, derived from the same analytics, collapsed by default.
Impact
- Removed the manual work of researching, writing, and publishing daily news by letting an AI agent handle the full editorial loop, with automated notifications as a safety net.
- Prevented duplicate or low-quality content from reaching the site through layered validation and hashing before anything is published.
- Ensured every article always has a real cover image via a cascading fallback strategy, instead of relying on the automation to always provide one.
- Kept the database and storage costs bounded over time with a scheduled cleanup job, without ever risking published content or SEO value.
- Put web, YouTube, Instagram, Facebook, and on-site visits in one Desk view, so the next Short or post is chosen from live performance instead of switching between four native apps.
- Made today’s stories and the week’s most-read articles always available next to social metrics, so editorial decisions start from what people actually opened.