AV launch: comprehensive copy sweep — broadcast/NAB-to-IBC → pro AV/InfoComm-to-ISE across layout/header/forum/marketplace/search/advertise/AI prompts/newsletter/RSS; bump header logo h-7→h-12 + footer h-6→h-9

This commit is contained in:
2026-06-02 22:35:51 +00:00
parent 9bb04fb373
commit b96c424476
14 changed files with 32 additions and 32 deletions

View File

@@ -49,7 +49,7 @@ export default function AdvertisePage() {
<span className="section-label mb-3 inline-block">Advertise</span> <span className="section-label mb-3 inline-block">Advertise</span>
<h1 className="font-heading text-white text-4xl font-bold mb-4">Reach Broadcast Engineering Professionals</h1> <h1 className="font-heading text-white text-4xl font-bold mb-4">Reach Broadcast Engineering Professionals</h1>
<p className="text-[#aaa] font-body text-lg max-w-2xl mx-auto mb-6"> <p className="text-[#aaa] font-body text-lg max-w-2xl mx-auto mb-6">
AV Beat is the leading digital platform for broadcast engineering professionals. Connect your brand with decision-makers, engineers, and executives across the broadcast industry. AV Beat is the leading digital platform for pro AV, live production, and display tech professionals. Connect your brand with decision-makers, integrators, and executives across the pro AV industry.
</p> </p>
<a <a
href="#contact" href="#contact"

View File

@@ -22,12 +22,12 @@ export async function POST(request: NextRequest) {
date: a.date, date: a.date,
})); }));
const systemPrompt = `You are a personalized content recommendation engine for AV Beat, a broadcast engineering news platform. const systemPrompt = `You are a personalized content recommendation engine for AV Beat, a pro AV / live production / display tech news platform.
Given a reader's topic interests and reading history, select the 4 most relevant articles from the provided article list. Given a reader's topic interests and reading history, select the 4 most relevant articles from the provided article list.
Return ONLY a valid JSON array of slugs in order of relevance. Example: ["slug-1","slug-2","slug-3","slug-4"] Return ONLY a valid JSON array of slugs in order of relevance. Example: ["slug-1","slug-2","slug-3","slug-4"]
Do not include any explanation or markdown — only the raw JSON array.`; Do not include any explanation or markdown — only the raw JSON array.`;
const userPrompt = `Reader interests: ${interests?.length ? interests.join(', ') : 'general broadcast engineering'} const userPrompt = `Reader interests: ${interests?.length ? interests.join(', ') : 'general pro AV and live production'}
Reading history (recently read slugs): ${readingHistory?.length ? readingHistory.join(', ') : 'none'} Reading history (recently read slugs): ${readingHistory?.length ? readingHistory.join(', ') : 'none'}
Available articles: Available articles:

View File

