# Pending — broadcastbeat.com tonight's deferred work

## Featured-image backfill (P0-1, deferred)

The clean placeholder at `/assets/images/article-placeholder.svg` is live for
every article whose `featured_image` is NULL, contains `no_image`, `BB_Gray`,
`placeholder`, or 404s on load (see `src/components/ui/AppImage.tsx`). That
removes the bad UX immediately for ~518 articles.

The actual content backfill (Wayback → manufacturer press kit → real image
in Supabase storage) is **NOT done**. The smoke-test attempt
`/tmp/bb-image-backfill.py` ran on coolify01:

- Matrox+Amagi smoke article (`matrox-video-and-amagi-collaborate-...`):
  Wayback returned no archived snapshot of `https://www.broadcastbeat.com/<slug>/`,
  so the og:image extraction path didn't apply. Many of the broken-image
  articles are recent NAB 2026 posts that have never been crawled by
  Wayback.
- Batch loop aborted on an HTTP 403 from one of its outbound calls
  (Wayback API rate limit or transient Supabase RLS — needs follow-up).

**What needs to happen next session:**

1. For each broken article, try multiple sources in order:
   - Wayback Machine snapshot of `broadcastbeat.com/<slug>/` (skip if 404).
   - Manufacturer press-kit page based on title keywords (Matrox, Amagi,
     Telestream, Calrec, AJA, etc. — keep a per-vendor mapping of press
     kit URLs).
   - Generic image search via the vendor's news page.
2. Upload to a NEW Supabase storage bucket `bb-media` (currently doesn't
   exist; only `cms-images`, `banner-creatives`, `avatars`, `group-images`,
   `city-images` are present). Need to create with public-read.
3. Update `bb.wp_imported_posts.featured_image` with the public storage
   URL.
4. Smoke-test on the Matrox+Amagi article first per Ryan's instruction.

## Banner creatives (P0-2 follow-up)

Adsanity iframe path removed. Banners pruned because they had no local
image. Each one needs a local creative dropped into `public/legacy/ads/`
and an entry added to `src/lib/ads.ts`:

- AJA Video 300x250
- Zixi 300x250
- Lectrosonics 300x250
- Opengear 300x250
- Studio Hero 300x250
- Magewell 300x250
- Blackmagic 300x600 (was originally Adsanity `ad-210571`)

## Hardcoded article slugs (P0-4 follow-up)

`/articles/[slug]` and `/news/[slug]` now redirect to `/news` for unknown
slugs, so the dead links from `NewsTicker.tsx`, `FeaturedBento.tsx`, and
`ArticleFeed.tsx` no longer 404 — they redirect to the news index. But
those components still hardcode fake slugs:

- NewsTicker headlines array (7 hardcoded entries)
- FeaturedBento hero + rotatingStories (1 + 15 hardcoded entries)
- ArticleFeed seed entries (~6 hardcoded)

These should be refactored to pull real recent slugs from
`bb.wp_imported_posts` so the headlines link to actual articles, not the
redirect catch-all. Out of scope for tonight.

## SEO re-enable

`src/app/layout.tsx` currently sets `robots: { index: false, follow: false }`
sitewide. Flip both to `true` once:

- Phase B (PR rewrite system) lands so the index doesn't get filled with
  raw press releases competing with the source.
- Phase C (news sitemap at `/news/sitemap-news.xml`) lands.
- Google Rich Results Test passes on a sample `/news/<slug>` URL.
