Files
avbeat-com/PENDING_ads.md
Claude Code d436dc3598 P0-1 partial + AppImage fallback: clean placeholder for every broken image
P0-1 (featured-image fallback path):
- AppImage.tsx: default fallbackSrc changed from /assets/images/no_image.png
  to /assets/images/article-placeholder.svg, so any article image that
  loads but 404s gets the new clean dark gradient placeholder instead of
  the old grey BB_Gray-style box. The smoke-test article
  (matrox-video-and-amagi-collaborate-...) had a featured_image URL that
  404s on broadcastbeat.com; it now renders the new placeholder.

P0-1 batch (Wayback recovery) is NOT done — see PENDING_ads.md. The
attempted backfill via Wayback found no snapshots for the Matrox smoke
article (it is a 2026 NAB story Wayback never crawled), and the batch
loop tripped a 403 from one of its outbound calls. Proper backfill
needs per-vendor press-kit scraping and a new bb-media storage bucket.

PENDING_ads.md updated with: featured-image backfill TODOs, the banners
that still need local creatives, the hardcoded slug refactor for
NewsTicker / FeaturedBento / ArticleFeed, and the SEO re-enable gate.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 17:30:57 +00:00

3.1 KiB

Pending — broadcastbeat.com tonight's deferred work

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.