@@ -19,7 +19,7 @@ export async function POST(req: NextRequest) {
[ [
{ {
role: 'system', role: 'system',
content: `You are the AV Beat AI Assistant — a knowledgeable, helpful assistant for broadcast engineering professionals. You have deep expertise in broadcast technology including live production, IP workflows, SMPTE ST 2110, audio engineering, cameras, streaming, post-production, MAM systems, and broadcast industry trends. content: `You are the AV Beat AI Assistant — a knowledgeable, helpful assistant for pro AV, live production, and display tech professionals. You have deep expertise in AV technology including AV-over-IP, control systems, projection & display, audio engineering, conferencing, live production, signal flow, and the pro AV industry.
You are responding in a community forum. Be helpful, technically accurate, and conversational. Acknowledge when a question is complex or when professional consultation is advisable. Keep responses focused and practical — broadcast engineers value concise, actionable information. You are responding in a community forum. Be helpful, technically accurate, and conversational. Acknowledge when a question is complex or when professional consultation is advisable. Keep responses focused and practical — broadcast engineers value concise, actionable information.
@@ -33,7 +33,7 @@ Original post: ${thread_body}
${existingContext ? `Existing discussion:\n${existingContext}\n\n` : ''}New question: ${question} ${existingContext ? `Existing discussion:\n${existingContext}\n\n` : ''}New question: ${question}
Please provide a helpful, technically accurate response for this broadcast engineering forum thread.`, Please provide a helpful, technically accurate response for this pro AV / live production forum thread.`,
}, },
], ],
{ maxTokens: 600, isBackground: false, priority: 2 } { maxTokens: 600, isBackground: false, priority: 2 }

View File

@@ -103,7 +103,7 @@ async function sendWelcome(email: string, topics?: string[]) {
<tr><td style="padding:32px 36px 8px;"> <tr><td style="padding:32px 36px 8px;">
<div style="font-family:'Courier New',monospace;font-size:10px;font-weight:700;letter-spacing:0.22em;text-transform:uppercase;color:#3b82f6;">AV Beat Newsletter</div> <div style="font-family:'Courier New',monospace;font-size:10px;font-weight:700;letter-spacing:0.22em;text-transform:uppercase;color:#3b82f6;">AV Beat Newsletter</div>
<h1 style="margin:14px 0 8px;font-size:24px;line-height:1.2;color:#ffffff;font-weight:800;">You're in</h1> <h1 style="margin:14px 0 8px;font-size:24px;line-height:1.2;color:#ffffff;font-weight:800;">You're in</h1>
<p style="margin:0;color:#cfd6e1;font-size:15px;line-height:1.55;">Thanks for subscribing to <strong style="color:#ffffff;">AV Beat</strong> — the digital platform for broadcast engineering professionals.</p> <p style="margin:0;color:#cfd6e1;font-size:15px;line-height:1.55;">Thanks for subscribing to <strong style="color:#ffffff;">AV Beat</strong> — the digital platform for pro AV, live production, and display tech professionals.</p>
${topicsBlock} ${topicsBlock}
</td></tr> </td></tr>
<tr><td style="padding:18px 36px 8px;"> <tr><td style="padding:18px 36px 8px;">

View File

@@ -141,7 +141,7 @@ export async function POST(req: NextRequest) {
<!-- Header --> <!-- Header -->
<div style="background:#111;border-bottom:2px solid #3b82f6;padding:24px 32px;"> <div style="background:#111;border-bottom:2px solid #3b82f6;padding:24px 32px;">
<h1 style="color:#3b82f6;font-size:22px;margin:0;font-weight:bold;">AV Beat</h1> <h1 style="color:#3b82f6;font-size:22px;margin:0;font-weight:bold;">AV Beat</h1>
<p style="color:#555;font-size:12px;margin:4px 0 0;">News & Intelligence for Broadcast, Post-Production & Streaming Technology</p> <p style="color:#555;font-size:12px;margin:4px 0 0;">News & Intelligence for Pro AV, Live Production & Display Tech</p>
</div> </div>
<!-- Body --> <!-- Body -->
<div style="padding:32px;"> <div style="padding:32px;">

View File

@@ -2,18 +2,18 @@ import type { Metadata } from 'next';
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'The Crew Lounge — AV Beat', title: 'The Crew Lounge — AV Beat',
description: 'The Crew Lounge: connect with broadcast, motion picture and post production professionals worldwide. Discuss live production, IP workflows, streaming, audio, cameras, AI automation, and more.', description: 'The Crew Lounge: connect with pro AV integrators, live production engineers, and display tech specialists worldwide. Discuss AV-over-IP, control systems, projection & display, audio engineering, conferencing, AI automation, and more.',
alternates: { canonical: '/forum' }, alternates: { canonical: '/forum' },
openGraph: { openGraph: {
title: 'The Crew Lounge — AV Beat', title: 'The Crew Lounge — AV Beat',
description: 'The Crew Lounge: connect with broadcast, motion picture and post production professionals worldwide. Ask questions, share expertise, and discuss broadcast technology.', description: 'The Crew Lounge: connect with pro AV integrators, live production engineers, and display tech specialists worldwide. Ask questions, share expertise, and discuss AV technology.',
url: '/forum', url: '/forum',
type: 'website', type: 'website',
}, },
twitter: { twitter: {
card: 'summary', card: 'summary',
title: 'The Crew Lounge — AV Beat', title: 'The Crew Lounge — AV Beat',
description: 'The Crew Lounge: connect with broadcast, motion picture and post production professionals worldwide on AV Beat.', description: 'The Crew Lounge: connect with pro AV integrators, live production engineers, and display tech specialists worldwide on AV Beat.',
}, },
}; };

View File

@@ -294,7 +294,7 @@ export default function ForumIndexPage() {
<h1 className="text-3xl font-heading font-bold text-white">The Crew Lounge</h1> <h1 className="text-3xl font-heading font-bold text-white">The Crew Lounge</h1>
</div> </div>
<p className="text-[#aab4c4] font-body text-sm max-w-2xl"> <p className="text-[#aab4c4] font-body text-sm max-w-2xl">
Connect with broadcast, motion picture, and post production pros worldwide. Connect with pro AV integrators, live production engineers, and display tech specialists worldwide.
</p> </p>
</div> </div>
<div className="flex-shrink-0"> <div className="flex-shrink-0">

View File

@@ -34,8 +34,8 @@ export const viewport: Viewport = {
export const metadata: Metadata = { export const metadata: Metadata = {
metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000'), metadataBase: new URL(process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000'),
title: 'AV Beat — Broadcast Engineering News & Insights', title: 'AV Beat — Pro AV, Live Production & Display Tech News',
description: 'The digital platform for broadcast engineering professionals. Breaking news, deep-dive features, and industry spotlights from NAB to IBC and beyond.', description: 'The digital platform for pro AV, live production, and display tech professionals. Breaking news, deep-dive features, and industry spotlights from InfoComm to ISE and beyond.',
icons: { icons: {
icon: [ icon: [
{ url: '/favicon.ico', type: 'image/x-icon', sizes: 'any' }, { url: '/favicon.ico', type: 'image/x-icon', sizes: 'any' },
@@ -59,14 +59,14 @@ export const metadata: Metadata = {
locale: 'en_US', locale: 'en_US',
url: '/', url: '/',
siteName: 'AV Beat', siteName: 'AV Beat',
title: 'AV Beat — Broadcast News', title: 'AV Beat — Pro AV, Live Production & Display Tech',
description: 'Breaking news and insights for broadcast engineering professionals.', description: 'Breaking news and insights for pro AV, live production, and display tech professionals.',
images: [ images: [
{ {
url: '/assets/images/og-image.png', url: '/assets/images/og-image.png',
width: 1200, width: 1200,
height: 630, height: 630,
alt: 'AV Beat — Broadcast Engineering News & Insights', alt: 'AV Beat — Pro AV, Live Production & Display Tech News',
type: 'image/png' type: 'image/png'
}] }]
@@ -75,8 +75,8 @@ export const metadata: Metadata = {
card: 'summary_large_image', card: 'summary_large_image',
site: '@AV Beat', site: '@AV Beat',
creator: '@AV Beat', creator: '@AV Beat',
title: 'AV Beat — Broadcast News', title: 'AV Beat — Pro AV, Live Production & Display Tech',
description: 'Breaking news and insights for broadcast engineering professionals.', description: 'Breaking news and insights for pro AV, live production, and display tech professionals.',
images: ['/assets/images/og-image.png'] images: ['/assets/images/og-image.png']
}, },
robots: { robots: {
@@ -125,7 +125,7 @@ export default function RootLayout({
name: 'AV Beat', name: 'AV Beat',
url: 'https://avbeat.com', url: 'https://avbeat.com',
logo: "https://avbeat.com/assets/images/logo.svg", logo: "https://avbeat.com/assets/images/logo.svg",
description: 'The digital platform for broadcast engineering professionals. Breaking news, deep-dive features, and industry spotlights from NAB to IBC and beyond.', description: 'The digital platform for pro AV, live production, and display tech professionals. Breaking news, deep-dive features, and industry spotlights from InfoComm to ISE and beyond.',
sameAs: [ sameAs: [
'https://linkedin.com', 'https://linkedin.com',
'https://twitter.com', 'https://twitter.com',

View File

@@ -43,7 +43,7 @@ export default function MarketplacePage() {
</h1> </h1>
<p className="text-lg md:text-xl text-gray-400 max-w-3xl mx-auto mb-10 leading-relaxed"> <p className="text-lg md:text-xl text-gray-400 max-w-3xl mx-auto mb-10 leading-relaxed">
Find crew, hire vendors, post jobs, and land gigs all in one place built by Find crew, hire vendors, post jobs, and land gigs all in one place built by
broadcast professionals, for broadcast professionals. pro AV professionals, for pro AV professionals.
</p> </p>
<div className="flex flex-col sm:flex-row gap-4 justify-center"> <div className="flex flex-col sm:flex-row gap-4 justify-center">
<Link <Link
@@ -104,7 +104,7 @@ export default function MarketplacePage() {
</div> </div>
<h3 className="text-xl font-bold mb-3">Find Talent</h3> <h3 className="text-xl font-bold mb-3">Find Talent</h3>
<p className="text-gray-400 text-sm leading-relaxed mb-6"> <p className="text-gray-400 text-sm leading-relaxed mb-6">
Search our directory of verified broadcast professionals and production vendors. Search our directory of verified pro AV integrators, live production engineers, and display tech vendors.
Filter by location, specialty, rate, and union status. Filter by location, specialty, rate, and union status.
</p> </p>
<Link <Link
@@ -122,7 +122,7 @@ export default function MarketplacePage() {
<h3 className="text-xl font-bold mb-3">Post Jobs & Gigs</h3> <h3 className="text-xl font-bold mb-3">Post Jobs & Gigs</h3>
<p className="text-gray-400 text-sm leading-relaxed mb-6"> <p className="text-gray-400 text-sm leading-relaxed mb-6">
Post full-time positions or short-term crew calls. Reach thousands of qualified Post full-time positions or short-term crew calls. Reach thousands of qualified
broadcast professionals instantly. pro AV professionals instantly.
</p> </p>
<div className="flex flex-col gap-2"> <div className="flex flex-col gap-2">
<Link <Link

View File

@@ -605,7 +605,7 @@ export default function NewsArticleDetailClient({
<div className="bg-[#0d1520] border border-[#1e3a5f] p-5"> <div className="bg-[#0d1520] border border-[#1e3a5f] p-5">
<h3 className="font-heading text-[#e0e0e0] font-bold mb-2">Stay Updated</h3> <h3 className="font-heading text-[#e0e0e0] font-bold mb-2">Stay Updated</h3>
<p className="font-body text-[#777] text-xs mb-4"> <p className="font-body text-[#777] text-xs mb-4">
Get the latest broadcast engineering news delivered to your inbox. Get the latest pro AV industry news delivered to your inbox.
</p> </p>
<Link <Link
href="/home-page#newsletter" href="/home-page#newsletter"

View File

@@ -44,7 +44,7 @@ export async function GET() {
<title>AV Beat</title> <title>AV Beat</title>
<link>${SITE_URL}</link> <link>${SITE_URL}</link>
<atom:link href="${SITE_URL}/rss" rel="self" type="application/rss+xml" /> <atom:link href="${SITE_URL}/rss" rel="self" type="application/rss+xml" />
<description>News &amp; Intelligence for Broadcast, Post-Production &amp; Streaming Technology</description> <description>News &amp; Intelligence for Pro AV, Live Production &amp; Display Tech</description>
<language>en-us</language> <language>en-us</language>
<lastBuildDate>${new Date().toUTCString()}</lastBuildDate> <lastBuildDate>${new Date().toUTCString()}</lastBuildDate>
${items} ${items}

View File

@@ -13,7 +13,7 @@ export const revalidate = 60;
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Search — AV Beat", title: "Search — AV Beat",
description: description:
"Search AV Beat for broadcast engineering news, gear reviews, show coverage, and technology insights.", "Search AV Beat for pro AV news, gear reviews, show coverage, and live-production technology insights.",
alternates: { canonical: "/search" }, alternates: { canonical: "/search" },
}; };

View File

@@ -114,9 +114,9 @@ export default function Footer() {
<AppImage <AppImage
src="/assets/images/logo.svg" src="/assets/images/logo.svg"
alt="AV Beat" alt="AV Beat"
width={180} width={260}
height={24} height={36}
className="h-6 w-auto object-contain" /> className="h-9 w-auto object-contain" />
</Link> </Link>
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">

View File

@@ -265,10 +265,10 @@ export default function Header() {
<AppImage <AppImage
src="/assets/images/logo.svg" src="/assets/images/logo.svg"
alt="AV Beat logo" alt="AV Beat logo"
width={200} width={320}
height={26} height={48}
priority={true} priority={true}
className="h-7 w-auto object-contain" className="h-12 w-auto object-contain"
/> />
</Link> </Link>
@@ -418,7 +418,7 @@ export default function Header() {
<div className="max-w-container mx-auto px-4"> <div className="max-w-container mx-auto px-4">
<div className="bg-[#1a2535] border-b border-[#2a3a50] h-8 flex items-center justify-between px-4"> <div className="bg-[#1a2535] border-b border-[#2a3a50] h-8 flex items-center justify-between px-4">
<p className="text-[#999999] text-xs font-body hidden sm:block"> <p className="text-[#999999] text-xs font-body hidden sm:block">
News & Intelligence for Broadcast, Post-Production & Streaming Technology News & Intelligence for Pro AV, Live Production & Display Tech
</p> </p>
<div className="flex items-center gap-3 ml-auto"> <div className="flex items-center gap-3 ml-auto">
<a href="https://linkedin.com/company/avbeat" target="_blank" rel="noopener noreferrer" aria-label="AV Beat on LinkedIn" <a href="https://linkedin.com/company/avbeat" target="_blank" rel="noopener noreferrer" aria-label="AV Beat on LinkedIn"