PageSourceSearch

https://peter-saubert.net/assets/admin.redaktions-checkliste-C6MHXZDH.js

js peter-saubert.net collected 2026-10-04 23:06:05 UTC 13,233 bytes, 1 lines download raw bytes

1import{Q as u,ab as o,U as c,j as e,r as m,u as g,b5 as h,X as l,a4 as x,cw as f,D as k,L as j}from"./index-Z6JgiWHX.js";import{R as p}from"./refresh-cw-B-VhWkeh.js";import{T as b}from"./triangle-alert-DN5wrSJM.js";const N=u({method:"POST"}).middleware([o]).handler(c("9054a48ba0c5c83e2ccb80ef641031a9ad37e099fad3a154a327b611d8589fd5")),v=u({method:"POST"}).middleware([o]).handler(c("586388e521955321d32031206ce5f194b5b487c3ed55f2f1755f68f34d53565a")),d=[{id:"sprache-ton",titel:"Sprache & Tonalität",intro:"Faktenbasiert, sachlich, kritisch mit positivem Dreh. Kein Vertrieb, keine Pöbelei.",regeln:[{titel:"Nicht gendern",regel:'Vollständige Doppelnennung („Gründerinnen und Gründer") oder Grundform/generisches Maskulinum. Keine :innen, *innen, /innen, Binnen-I.'},{titel:"Sie-Form durchgehend",regel:"Magazinbeiträge und Mandanten-Ansprache konsequent in der Sie-Form, kein Sales-Tail am Ende."},{titel:"Team-Bezeichnung",regel:'Es geht um die Person, uns oder das Team. Nicht auf „die drei Berater/Personen/Köpfe/Sauberts/Inhaber" rumreiten.'},{titel:"Vollständige Namen",regel:"Personen immer mit Vor- und Nachnamen: Peter Saubert, Theo Saubert, Willi Saubert. Keine Kurzformen."},{titel:"Digitaler Beirat",regel:'Produktbezeichnung – immer großschreiben, auch nach Artikel („der Digitale Beirat").'},{titel:"Keine Verkaufs-CTAs",regel:'Kein „Jetzt kaufen", „Sichern Sie sich". Interesse führt zur Beratung.'},{titel:"Anzahl-Angaben",regel:'Mengen niemals hartcodieren („drei Berater"). Immer aus Array.length / Query ableiten.'}]},{id:"struktur",titel:"Pflicht-Struktur jedes Beitrags",intro:"Mindestens 1.800 Zeichen, Zielkorridor 4.000–10.000. Reihenfolge ist verbindlich.",regeln:[{titel:"H1 + Subline",regel:"H1 max. 70 Zeichen mit Hauptkeyword vorn, eine Subline (max. 140 Zeichen) als Nutzenversprechen."},{titel:"Kurzfassung",regel:'„Warum diesen Beitrag lesen?" als Box mit 3–5 Bullets + Lesezeit – vor dem Inhaltsverzeichnis.'},{titel:"Sprungmarken",regel:"Jede H2 bekommt {#anker}, damit Google und LLMs direkt in den Abschnitt verlinken können."},{titel:"Inhaltsverzeichnis",regel:"Automatisch aus H2/H3 – pro Beitrag verpflichtend."},{titel:"FAQ",regel:"4–8 echte Leserfragen als H3, Antworten 2–4 Sätze. Wird als FAQPage-JSON-LD ausgespielt."},{titel:"Kontakt-Block",regel:"Jede Seite endet mit der gemeinsamen KontaktSection. Keine freihändigen Floskeln."}]},{id:"embeds",titel:"Embeds & Medien",regeln:[{titel:"Apps nur über Marken-Subdomain",regel:"iframe ausschließlich unter *.peter-saubert.net – NIE *.lovable.app-URLs in produktiven Content."},{titel:"Podcast-Embed",regel:":::podcast[show|episode|audio|titel]::: – genau ein Block, nach Kurzfassung, vor dem ersten H2. Keine Whiteplayer-iframes."},{titel:"YouTube-Embed",regel:":::youtube[VIDEO_ID|Titel]::: – keine rohen <iframe>-Embeds, keine WP-Vorschau-Thumbnails."},{titel:"Erläuterungs-Kasten",regel:":::callout[Begriff|info|highlight|warning]::: für kurze Definitionen, nicht als H3 mit Fließtext."},{titel:"Zitate",regel:"Hervorgehobener Absatz + Name/Rolle = Pullquote. :::pullquote[Name|Rolle]:::, nie als kursiver Fließtext."},{titel:"KI-/Fremd-Passagen",regel:"Vollständig als Blockquote (> vor jeder Zeile, inkl. Zwischenüberschriften) markieren."},{titel:"KI-Experiment",regel:'Genauer H2-Wortlaut „## Unser Experiment: Bewertung von Ergebnissen einer KI" am Ende des Hauptteils. Der Renderer wrappt automatisch.'}]},{id:"magazin-hub",titel:"Magazin vs. Hub",regeln:[{titel:"Hub-Zuordnung aus Alt-Seite",regel:"Bereich/Hub 1:1 aus der WordPress-Struktur (peter-saubert.net) übernehmen – nicht selbst neu entscheiden."},{titel:"Magazin im Hub",regel:'Magazinbeiträge gehören im Hub ausschließlich in den rechten Block „Magazin", nicht als Content-Module in den Body.'},{titel:"Doppelte Inhalte vermeiden",regel:"Vor Anlage eines Hub-Moduls prüfen, ob ein Magazinbeitrag existiert – dann verlinken statt duplizieren."},{titel:"Module-Zweck",regel:"Hub-Module sind reserviert für Methodik- und 1×1-Inhalte. Interview-Layout nicht anfassen."}
1,{titel:"Neue Magazinbeiträge",regel:"Bei jedem neuen Beitrag sofort Thema (z. B. Unternehmertum, Interview) + Hub klären – nicht raten."}]},{id:"assets-links",titel:"Assets, Links, Bilder",regeln:[{titel:"Keine WP-Assets mehr",regel:"Keine Links/Embeds auf peter-saubert.net/wp-content/... – der alte Server wird abgeschaltet. PDFs/Bilder migrieren."},{titel:"Linktexte",regel:"Nie nackte URLs als sichtbarer Text. Links in Buttons, Bilder oder beschreibende Ankertexte verpacken."},{titel:"Inline-Bilder",regel:"Magazinbeiträge brauchen mind. 1 Inline-Bild (fast-Tier KI) im Textfluss – zusätzlich zum Cover."},{titel:"Cover migriert",regel:"Cover- und Inline-Grafiken vor Veröffentlichung auf Lovable Assets / Supabase Storage übertragen."},{titel:"Versalien",regel:"Uppercase + tracking nur für kurze Eyebrow-Labels. Rollen/Tags/Beschreibungen normal setzen."},{titel:"Startup-Profi-Formulare",regel:"AVGS einreichen / Angebot anfordern: immer per Cognito-iframe einbinden, nie auf WP verlinken."}]},{id:"fertig",titel:"Fertig-Check Magazinbeitrag",intro:"Erst wenn ALLE Punkte erfüllt sind, gilt ein Beitrag als fertig. Sonst keine Fertig-Meldung.",regeln:[{titel:"1. Sie-Form ohne Sales-Tail",regel:"Tonalität durchgehend Sie, kein Verkaufsabschluss."},{titel:"2. {#anker} an jedem H2",regel:"Damit Sprungmarken im Inhaltsverzeichnis und LLM-Verlinkung funktionieren."},{titel:"3. Cover migriert",regel:"cover_url + og_image gesetzt, Datei auf neuer Infrastruktur."},{titel:"4. KI-Anreicherung published",regel:"ai_intro, ai_faq, ai_glossary, ai_related erzeugt und Status auf published."},{titel:"5. Inline-Bild im Textfluss",regel:"Mind. 1 zusätzliches Bild im Textkörper, nicht nur Cover."},{titel:"6. Kontakt-Block automatisch",regel:"Kommt aus dem Renderer – kein manueller Doppelblock im Markdown."}]},{id:"veroeffentlichung",titel:"Geplante Veröffentlichung",regeln:[{titel:"Status + Datum",regel:'Beitrag erscheint, wenn status = „Veröffentlicht" UND „Veröffentlicht am" in der Vergangenheit liegt (oder leer ist).'},{titel:"Zeitzone explizit",regel:"ISO-Zeitstempel mit Offset (+02:00 MESZ / +01:00 MEZ), sonst wird UTC angenommen."},{titel:"VG-Wort-Zählmarke",regel:"Pro Seite Pflicht – Feld im CMS muss befüllt sein, bevor veröffentlicht wird."}]}];function A(){return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("header",{className:"space-y-2",children:[e.jsx("p",{className:"text-xs font-semibold uppercase tracking-[0.18em] text-muted-foreground",children:"Redaktion"}),e.jsx("h1",{className:"font-serif text-3xl font-semibold",children:"Redaktions-Checkliste"}),e.jsxs("p",{className:"max-w-3xl text-muted-foreground",children:["Kurzfassung der allgemeinen Regeln, die wir im Lauf der Magazin-Migration geklärt haben. Verbindlich für Magazinbeiträge, Hub-Module und alle redaktionellen Seiten. Die ausführliche Fassung steht in ",e.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 text-xs",children:"docs/redaktions-guideline.md"}),"."]})]}),e.jsxs("nav",{"aria-label":"Abschnitte",className:"rounded-md border bg-background p-4",children:[e.jsx("div",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:"Inhalt"}),e.jsx("ul",{className:"mt-2 grid gap-1 text-sm sm:grid-cols-2 lg:grid-cols-3",children:d.map(n=>e.jsx("li",{children:e.jsx("a",{href:`#${n.id}`,className:"text-primary hover:underline",children:n.titel})},n.id))})]}),e.jsx(S,{}),e.jsx(w,{}),d.map(n=>e.jsxs("section",{id:n.id,className:"scroll-mt-24 rounded-md border bg-background p-5",children:[e.jsx("h2",{className:"font-serif text-xl font-semibold",children:n.titel}),n.intro&&e.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:n.intro}),e.jsx("ul",{className:"mt-4 space-y-3",children:n.regeln.map(s=>e.jsxs("li",{className:"border-l-2 border-primary/60 pl-3",children:[e.jsx("div",{className:"text-sm font-semibold",children:s.titel}),e.jsx("div",{className:"text-sm text-muted-foreground",children:s.regel})]},s.titel))})]},n.id))]})}function S(){const[n,s]=m.useState(null),a=g(N),i=h({mutationFn:async()=>await a({}),onSuccess:t=>{s(t),l.success(t.with_issues===0?`Alle ${t.scanned} Beiträge erfüllen die Checkliste.`:`${t.with_issues} von ${t.scanned} Beiträgen brauchen Nacharbeit.`)},onError:t=>l.error(t instanceof Error?t.message:"Prüfung fehlgeschlagen")});return e.jsxs("section",{className:"rounded-md border bg-background p-5",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl font-semibold",children:"Magazin-Vollständigkeit prüfen"}),e.jsxs("p",{className:"mt-1 max-w-2xl text-sm text-muted-foreground",children:["Prüft alle veröffentlichten Magazinbeiträge auf Sie-Form, ","{#anker}"," an den H2, Cover, KI-Anreicherung und mindestens ein Inline-Bild."]})]}),e.jsxs(x,{onClick:()=>i.mutate(),disabled:i.isPending,children:[i.isPending?e.jsx(f,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(p,{className:"mr-2 h-4 w-4"}),"Prüfung starten"]})]}),n&&e.jsxs("div",{className:"mt-5 space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap gap-4 text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["Geprüft: ",e.jsx("strong",{className:"text-foreground",children:n.scanned})]}),e.jsxs("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[e.jsx(k,{className:"h-4 w-4 text-primary"})," Sauber:"," ",e.jsx("strong",{className:"text-foreground",children:n.ok})]}),e.jsxs("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[e.jsx(b,{className:"h-4 w-4 text-primary"})," Nacharbeit:"," ",e.jsx("strong",{className:"text-foreground",children:n.with_issues})]}),e.jsxs("span",{className:"text-muted-foreground",children:["Stand: ",new Date(n.generated_at).toLocaleStr
1ing("de-DE")]})]}),n.rows.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Befunde – alles erfüllt."}):e.jsx("ul",{className:"divide-y rounded-md border",children:n.rows.map(t=>e.jsxs("li",{className:"p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("span",{className:"text-sm font-semibold",children:t.title??t.slug}),e.jsx(j,{to:"/magazin/$slug",params:{slug:t.slug},target:"_blank",className:"text-xs text-primary hover:underline",children:"Beitrag ansehen"})]}),e.jsx("ul",{className:"mt-1 space-y-0.5 text-sm text-muted-foreground",children:t.issues.map(r=>e.jsxs("li",{children:["· ",r.msg]},r.code+r.msg))})]},t.slug))})]})]})}function w(){const[n,s]=m.useState(null),a=g(v),i=h({mutationFn:async()=>await a({}),onSuccess:t=>{s(t),l.success(t.with_issues===0?`Alle ${t.multi_hub} Mehrfach-Module sprechen die richtige Zielgruppe an.`:`${t.with_issues} Module mit unpassender Zielgruppen-Ansprache.`)},onError:t=>l.error(t instanceof Error?t.message:"Prüfung fehlgeschlagen")});return e.jsxs("section",{className:"rounded-md border bg-background p-5",children:[e.jsxs("div",{className:"flex flex-wrap items-start justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"font-serif text-xl font-semibold",children:"Zielgruppen-Ansprache prüfen"}),e.jsx("p",{className:"mt-1 max-w-2xl text-sm text-muted-foreground",children:'Sucht Module, die in mehreren Hubs erscheinen und dort Rollenbezeichnungen verwenden, die nicht zur Zielgruppe des Hubs passen (z. B. „Gründer" im 1×1 des Unternehmertums). Behebbar über einen Hub-Override.'})]}),e.jsxs(x,{onClick:()=>i.mutate(),disabled:i.isPending,children:[i.isPending?e.jsx(f,{className:"mr-2 h-4 w-4 animate-spin"}):e.jsx(p,{className:"mr-2 h-4 w-4"}),"Prüfung starten"]})]}),n&&e.jsxs("div",{className:"mt-5 space-y-3",children:[e.jsxs("div",{className:"flex flex-wrap gap-4 text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["Module gesamt: ",e.jsx("strong",{className:"text-foreground",children:n.scanned})]}),e.jsxs("span",{className:"text-muted-foreground",children:["In mehreren Hubs: ",e.jsx("strong",{className:"text-foreground",children:n.multi_hub})]}),e.jsxs("span",{className:"inline-flex items-center gap-1 text-muted-foreground",children:[e.jsx(b,{className:"h-4 w-4 text-primary"})," Befunde:"," ",e.jsx("strong",{className:"text-foreground",children:n.with_issues})]}),e.jsxs("span",{className:"text-muted-foreground",children:["Stand: ",new Date(n.generated_at).toLocaleString("de-DE")]})]}),n.rows.length===0?e.jsx("p",{className:"text-sm text-muted-foreground",children:"Keine Befunde."}):e.jsx("ul",{className:"divide-y rounded-md border",children:n.rows.map(t=>e.jsxs("li",{className:"p-3",children:[e.jsx("div",{className:"text-sm font-semibold",children:t.title}),e.jsx("div",{className:"text-xs text-muted-foreground",children:t.module_slug}),e.jsx("ul",{className:"mt-1 space-y-0.5 text-sm text-muted-foreground",children:t.issues.map(r=>e.jsxs("li",{children:["· ",r.hubLabel,": unpassend „",r.treffer.join(", "),'"',r.hasOverride?" (Override vorhanden)":" – Override fehlt"]},r.hub))})]},t.module_slug))})]})]})}export{A as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.