Zum Inhalt springen
thconsulting
Menü öffnen

Verein · Pferdesport · 100 Jahre Tradition · 2026

Aus einer Vereinsseite wurde ein Hebel.

Begonnen als WordPress-Migration für einen Reitverein mit 450 Mitgliedern, herausgekommen ist eine moderne Sponsoring-Akquise-Plattform: Pitch-Page mit acht Stationen, eigene Profil-Seiten pro Premium-Partner als Co-Branding-Hub, Insta- und Story-Auto-Match, KI-Discoverability als 2026er-Hebel. Ein Pattern, das wir bei weiteren Sport- und Kulturvereinen wiederverwenden können.

Problem

Die alte Site war eine klassische WordPress-Page, gewachsen über Jahre mit Plugin-Halden. Belegungsplan stand auf einem PDF, Aushang existierte nur an der Stalltür, Sponsoren waren ein Text-Marquee ohne Logos, Insta-Pflege parallel zur Site doppelt aufwändig. Beim 100-jährigen Jubiläum 2024 war klar: die Site soll dem Verein gerecht werden, nicht ihn ausbremsen.

Lösung

Re-Build als statisch generierte Astro-Site mit eigenständigem Vereins-Brand (Petrol-Olive aus dem Logo, Sandgelb als Action-Farbe, Geist Variable). Acht Kernfeatures unter einem Dach:

  • Belegungsplan als Wochen-Matrix mit 4 Ressourcen × 7 Tagen, Termin-Detail-Drawer von rechts, statischer iCal-Feed unter /kalender.ics für Outlook/Google-Calendar-Abo.
  • Editorial-Stories als Astro Content Collection mit Markdown-Pflege, Schema.org BlogPosting, automatischem Sponsor-Mention-Block unter jeder Story (Logos der erwähnten Förderer ohne Penetranz).
  • Sponsor-Pipeline mit 3 Tiers (Premium / Förderer / Partner), 27 Logos, davon 8 PDFs zur Build-Zeit konvertiert via pdfjs-dist + napi-rs/canvas, einheitlich auf 240px Höhe normalisiert via Sharp.
  • Insta-Auto-Sync via Graph-API alle 4 Stunden mit Long-lived-Token-Refresh, Bilder lokal gespiegelt nach /public/instagram/, kein Live-Embed (DSGVO-sauber, kein Tracking beim Aufruf).
  • Aushang-Modal-Drawer direkt unter dem Hero, HTML5 native <dialog> mit Slide-In von rechts, ESC + Click-Outside-Close, ohne JS-Library.
  • Brand-Asset-Self-Service: Rechtsklick auf das Logo öffnet ein Download-Menü. Kooperationspartner, Sponsoren, Presse oder Medienportale können das Logo direkt aus der Site holen, als SVG kopieren, einzelne Varianten als Datei laden oder „Alle Brand-Assets" als Bundle. Kein Mail-Pingpong mehr mit dem Vorstand.
  • Schema.org-Komplettabdeckung mit SportsClub + LocalBusiness, FAQPage, Service×4 für Sport-Bereiche, SportsActivityLocation, OfferCatalog (Sponsoring), BlogPosting pro Story, ContactPage. Plus llms.txt für GEO.
  • CI/CD via GitHub Actions: zwei Workflows (Insta-Sync 4-h-Cron + SFTP-Deploy bei Push), workflow_run-Trigger nach Insta-Sync, IndexNow-Ping nach Deploy.
Astro 6 · Tailwind 4 · Content Collections · Geist Variable · Insta Graph API · pdfjs-dist · napi-rs/canvas · Sharp · Schema.org · GitHub Actions SFTP · IndexNow
Logo & Farbentwicklung

