Mike Nann's distribute.users record has skip_rewrite=true (set when task
#19 added the column). distribute-rmp's submit route forwards the flag
in its payload (task #20). BB's receive route handles it (task #21).
AV Beat's receive route was missing the branch entirely AND was writing
to .schema('bb') instead of 'av' — a copy-paste bug from when this file
was cloned from BB. So every Mike Nann submission to AV Beat was either
landing in BB's schema (wrong) or trying to and failing.
Fixed in this commit:
src/app/api/submission-receive/route.ts
• .schema('bb') → .schema('av') (the copy-paste bug)
• Added skip_rewrite branch: when payload has skip_rewrite=true,
insert straight into av.wp_imported_posts with status=published,
noindex=true, and the contributor's firm/contact_name as byline.
Skips the native_articles → AI-rewrite path entirely. Mirrors BB's
pattern exactly. Audit row still written to original_submissions.
src/lib/articles/types.ts
• Article.noindex?: boolean — surfaces the DB column to the renderer.
src/lib/articles/legacy-source.ts
• SELECT_COLS adds noindex
• ImportedPostRow gains noindex field
• rowToArticle propagates !!row.noindex
src/app/news/[slug]/page.tsx + src/app/articles/[slug]/page.tsx
• generateMetadata: when article.noindex, set robots = no-index +
no-follow + nocache + googleBot no-image-index + other meta key
"googlebot-news": "noindex". Matches BB's pattern.
src/app/news-sitemap.xml/route.ts
• Adds .or('noindex.is.null,noindex.eq.false') so passthrough rows
don't pollute the Google News sitemap.
src/app/rss/route.ts
• Filters out a.noindex before emitting items.
Mike's existing user record is already flagged (DB verified), so the
moment this deploys + he submits, the next press release publishes
verbatim, gets noindex on every Google/social surface, and shows up
on the AV Beat news index without going through the AI rewrite job.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Homepage / Industry News query filters wp_imported_posts to
ai_rewritten_at IS NOT NULL so raw press releases never surface on
the editorial feed (NewsArticle JSON-LD was already in place).
- New /news-sitemap.xml route emits a Google News sitemap covering
rewritten editorial published in the last 48 hours, with
news:publication + news:publication_date + news:title + keywords.
- robots.ts now points crawlers at both sitemap.xml and
news-sitemap.xml.
After deploy, submit broadcastbeat.com to Google News Publisher Center
to start serving in News.