144 lines
6.0 KiB
TypeScript
144 lines
6.0 KiB
TypeScript
import type { Metadata } from "next";
|
||
import Link from "next/link";
|
||
import ListPicker from "@/components/tools/list-picker";
|
||
import SubpageLayout from "@/components/subpage-layout";
|
||
|
||
const SITE_URL = "https://entscheidomat.com";
|
||
const PAGE_URL = `${SITE_URL}/namen-auslosen`;
|
||
const PAGE_TITLE = "Zufallsgenerator Namen – Namen online auslosen";
|
||
const PAGE_DESCRIPTION =
|
||
"Mit dem Zufallsgenerator für Namen ziehst du Namen oder Optionen zufällig aus deiner Liste – für Gewinner, Teams und Aufgaben. Kostenlos und ohne Anmeldung.";
|
||
const UPDATED = "23. Juli 2026";
|
||
|
||
export const metadata: Metadata = {
|
||
title: PAGE_TITLE,
|
||
description: PAGE_DESCRIPTION,
|
||
alternates: { canonical: "/namen-auslosen" },
|
||
openGraph: { type: "website", locale: "de_DE", siteName: "Entscheidomat", title: PAGE_TITLE, description: PAGE_DESCRIPTION, url: PAGE_URL, images: ["/opengraph-image"] },
|
||
twitter: { card: "summary_large_image", title: PAGE_TITLE, description: PAGE_DESCRIPTION, images: ["/twitter-image"] },
|
||
};
|
||
|
||
const FAQS = [
|
||
{
|
||
q: "Wie viele Namen kann ich eintragen?",
|
||
a: "Beliebig viele – mindestens 2 sind nötig. Ein Name bzw. Eintrag pro Zeile in das Textfeld eintragen.",
|
||
},
|
||
{
|
||
q: "Was bedeutet „Gezogene Einträge entfernen“?",
|
||
a: "Ist die Option aktiviert, wird ein gezogener Eintrag automatisch aus der Liste entfernt (Ziehung ohne Zurücklegen) – praktisch für Teameinteilungen oder mehrere Gewinner nacheinander.",
|
||
},
|
||
{
|
||
q: "Werden meine Namen gespeichert oder an einen Server übertragen?",
|
||
a: "Deine Liste wird ausschließlich lokal im localStorage deines Browsers gespeichert, nicht an uns übertragen.",
|
||
},
|
||
{
|
||
q: "Kann ich Duplikate in der Liste verwenden?",
|
||
a: "Technisch ja – ein doppelt eingetragener Name kann dadurch häufiger berücksichtigt werden. Wenn alle Namen gleich behandelt werden sollen, trage jeden Namen nur einmal ein.",
|
||
},
|
||
{
|
||
q: "Eignet sich das Tool für offizielle Gewinnspiele?",
|
||
a: "Für lockere, private Ziehungen ist es gut geeignet. Bei rechtlich bindenden Gewinnspielen solltest du eigene Teilnahmebedingungen und mögliche Dokumentationspflichten separat prüfen.",
|
||
},
|
||
];
|
||
|
||
const jsonLd = {
|
||
"@context": "https://schema.org",
|
||
"@graph": [
|
||
{
|
||
"@type": "BreadcrumbList",
|
||
itemListElement: [
|
||
{ "@type": "ListItem", position: 1, name: "Entscheidomat", item: SITE_URL },
|
||
{ "@type": "ListItem", position: 2, name: "Namen-Auslosung", item: PAGE_URL },
|
||
],
|
||
},
|
||
{
|
||
"@type": "WebApplication",
|
||
name: "Namen-Auslosung",
|
||
url: PAGE_URL,
|
||
description: PAGE_DESCRIPTION,
|
||
applicationCategory: "UtilitiesApplication",
|
||
operatingSystem: "Any (Web-Browser)",
|
||
isPartOf: { "@id": `${SITE_URL}/#website` },
|
||
offers: { "@type": "Offer", price: "0", priceCurrency: "EUR" },
|
||
},
|
||
{
|
||
"@type": "FAQPage",
|
||
mainEntity: FAQS.map((f) => ({
|
||
"@type": "Question",
|
||
name: f.q,
|
||
acceptedAnswer: { "@type": "Answer", text: f.a },
|
||
})),
|
||
},
|
||
],
|
||
};
|
||
|
||
const STEPS = [
|
||
"Trage mindestens 2 Namen oder Einträge ein, einen pro Zeile.",
|
||
"Aktiviere optional „Gezogene Einträge entfernen“, um ohne Zurücklegen zu ziehen (z. B. für Teameinteilung).",
|
||
"Tippe auf „Zufällig ziehen“.",
|
||
"Der gezogene Name erscheint groß im Ergebnisfeld, inklusive Konfetti.",
|
||
];
|
||
|
||
const EXAMPLES = [
|
||
"Gewinner unter Teilnehmenden auslosen",
|
||
"Reihenfolge für eine Präsentation festlegen",
|
||
"Teams zufällig zusammenstellen (mehrfach ziehen „ohne Zurücklegen“)",
|
||
];
|
||
|
||
const VORTEILE = (
|
||
<p>
|
||
Beliebig viele Einträge möglich, flexibel für Namen oder andere Texte. Die Option
|
||
„ohne Zurücklegen“ macht wiederholtes Ziehen für Gruppenaufteilungen praktisch. Die
|
||
Ziehung nutzt einen browserbasierten Zufallswert – eine Gewichtung einzelner Einträge ist nicht möglich.
|
||
</p>
|
||
);
|
||
|
||
const ADDITIONAL_CONTENT = (
|
||
<article className="space-y-4 text-base leading-relaxed text-ink-soft">
|
||
<h2 className="font-display text-2xl sm:text-3xl font-semibold text-ink">
|
||
Namen zufällig ziehen – für Gewinner, Teams und Reihenfolgen
|
||
</h2>
|
||
<p>
|
||
Der Zufallsgenerator für Namen zieht einen Eintrag aus deiner eigenen Liste. Damit
|
||
kannst du einen Gewinner bestimmen, eine Reihenfolge für Präsentationen festlegen oder
|
||
Personen fair nacheinander auswählen. Für mehrere Ziehungen aktiviere „Gezogene
|
||
Einträge entfernen“: Dann wird jeder Name nur einmal gezogen.
|
||
</p>
|
||
<h2 className="font-display text-2xl sm:text-3xl font-semibold text-ink">
|
||
So bleibt eine Namen-Auslosung fair
|
||
</h2>
|
||
<p>
|
||
Trage jeden Namen genau einmal ein, wenn alle die gleiche Chance erhalten sollen.
|
||
Doppelte Einträge erhöhen die Chance dieses Namens. Für eine Entscheidung zwischen
|
||
festen Optionen ist das <Link href="/gluecksrad" className="text-[#c97d60] font-medium hover:underline underline-offset-2">Glücksrad</Link> eine gute Alternative; für eine zufällige Zahl nutze den <Link href="/zufallszahl-generator" className="text-[#c97d60] font-medium hover:underline underline-offset-2">Zufallszahl-Generator</Link>.
|
||
</p>
|
||
</article>
|
||
);
|
||
|
||
export default function NamenAuslosenPage() {
|
||
return (
|
||
<>
|
||
<script
|
||
type="application/ld+json"
|
||
dangerouslySetInnerHTML={{
|
||
__html: JSON.stringify(jsonLd).replace(/</g, "\\u003c"),
|
||
}}
|
||
/>
|
||
<SubpageLayout
|
||
toolSlug="namen-auslosen"
|
||
toolName="Namen-Auslosung"
|
||
h1Title="Zufallsgenerator für Namen – Namen zufällig auslosen"
|
||
introText="Der Zufallsgenerator für Namen zieht einen Eintrag aus deiner eigenen Liste. Trage Namen oder Optionen ein, starte die Ziehung und erhalte sofort ein zufälliges Ergebnis – ideal für Gewinner, Teameinteilungen oder Aufgabenverteilung."
|
||
steps={STEPS}
|
||
examples={EXAMPLES}
|
||
vorteileText={VORTEILE}
|
||
additionalContent={ADDITIONAL_CONTENT}
|
||
faqs={FAQS}
|
||
updatedDate={UPDATED}
|
||
>
|
||
<ListPicker />
|
||
</SubpageLayout>
|
||
</>
|
||
);
|
||
}
|