Das Vereinslogo existierte als 4-farbiges SVG aus dem WordPress-Bestand: Reiter-Wappen mit Schriftzug „Reiterverein St. Georg Salzkotten und Umgebung e.V." in einer ringförmigen Komposition. Statt es zu ersetzen, haben wir es zur Quelle der Brand-Tokens gemacht.

  • Token-Extraktion direkt aus dem Logo: Petrol-Olive #495D5C (Reiter), Sandgelb #C9A050 (3. Akzent für Action/Achievement, ergänzt fürs CSS), Surface-Grau #DDDCDC (Ringfläche), Ink #1D1D1B (Schriftzug). Vier Tokens, sauber abgeleitet, keine Beliebigkeiten.
  • Brand-Regel als CSS-Konvention: auf weißem Hintergrund ist Petrol der Akzent (gut lesbar, ruhig); auf grauem oder dunklem Hintergrund springt Sandgelb ein (warm, hervorgehoben). Eine Zeile Doku, die jede Komponente konsistent hält.
  • WCAG-AA per Token-Tuning: Sandgelb-Button mit weißer Schrift schaffte nur 2,4:1 (Fail). Schrift auf dunkles Ink umgestellt → 6,9:1. Sub-Token highlight-deep und ink-muted nachgedunkelt, damit auf jedem Untergrund Kontrast 4,5+ rauskommt. Im Lighthouse-Audit blieb am Ende ein einziger Punkt offen, alles andere AA.
  • Vier Logo-Varianten aus dem einen Master-SVG generiert: logo.svg (Standard), logo-footer.svg (Schriftzug auf Weiß invertiert für dunklen Footer), wappen.svg (nur Wappen), favicon.svg (Pferd-Detail isoliert für 32×32). Plus PNG-Set automatisch generiert (32/48/96/192/512 + apple-touch + .ico) als Build-Hook.
  • Brand-Asset-Self-Service direkt am Logo: Rechtsklick öffnet ein Download-Menü. Kooperationspartner, Sponsoren und Medienportale ziehen sich das Logo selbst. SVG kopieren, einzelne Varianten herunterladen, „Alle Brand-Assets" als Bundle. Spart das klassische Hin und Her per Mail beim Sponsor-Onboarding.
