From 47273fc1ebf37ea1b957c006f8e4fb7ad25ae59b Mon Sep 17 00:00:00 2001 From: folx bot Date: Wed, 26 Aug 2026 10:15:05 +0200 Subject: [PATCH] seo: izdajatelj z registrirano druzbo in strukturirani podatki na naslovnici Publisher je bil povsod samo ime in logo, naslovnica pa sploh brez JSON-LD. Zdaj gre v NewsArticle, VideoObject in oba clanska grafa ista Organization z legalName PRIME TIME Consulting GmbH, naslovom, kontaktom in sameAs profili, naslovnica pa dobi graf Organization + WebSite s SearchAction. --- server/static.ts | 85 ++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 67 insertions(+), 18 deletions(-) diff --git a/server/static.ts b/server/static.ts index 9332b5b..efa75ff 100644 --- a/server/static.ts +++ b/server/static.ts @@ -70,6 +70,37 @@ const ARTICLE_SLUG_REDIRECTS: Record = { // Rubrike, ki jih pisemo enkrat in objavimo tudi na onemusic.news. Besedilo je // isto na obeh domenah, zato jih na folx.tv drzimo zunaj Googlovega indeksa — // v bazi in v /api/articles ostanejo, ker jih bere sidebar na TV kanalih. +// Izdajatelj: doslej samo ime in logo. Brez registrirane druzbe, naslova in +// profilov Google znamke nima s cim povezati. +const PUBLISHER = (base: string) => ({ + "@type": ["NewsMediaOrganization", "Organization"], + "@id": `${base}/#organization`, + "name": "FOLX Music Television", + "url": base, + "legalName": "PRIME TIME Consulting GmbH", + "logo": { "@type": "ImageObject", "url": `${base}/og-image.jpg` }, + "address": { + "@type": "PostalAddress", + "streetAddress": "Sigmaringer Str. 10", + "postalCode": "72379", + "addressLocality": "Hechingen", + "addressCountry": "DE", + }, + "contactPoint": { + "@type": "ContactPoint", + "contactType": "customer service", + "email": "office@primetime.consulting", + "telephone": "+49 172 5675800", + "areaServed": ["DE", "AT", "CH"], + "availableLanguage": ["German"], + }, + "sameAs": [ + "https://www.facebook.com/folxtv", + "https://www.instagram.com/folxtv/", + "https://www.youtube.com/@FOLXTV", + ], +}); + const ONE_RUBRIKEN = new Set(["Politik", "Promis", "Sport", "Musik & Film", "Wetter", "Finanzen", "Aktuelles"]); function setRobots(html: string, content: string): string { @@ -165,11 +196,7 @@ export function serveStatic(app: Express) { "contentUrl": v.youtubeUrl, "isFamilyFriendly": true, "inLanguage": "de", - "publisher": { - "@type": "Organization", - "name": "Folx Music Television", - "logo": { "@type": "ImageObject", "url": `${canonicalBase}/og-image.jpg` }, - }, + "publisher": PUBLISHER(canonicalBase), "mainEntityOfPage": { "@type": "WebPage", "@id": pageUrl }, ...(chaps.length >= 3 ? { hasPart: chaps.map((c: any, i: number) => ({ @@ -237,6 +264,39 @@ export function serveStatic(app: Express) { } } + // ---- Naslovnica: doslej brez strukturiranih podatkov. Organization in + // WebSite sta tista dva vozlisca, na katera se veze vse ostalo. ---- + if (url === "/" || url.startsWith("/?")) { + try { + let template = await fs.promises.readFile(indexPath, "utf-8"); + const homeLd = { + "@context": "https://schema.org", + "@graph": [ + PUBLISHER(canonicalBase), + { + "@type": "WebSite", + "@id": `${canonicalBase}/#website`, + "url": `${canonicalBase}/`, + "name": "FOLX Music Television", + "inLanguage": "de-DE", + "publisher": { "@id": `${canonicalBase}/#organization` }, + "potentialAction": { + "@type": "SearchAction", + "target": { "@type": "EntryPoint", "urlTemplate": `${canonicalBase}/suche?q={search_term_string}` }, + "query-input": "required name=search_term_string", + }, + }, + ], + }; + template = template.replace( + "", + `\n`); + res.status(200).set({ "Content-Type": "text/html" }).end(template); + return; + } catch (e) { + } + } + // ---- /category/: prej je vrnil HTML naslovnice s canonical "/" in // brez vsebine, kar je Google bral kot soft 404 / podvojeno naslovnico ---- const catMatch = url.match(/^\/category\/([^?#\/]+)/); @@ -366,14 +426,7 @@ export function serveStatic(app: Express) { "name": article.author || "Folx Music Television", "url": canonicalBase, }, - "publisher": { - "@type": "Organization", - "name": "Folx Music Television", - "logo": { - "@type": "ImageObject", - "url": `${canonicalBase}/og-image.jpg`, - }, - }, + "publisher": PUBLISHER(canonicalBase), "mainEntityOfPage": { "@type": "WebPage", "@id": articleUrl, @@ -390,11 +443,7 @@ export function serveStatic(app: Express) { "uploadDate": pubDate, "embedUrl": `https://www.youtube.com/embed/${videoId}`, "contentUrl": `https://www.youtube.com/watch?v=${videoId}`, - "publisher": { - "@type": "Organization", - "name": "Folx Music Television", - "logo": { "@type": "ImageObject", "url": `${canonicalBase}/og-image.jpg` }, - }, + "publisher": PUBLISHER(canonicalBase), } : null; const videoLdTag = videoLd ? ``