Use real article authors (remove Staff Reporter): removed mock staticArticles + changed fallback to Broadcast Beat
This commit is contained in:
@@ -38,7 +38,7 @@ interface AuthorArticle {
|
||||
const authors: Record<string, AuthorProfile> = {
|
||||
"staff-reporter": {
|
||||
slug: "staff-reporter",
|
||||
name: "Staff Reporter",
|
||||
name: "Broadcast Beat",
|
||||
title: "Broadcast Beat Editorial Team",
|
||||
avatar: "https://img.rocket.new/generatedImages/rocket_gen_img_1aa16f5c7-1766559876206.png",
|
||||
coverImage: "https://img.rocket.new/generatedImages/rocket_gen_img_1aa16f5c7-1766559876206.png",
|
||||
|
||||
@@ -20,188 +20,6 @@ interface ArticleItem {
|
||||
externalUrl?: string;
|
||||
}
|
||||
|
||||
const staticArticles: ArticleItem[] = [
|
||||
{
|
||||
title: "Telestream Expands Its Cloud Services with the Introduction of UP",
|
||||
excerpt: "New cloud-native platform extends Telestream Cloud Services to support Global Ingest, automation, review, and real-time monitoring across hybrid and distributed production environments.",
|
||||
category: "BROADCAST",
|
||||
date: "March 11, 2026",
|
||||
author: "Staff Reporter",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "telestream-expands-cloud-services-up",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_11ff3d2ff-1773287949660.png",
|
||||
alt: "Cloud services infrastructure for broadcast production environments",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Operative Launches AOS Configuration for Digital-First Monetization",
|
||||
excerpt: "Enterprise-grade intelligent ad management built to scale digital-first revenue across every channel — from linear to streaming and everything in between.",
|
||||
category: "BROADCAST",
|
||||
date: "March 11, 2026",
|
||||
author: "James Whitfield",
|
||||
authorSlug: "james-whitfield",
|
||||
slug: "operative-launches-aos-configuration",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_1805d1575-1773287951103.png",
|
||||
alt: "Digital monetization analytics dashboard for broadcast advertising",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Calrec Redefines Broadcast Workflows at NAB 2026 with its Most Powerful Audio Lineup Yet",
|
||||
excerpt: "The broadcast industry is going through a rapid evolution that's signalling a more collaborative and location-independent future for live production.",
|
||||
category: "BROADCAST",
|
||||
date: "March 10, 2026",
|
||||
author: "Sarah Chen",
|
||||
authorSlug: "sarah-chen",
|
||||
slug: "calrec-redefines-broadcast-workflows-nab-2026",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_10468e182-1773287953747.png",
|
||||
alt: "Calrec audio mixing console for broadcast production at NAB 2026",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Ease Live Powers Interactive Premier Padel Experiences on Red Bull TV as Viewership Surges 30%",
|
||||
excerpt: "Real-time fan engagement enhances viewing and accelerates growth of the world's fastest-growing racket sport across digital broadcast platforms.",
|
||||
category: "BROADCAST",
|
||||
date: "March 10, 2026",
|
||||
author: "Marcus Rivera",
|
||||
authorSlug: "marcus-rivera",
|
||||
slug: "ease-live-premier-padel-red-bull-tv",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_1747232a3-1773287951222.png",
|
||||
alt: "Interactive sports broadcast experience on streaming platform",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "From Metadata to Meaning: Why Semantic Intelligence Is Media's Next Competitive Advantage",
|
||||
excerpt: "Strategic conversations about content performance and audience intelligence are shifting the way media organizations approach their metadata strategies.",
|
||||
category: "FEATURED",
|
||||
date: "March 9, 2026",
|
||||
author: "Elena Vasquez",
|
||||
authorSlug: "elena-vasquez",
|
||||
slug: "from-metadata-to-meaning-semantic-intelligence",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_1c523ae5f-1773287954372.png",
|
||||
alt: "Media metadata intelligence and content analytics visualization",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Mediagenix Title Management Accelerates Content Monetization Through Advanced Semantic Intelligence",
|
||||
excerpt: "Advancing Semantic Intelligence capabilities to help studios and networks unlock greater value from their content libraries and distribution pipelines.",
|
||||
category: "POST PRODUCTION",
|
||||
date: "March 9, 2026",
|
||||
author: "David Park",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "mediagenix-title-management",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_19f6e3fe6-1769744394519.png",
|
||||
alt: "Content management system for media title management and monetization",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Emergent Launches Fusion: The 'Interactive Anything' Platform Transforming Data-Driven Storytelling",
|
||||
excerpt: "No-code application builder designed to transform complex live data into immersive interactive storytelling experiences for broadcasters and enterprises.",
|
||||
category: "BROADCAST",
|
||||
date: "March 8, 2026",
|
||||
author: "Staff Reporter",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "emergent-launches-fusion-platform",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_188669b2b-1773287951738.png",
|
||||
alt: "Interactive data storytelling platform for broadcast and enterprise use",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "KOKUSAI DENKI Electric America Welcomes Mondae Hott as Regional Sales Manager, Northeast",
|
||||
excerpt: "Industry veteran joins the team to drive growth across the northeastern United States broadcast market.",
|
||||
category: "BROADCAST",
|
||||
date: "March 8, 2026",
|
||||
author: "Lisa Thompson",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "kokusai-denki-mondae-hott",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_1b072efa4-1772991129883.png",
|
||||
alt: "Professional broadcast industry executive portrait in office setting",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Matrox Video Enables the Next Era of Software-Defined Media Production at NAB 2026",
|
||||
excerpt: "New solutions demonstrated at NAB 2026 showcase how software-defined workflows are reshaping the economics and flexibility of professional media production.",
|
||||
category: "BROADCAST",
|
||||
date: "March 7, 2026",
|
||||
author: "Carlos Mendez",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "matrox-video-software-defined-nab-2026",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_17266f6cf-1773287953058.png",
|
||||
alt: "Matrox video production hardware and software at NAB 2026 exhibition",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "GlobalM Introduces Distributed Video Gateway Architecture, Advancing Scalable Live IP Transport",
|
||||
excerpt: "New distributed architecture addresses the growing demand for scalable, resilient live IP transport solutions in modern broadcast infrastructure.",
|
||||
category: "BROADCAST",
|
||||
date: "March 7, 2026",
|
||||
author: "Staff Reporter",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "globalm-distributed-video-gateway",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_1876db6da-1773287949606.png",
|
||||
alt: "Network infrastructure for distributed video gateway IP transport system",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Video is King: 2026 Iconik Media Stats Report Finds Video Consumes 64% of Storage Needs",
|
||||
excerpt: "Annual media statistics report reveals video's growing dominance in enterprise storage requirements, with implications for media asset management strategies.",
|
||||
category: "FEATURED",
|
||||
date: "March 6, 2026",
|
||||
author: "Rachel Kim",
|
||||
authorSlug: "rachel-kim",
|
||||
slug: "video-is-king-2026-iconik-media-stats",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_140568f68-1773287953452.png",
|
||||
alt: "Video storage statistics and media asset management data visualization",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "QuickLink's Latest StudioEdge Models to Make North American Debut at NAB 2026",
|
||||
excerpt: "New StudioEdge models bring enhanced remote production capabilities and simplified IP workflows to North American broadcast professionals.",
|
||||
category: "BROADCAST",
|
||||
date: "March 6, 2026",
|
||||
author: "Tom Bradley",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "quicklink-studioedge-nab-2026",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_19c4ba922-1773287953682.png",
|
||||
alt: "QuickLink StudioEdge broadcast production equipment at NAB exhibition",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Cost Savings, Scalability, and Smarter Monetization: Viaccess-Orca Brings Efficiency to NAB 2026",
|
||||
excerpt: "Purpose-driven solutions designed to help broadcasters reduce operational costs while improving content monetization across all distribution channels.",
|
||||
category: "BROADCAST",
|
||||
date: "March 5, 2026",
|
||||
author: "Staff Reporter",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "viaccess-orca-nab-2026",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_12c71bf4d-1768883320639.png",
|
||||
alt: "Broadcast technology monetization solutions at NAB Show 2026",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Digital Alert Systems Unveils Version 6 Software for DASDEC-III Platforms",
|
||||
excerpt: "Major software update brings enhanced EAS capabilities, improved user interface, and expanded integration options for emergency alerting systems.",
|
||||
category: "BROADCAST",
|
||||
date: "March 5, 2026",
|
||||
author: "Nina Okafor",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "digital-alert-systems-dasdec-iii-v6",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_116c1855d-1773287954967.png",
|
||||
alt: "Emergency alert system DASDEC-III platform software interface",
|
||||
source: "live"
|
||||
},
|
||||
{
|
||||
title: "Utah Scientific Expands Technology Partner Program With Integrations From Audinate, Bitfocus, and Skaarhoj",
|
||||
excerpt: "New partnerships extend the ecosystem of compatible solutions for Utah Scientific routing and control systems in professional broadcast facilities.",
|
||||
category: "BROADCAST",
|
||||
date: "March 4, 2026",
|
||||
author: "Staff Reporter",
|
||||
authorSlug: "staff-reporter",
|
||||
slug: "utah-scientific-partner-program",
|
||||
image: "https://img.rocket.new/generatedImages/rocket_gen_img_1ea12f02f-1768375990494.png",
|
||||
alt: "Broadcast routing and control system technology partner integration",
|
||||
source: "live"
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
const ALL_CATEGORIES = ["All", "BROADCAST", "FEATURED", "POST PRODUCTION", "ANIMATION"];
|
||||
@@ -292,7 +110,7 @@ export default function ArticleFeed() {
|
||||
};
|
||||
|
||||
// Merge: interleave imported posts with static (imported first by recency, then static)
|
||||
const allArticles: ArticleItem[] = [...wpPosts, ...staticArticles];
|
||||
const allArticles: ArticleItem[] = [...wpPosts];
|
||||
|
||||
const uniqueAuthors = getUniqueAuthors(allArticles);
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ export default function NewsPage({ articles }: { articles: Article[] }) {
|
||||
</h2>
|
||||
<p className="text-[#777] font-body text-sm leading-relaxed line-clamp-2">{article.excerpt || ""}</p>
|
||||
<div className="flex items-center gap-2 mt-2">
|
||||
<span className="text-[#555] font-body text-xs">By {article.author || "Staff Reporter"}</span>
|
||||
<span className="text-[#555] font-body text-xs">By {article.author || "Broadcast Beat"}</span>
|
||||
<span className="text-[#444] text-[10px]">·</span>
|
||||
<span className="text-[#555] font-body text-xs">{article.readTime || ""}</span>
|
||||
</div>
|
||||
|
||||
@@ -84,7 +84,7 @@ export default async function SearchPage({ searchParams }: SearchPageProps) {
|
||||
{article.excerpt || ""}
|
||||
</p>
|
||||
<div className="flex items-center gap-2 mt-2">
|
||||
<span className="text-[#555] font-body text-xs">By {article.author || "Staff Reporter"}</span>
|
||||
<span className="text-[#555] font-body text-xs">By {article.author || "Broadcast Beat"}</span>
|
||||
<span className="text-[#444] text-[10px]">·</span>
|
||||
<span className="text-[#555] font-body text-xs">{article.readTime || ""}</span>
|
||||
</div>
|
||||
|
||||
@@ -78,7 +78,7 @@ async function fetchArticles(refs: ArticleRef[]): Promise<UnifiedArticle[]> {
|
||||
excerpt: r.excerpt || "",
|
||||
image: null,
|
||||
date: r.published_at || r.created_at,
|
||||
author: Array.isArray(r.persona) ? r.persona[0]?.name || "Staff Reporter" : r.persona?.name || "Staff Reporter",
|
||||
author: Array.isArray(r.persona) ? r.persona[0]?.name || "Broadcast Beat" : r.persona?.name || "Broadcast Beat",
|
||||
source_table: "ai_rewritten",
|
||||
});
|
||||
}
|
||||
@@ -96,7 +96,7 @@ async function fetchArticles(refs: ArticleRef[]): Promise<UnifiedArticle[]> {
|
||||
excerpt: r.excerpt || "",
|
||||
image: r.featured_image,
|
||||
date: r.wp_published_at,
|
||||
author: r.author_name || "Staff Reporter",
|
||||
author: r.author_name || "Broadcast Beat",
|
||||
source_table: "wp_imported",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ export default async function FeaturedBento() {
|
||||
</p>
|
||||
)}
|
||||
<div className="mt-4 flex flex-wrap items-center gap-3 text-[11px] font-mono text-[#9ca3af]">
|
||||
<span>{hero.author_name || "Staff Reporter"}</span>
|
||||
<span>{hero.author_name || "Broadcast Beat"}</span>
|
||||
<span>·</span>
|
||||
<span>{ago(hero.wp_published_at)}</span>
|
||||
<span aria-hidden="true" className="text-[var(--color-text-info,#60a5fa)] ml-2">→ Read full story</span>
|
||||
|
||||
@@ -54,7 +54,7 @@ export default async function FeaturedCarouselServer() {
|
||||
|
||||
for (const r of (ai.data || []) as any[]) {
|
||||
const persona = Array.isArray(r.persona) ? r.persona[0] : r.persona;
|
||||
const author = persona?.name || "Staff Reporter";
|
||||
const author = persona?.name || "Broadcast Beat";
|
||||
slides.push({
|
||||
id: r.id,
|
||||
slug: r.slug,
|
||||
@@ -74,7 +74,7 @@ export default async function FeaturedCarouselServer() {
|
||||
|
||||
for (const r of (wp.data || []) as any[]) {
|
||||
const image = r.featured_image ? rewriteLegacyImageUrl(r.featured_image) : null;
|
||||
const author = r.author_name || "Staff Reporter";
|
||||
const author = r.author_name || "Broadcast Beat";
|
||||
slides.push({
|
||||
id: String(r.wp_id),
|
||||
slug: r.wp_slug,
|
||||
|
||||
@@ -112,7 +112,7 @@ function rowToArticle(row: ImportedPostRow, section: Section = "news"): Article
|
||||
? rewriteLegacyImageUrl(row.featured_image)
|
||||
: FALLBACK_IMAGE;
|
||||
const content = rewriteLegacyImageUrlsInHtml(row.content || "");
|
||||
const author = row.author_name || "Staff Reporter";
|
||||
const author = row.author_name || "Broadcast Beat";
|
||||
return {
|
||||
slug: row.wp_slug,
|
||||
section,
|
||||
@@ -145,7 +145,7 @@ function inferSectionFromCategory(cat: string | null): Section {
|
||||
function rewriteRowToArticle(row: RewriteRow, sectionOverride?: Section): Article {
|
||||
const sortedPublishedAt = row.published_at || row.created_at;
|
||||
const persona = Array.isArray(row.persona) ? row.persona[0] || null : row.persona || null;
|
||||
const author = persona?.name || "Staff Reporter";
|
||||
const author = persona?.name || "Broadcast Beat";
|
||||
const personaSlug = persona?.slug || "staff-reporter";
|
||||
const avatar = persona?.avatar_url || FALLBACK_IMAGE;
|
||||
return {
|
||||
@@ -157,7 +157,7 @@ function rewriteRowToArticle(row: RewriteRow, sectionOverride?: Section): Articl
|
||||
date: formatDate(sortedPublishedAt),
|
||||
author,
|
||||
authorSlug: personaSlug,
|
||||
authorTitle: persona?.beat ? humanBeat(persona.beat) : "Staff Reporter",
|
||||
authorTitle: persona?.beat ? humanBeat(persona.beat) : "Broadcast Beat",
|
||||
authorAvatar: avatar,
|
||||
image: REWRITE_FALLBACK_IMAGE,
|
||||
alt: row.title,
|
||||
|
||||
Reference in New Issue
Block a user