Brand-Regel (verbindlich)
Section-Background     →  Akzentfarbe        Beispiel
─────────────────         ───────────────     ─────────────────
weiß (#FFFFFF)            Petrol  #495D5C    Hauptseiten, Hero
grau (#DDDCDC)            Sandgelb #C9A050    Cards, Hervorhebungen
dunkel (Footer/Hero-Bg)   Sandgelb #C9A050    Akzent-Highlight
Sponsorenkonzept

27 Sponsoren, drei Tiers, vier Sichtbarkeitskanäle. Statt einer flachen Sponsor-Wand am Seitenende (klassisch, ignoriert) wird jeder Sponsor mehrfach im Vereinskontext sichtbar, und Sponsoren-Onboarding läuft über eine simple TypeScript-Datei.

  • Drei Tiers mit klaren Rollen: Premium (3, eigene Sektion mit großen Logos), Förderer (13, mittlere Wand), Partner (11, kompakte Wand). Tier wird als Property im Sponsor-Eintrag gepflegt, der Rest leitet sich automatisch ab.
  • Vier Sichtbarkeitskanäle pro Sponsor: Marquee auf der Startseite (Premium-First), eigene 3-Tier-Wand auf /sponsoren, kontextuelle Mention unter passenden Stories („Mit Unterstützung von …"), und Indirekt-Verlinkung im Footer. Ein Sponsor wird beim normalen Site-Besuch 3-4× sichtbar.
  • Story-Mention statt Penetranz: jede Story trägt im Frontmatter eine mentionedSponsors[]-Liste. Beispiel: „Neuer Boden in den Hallen" mentions RWM (Plane), Behn Projekte (Bau), Hüser, Krinke. Eine SponsorMentions-Component zeigt diese Logos als dezente Reihe unter der Story. Sponsor wird im Erfolgs-Kontext sichtbar, nicht als Werbe-Block.
  • Logo-Pipeline mit zwei Phasen: für PNG/JPG/TIF läuft Sharp (resize auf 240px Höhe, Padding auf weiß, WebP-Export, Quality 88). Für PDF-Logos (8 von 27, klassisch von Druckereien) erst pdfjs-dist + @napi-rs/canvas → PNG (300 DPI), dann Sharp-Pass. Pure JavaScript, läuft auf Windows ohne ImageMagick/Ghostscript.
  • Onboarding in 60 Sekunden: neuer Sponsor → Logo (PNG/JPG/PDF) in Source-Ordner ablegen, Eintrag mit Slug + Tier + Filename in scripts/process-sponsors.mjs, npm run sponsors, commit. Keine manuelle Bildbearbeitung, kein Photoshop, alles reproduzierbar.
  • Schema.org OfferCatalog für die Sponsoring-Pakete (Partner / Förderer / Premium): drei Offer-Einträge mit priceSpecification: "auf Anfrage", machen die Konditionen für LLMs & Suchmaschinen strukturiert auffindbar, ohne konkrete Preisvorgabe (entscheidet der Vorstand pro Anfrage).
  • Placeholder-Modus für fehlende Logos: wenn ein Sponsor zugesagt hat aber das Logo noch nicht da ist, rendert die Wand einen Schriftzug-Block (Display-Font) im Brand-Style, keine kaputten Bilder, kein leerer Slot. Beim nächsten Logo-Lieferung einfach Datei + ein Property-Wechsel im Script.
Sponsor-Sichtbarkeitsmatrix
TIER          MARQUEE  /SPONSOREN  STORY-MENTIONS  FOOTER
─────         ───────  ──────────  ──────────────  ──────
Premium       2-spaltig groß  ✓ eigene Wand   bei passend     verlinkt
Förderer      4-spaltig       ✓ eigene Wand   bei passend     verlinkt
Partner       5-spaltig klein ✓ eigene Wand   bei passend     verlinkt

Aus „Vereinsseite" wurde „Sponsoring-Plattform".

Während des Projekts ist klargeworden: das wirtschaftliche Problem des Vereins ist nicht die Website-Optik, sondern die Sponsoringgewinnung. Sponsoren kommen, weil sie Logos im Verein hängen wollen, und gehen, weil sie nicht messen können, was sie dafür bekommen. Daraus ist eine drei-stufige Plattform entstanden:

01

Klassische Sponsoring-Mappe

Pakete-Page mit drei Tiers (Partner / Förderer / Premium), Sponsor-Wand mit allen Logos in Tier-Hierarchie, Marquee auf der Startseite, Schema.org OfferCatalog für SEO. Das Hygiene-Niveau, das jeder Verein erwartet.

02

Moderner Vertriebsfunnel

Eine eigene Pitch-Page /sponsoring mit Editorial-Hero, Sticky-Sub-Nav (acht Stationen mit Scroll-Spy + Active-State), Brand-Statement (Wer wir sind / Was wir liefern), Reach-Stats, 4 Value-Driver-Cards, CSR-Cross-Selling-Sektion, KI-Hebel mit Kontinuitäts-Argument, Beispiel-Anfragen-Cards. Die Pitch-Page ist alleine schon ein Verkaufsargument.

03

Co-Branding-Hub pro Premium-Sponsor

Eigene Profil-Seite unter /sponsoren/{slug}/ mit Editorial-Magazine-Hero, Engagement-Cards in Reitsport-Sprache, Über-Sponsor + Pullquote, automatische Insta-Match-Sektion (scannt Vereins-Posts nach Sponsor-Keywords), Story-Anker mit Auto-Match (Stories, die den Sponsor erwähnen), Schema.org Organization mit subjectOf-Stories, eigene llms.txt pro Sponsor für KI-Discoverability. Sponsor bekommt eine URL, die er in eigenen Kampagnen verwenden kann.

Setup-Aufwand drei Tage. Wartung null Minuten pro Woche, weil alles aus den vorhandenen Datenquellen (Insta-Sync, Story-Collection, Sponsor-Liste) automatisch zusammenfließt. Wert für den Sponsor pro Saison: vielfaches eines „Logo am Hindernis"-Sponsorings.

Datenfluss
QUELLE                  BUILD / SITE              EXTERN
(Vereins-Pflege)        (Astro · 1&1 SFTP)       (Subscriber)
──────────────          ───────────────────       ──────────────

Insta Graph     ───►    Sync-Job (4h cron)
(Vorstand postet)        │
                         └──► Posts-Cache (12)
                                ▼
Markdown        ───►    Content Collection
(Stories)                 │
                          └──► /aktuelles/stories/[slug]
                                ▼
TS-Datei        ───►    Belegungs-Matrix
(Termine)                 │
                          ├──► /belegungsplan (UI)
                          └──► /kalender.ics    ───►  Outlook/Google
                                                       (Cal-Abo)
                                ▼
Logo-Files      ───►    Sharp + pdfjs
(8 PDFs +                 (Tier-Mapping)
 19 PNGs/JPGs)            │
                          └──► /sponsoren-web/*.webp
                                ▼
                              Static Build
                                ▼
                              SFTP Deploy
                                ▼
                              IndexNow Ping       ───►  Bing/Yandex
        
Outcome
  • 22 Pages, Build < 6 Sekunden, ~100 Bilder als WebP optimiert, LCP-Preload für Hero
  • Pitch-Page mit acht Stationen, Sticky-Sub-Nav, KI-Hebel-Argumentation und Kontinuitäts-Wording, das Mehrjahresverträge zur logischen Folge macht
  • Eigene Profil-Seite pro Premium-Sponsor mit Insta- und Story-Auto-Match. Sponsor bekommt URL für eigene Kampagnen, Verein muss nichts pflegen
  • Insta-Posts und Story-Mentions aktualisieren Sponsor-Profile automatisch, alle 4 Stunden über CI/CD
  • 27 Sponsor-Logos in 3 Tiers, davon 8 PDFs zur Build-Zeit konvertiert via pure JS (pdfjs-dist + napi-rs/canvas), kein ImageMagick/Ghostscript nötig
  • KI-Discoverability-Layer über strukturierte Daten und per-Sponsor-llms.txt, moderne KI-Suchen finden Profile als Quelle
  • DSGVO-sauber: keine Cookies, keine Tracking-Pixel, kein Consent-Banner. Insta-Embed durch lokale Spiegelung umgangen, Schema.org statt Live-Embed

Wiederverwendbar für Sport- und Kulturvereine.

Die Architektur, die hier entstanden ist, ist nicht reitvereins-spezifisch. Sie funktioniert genauso für Tennis-Clubs, Schützenvereine, Schießsportverbände, Karneval-Gesellschaften, Heimat- und Kulturvereine, überall, wo lokal gesponsort wird und Sponsoren ein nachvollziehbares Gegenwert-Konzept brauchen.

Setup pro Verein

2–3 Tage Architektur, Sponsor-Profile pro Premium, Pitch-Page-Anpassung, Insta-Sync-Wiring.

Wartung pro Woche

Null Minuten. Insta-Sync läuft als Cron, Stories werden vom Vorstand selbst per Markdown gepflegt.

Kompetenz-Anker

Astro Content Collections, KI-Discoverability (GEO), Sponsor-Funnel-Architektur, statisches Hosting + CI/CD via GitHub Actions.

Wert für den Verein

Verlängerungs-Quote von Sponsoren steigt deutlich (geschätzt von branchenüblich 60% auf 90%), Sponsoring-Akquise wird messbar.

Wenn ihr einen Verein habt, der diesen Hebel sucht, sprecht uns an

Ein ähnliches Projekt bei dir?

Erzähl mir, was bei euch ansteht. Ich sage dir, was davon ich schon gebaut habe und was der erste Schritt wäre.

Erstgespräch anfragen