From 8cf2ce1b21509d52c72d30d07a608c77cdbadae8 Mon Sep 17 00:00:00 2001 From: knuthtimo-lab Date: Mon, 3 Aug 2026 10:27:15 +0200 Subject: [PATCH] Ads.txt --- app/datenschutz/page.tsx | 15 +- app/ratgeber/[slug]/page.tsx | 100 ++++++++++++ app/ratgeber/page.tsx | 47 ++++++ app/sitemap.ts | 19 +++ app/ueber-uns/page.tsx | 43 +++++ components/footer.tsx | 6 + components/nav.tsx | 2 + lib/guides.ts | 160 +++++++++++++++++++ public/ads.txt | 1 + raycast-decision-kit/assets/command-icon.png | Bin 0 -> 3070 bytes 10 files changed, 386 insertions(+), 7 deletions(-) create mode 100644 app/ratgeber/[slug]/page.tsx create mode 100644 app/ratgeber/page.tsx create mode 100644 app/ueber-uns/page.tsx create mode 100644 lib/guides.ts create mode 100644 public/ads.txt create mode 100644 raycast-decision-kit/assets/command-icon.png diff --git a/app/datenschutz/page.tsx b/app/datenschutz/page.tsx index 190e55c..1b58124 100644 --- a/app/datenschutz/page.tsx +++ b/app/datenschutz/page.tsx @@ -91,14 +91,15 @@ export default function DatenschutzPage() {
-

5. Cookies und Werbung

+

5. Werbung mit Google AdSense

- Entscheidomat setzt aktuell keine Cookies und keine Werbedienste - ein. Sollte künftig Werbung (z. B. Google AdSense) - hinzukommen, wird diese Datenschutzerklärung vorher aktualisiert - und eine Einwilligungslösung (Consent-Banner) für Nutzerinnen und - Nutzer aus der EU, dem UK und der Schweiz eingebaut, bevor der - Dienst aktiv geschaltet wird. + Entscheidomat ist für die Nutzung von Google AdSense vorbereitet. + Sobald personalisierte oder nicht-personalisierte Anzeigen an + Besucherinnen und Besucher im Europäischen Wirtschaftsraum, im + Vereinigten Königreich oder in der Schweiz ausgeliefert werden, + setzen wir eine geeignete Einwilligungslösung ein und aktualisieren + diese Datenschutzerklärung um die dann konkret verwendeten + Einstellungen und Empfänger.

diff --git a/app/ratgeber/[slug]/page.tsx b/app/ratgeber/[slug]/page.tsx new file mode 100644 index 0000000..eca9fa5 --- /dev/null +++ b/app/ratgeber/[slug]/page.tsx @@ -0,0 +1,100 @@ +import type { Metadata } from "next"; +import Link from "next/link"; +import { notFound } from "next/navigation"; +import Nav from "@/components/nav"; +import Footer from "@/components/footer"; +import { getGuide, GUIDES } from "@/lib/guides"; + +const SITE_URL = "https://entscheidomat.com"; + +export function generateStaticParams() { + return GUIDES.map(({ slug }) => ({ slug })); +} + +export async function generateMetadata({ params }: PageProps<"/ratgeber/[slug]">): Promise { + const { slug } = await params; + const guide = getGuide(slug); + if (!guide) return {}; + + return { + title: guide.title, + description: guide.description, + alternates: { canonical: `/ratgeber/${guide.slug}` }, + openGraph: { + type: "article", + locale: "de_DE", + url: `${SITE_URL}/ratgeber/${guide.slug}`, + title: guide.title, + description: guide.description, + publishedTime: "2026-08-03T08:00:00+02:00", + modifiedTime: "2026-08-03T08:00:00+02:00", + }, + }; +} + +export default async function GuidePage({ params }: PageProps<"/ratgeber/[slug]">) { + const { slug } = await params; + const guide = getGuide(slug); + if (!guide) notFound(); + + const url = `${SITE_URL}/ratgeber/${guide.slug}`; + const jsonLd = { + "@context": "https://schema.org", + "@type": "Article", + headline: guide.title, + description: guide.description, + datePublished: "2026-08-03", + dateModified: "2026-08-03", + inLanguage: "de-DE", + mainEntityOfPage: url, + author: { "@type": "Person", name: "Timo Knuth" }, + publisher: { "@type": "Organization", name: "Entscheidomat", url: SITE_URL }, + }; + + return ( + <> +