Behoerde oder Organisation und Funktion oder Dienststelle sind optional,
in beiden Sprachen mit Hinweis am Feld. Pflicht bleiben Name, dienstliche
E-Mail und die Einwilligung.
Dabei aufgefallen, das Formular traegt novalidate, damit die
Browsermeldungen die eigene Pruefung nicht ueberlagern. Die Pflichtfelder
wurden dadurch bisher gar nicht erzwungen, ein leerer Name waere
durchgegangen. Die Pruefung liegt jetzt im Skript, mit Meldung und Fokus
auf dem betroffenen Feld. Der Name steht ausserdem mit in der
Anfrage-Mail, da die Organisation leer bleiben kann.
Der eigene Abschnitt mit Ueberschrift und Einleitung entfaellt. Die drei
Anwendungsfaelle stehen jetzt als reine Infokarten unter der Karte im
Bereich Live-Lagebilder, ohne "Mehr erfahren" und ohne Verlinkung.
Die sechs Unterseiten unter /loesungen/ und /en/solutions/ sind
geloescht, ebenso der Menuepunkt Loesungen in beiden Sprachen und die
Eintraege in Sitemap und llms.txt.
Nebenbei behoben, die drei Lagen-Seiten verwiesen im Menue auf den
Anker /#products, den es auf der Startseite nie gab. Sie zeigen jetzt
auf /#demos, wo die Anwendungsfaelle stehen.
Die Seiten /testzugang/ und /en/trial-access/ sind geloescht. Alle
Einstiege oeffnen jetzt das Anfrage-Popup, also der Knopf oben rechts,
der Knopf im Kontakt-Abschnitt, die FAQ-Antwort zum Zugang und der
Footer-Link. Die Hinweiszeile auf die Unterseite ist aus dem Popup raus.
Der obere Knopf der sechs Loesungsseiten zeigt auf den Kontakt-Abschnitt
der jeweiligen Startseite. Sitemap, llms.txt und die FAQ-Daten fuer
Suchmaschinen enthalten keine Verweise mehr auf die geloeschten Adressen.
Tote Zweige in trial-form.js entfernt, da Thema, Startwunsch und
Nutzerzahl als Felder entfallen sind.
Der Knopf oben rechts und der Eintrag im mobilen Menue oeffnen das
Anfrage-Popup, statt auf die Seite zu wechseln. Das href auf
/testzugang/ bleibt als Rueckfallebene stehen, also fuer Oeffnen in
neuem Tab, fuer Suchmaschinen und falls JavaScript fehlt.
Im Kontakt-Abschnitt steht nur noch "Testzugang anfragen" und oeffnet
das Popup. Darin liegt jetzt das Testzugang-Formular ohne die Frage nach
dem Thema, also Name, Behoerde, Funktion, Telefon, dienstliche E-Mail und
Nutzerzahl. Die Freemail-Sperre und die Erkennung von Behoerdendomains
greifen dort genauso wie auf der Seite.
Wer zuerst eine Frage hat, findet unter dem Knopf einen direkten
Mail-Hinweis. Das alte submitContact in app.js entfaellt, beide Formulare
laufen ueber js/trial-form.js. Die gemeinsamen Formular-Styles liegen
jetzt in css/style.css statt doppelt in den Seiten.
Neue Seite /testzugang/ und Spiegel /en/trial-access/ mit Anfrageformular
fuer einen einwoechigen Testzugang. Pflicht ist eine dienstliche
E-Mail-Adresse, Freemail- und Wegwerf-Anbieter werden abgewiesen,
Behoerden- und Organisationsdomains werden erkannt und in der
Anfrage-Mail gekennzeichnet.
Spamschutz ohne Drittanbieter, also Honeypot-Feld und Zeitfalle statt
Captcha, damit kein externer Dienst eingebunden werden muss. Der Versand
laeuft ueber den bestehenden Endpunkt /api/contact, die Zusatzfelder
stehen strukturiert im Nachrichtentext.
Einstiege auf der Startseite DE+EN, also Knopf in der Navigation, zwei
Knoepfe im Kontakt-Abschnitt, Verlinkung der FAQ-Antwort zum Zugang und
ein Footer-Link. Der Hero-Knopf der sechs Loesungsseiten zeigt jetzt
ebenfalls auf die Testzugang-Seite. Sitemap und llms.txt ergaenzt.
Keine sichtbaren Seiteninhalte geaendert, nur maschinenlesbare Signale:
- Startseiten DE+EN: Title auf "OSINT-Monitoring Software aus Deutschland"
geschaerft; Organization-Schema um knowsAbout/keywords/areaServed und
SoftwareApplication um keywords erweitert (Entitaetssignale fuer KI-Suche)
- Rechtsseiten (Impressum/Datenschutz DE+EN): robots-Meta konsistent auf
noindex gesetzt (vorher nur googlebot, allgemein index) - passend zur
dokumentierten Absicht "von Suchmaschinen ausschliessen"
- llms.txt: 6 zitierfaehige Q&A inkl. Abgrenzung zu IT-Monitoring (PRTG/Nagios)
und 4 Glossar-Entitaeten (Social-Media-Monitoring, Krisenmonitoring, SOCMINT,
Situational Awareness)
- sitemap.xml: lastmod der Startseiten aktualisiert; noindex-Rechtsseiten
aus der Sitemap entfernt
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Wurzel: cookie-consent.css enthielt aus einer Demo-Page geerbtes
"footer { margin-top: 4rem; background: ... }" mit nacktem
Element-Selector. Das schlug auf den echten Site-Footer durch und
erzeugte einen ~64px Margin oben am Footer, durch den der helle
Body-Background (#F5F7FA) sichtbar wurde. Unter dunklen Sections
fiel das nicht auf, unter der neuen FAQ-Section wurde es sichtbar.
- cookie-consent.css: nackter 'footer { ... }'-Block (margin-top, background, padding, text-align) entfernt. footer nav / nav a Reststyles belassen, da sie unseren echten Footer (kein <nav> drin) nicht treffen.
- index.html / en/index.html: defensives '.footer { margin-top: 0; }' im inline-style-Block ergaenzt fuer den Fall, dass die Demo-Regel zurueckkommt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Style-Block aus body in head verschoben (vermeidet Kaskaden-Quirks)
- .section-Klasse aus dem FAQ-section-Element entfernt (kein Konflikt mehr mit globalem .section { padding 88px 0 })
- Defensive Resets: margin:0, display:block auf .faq-section; explizite margin-resets auf h2, intro, details, faq-answer; details:last-of-type margin-bottom:0
- DSGVO-Antwort: 'Standort Langenfeld, NRW' raus, weil das den Eindruck erweckte, dort stuenden die Server (es ist nur der Firmensitz). Aussage bleibt: 'auf Servern in Deutschland'.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Quellen: 'weltweit' statt 'mehrsprachig in X'; Update-Takt aus FAQ rausgenommen (steht weiterhin im llms.txt-TLDR und in den Lagen-Schemas)
- Faktenpruefung: ohne Fachbegriffe IFCN/EUvsDisinfo, dafuer in Klartext (Uebereinstimmungen/Widersprueche, transparente Bewertung, verlinkte Originalquellen)
- DSGVO: Aussage zu personenbezogenen Profilen entfernt (war redundant)
- Zugang: Satz zur Preiskalkulation entfernt
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- index.html (DE+EN): FAQPage mit 7 Q&A, Service-Schema, founder-Person-Stubs mit @id-Referenzen, speakable-Selektoren, sichtbares FAQ-Akkordeon vor Footer, Nav-Eintrag Fragen/FAQ
- lagen/* (DE+EN): Article auf NewsArticle erweitert (deepfakes bleibt Article), plus temporalCoverage, keywords, about, speakable, @id-Refs auf Organization; Dataset-Schema neu mit DataDownload auf current.json
- llms.txt: Umbau auf antwortorientiertes Q&A-Format mit 7 Fragen plus Glossar (OSINT, Lagebild, Faktencheck, IFCN, EUvsDisinfo, Klassifikation)
- sitemap.xml: lastmod auf 2026-05-17
Ziel: bessere Auffindbarkeit und Zitierfaehigkeit in KI-Suche (ChatGPT, Perplexity, Claude, Gemini). 51 Prozent der B2B-Kaeufer recherchieren laut drweb.de-Artikel inzwischen primaer in KI-Chatbots.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Logo-Header: PNG (31.7 KB) -> SVG (6.3 KB) auf 12 Seiten, mit width/height fuer CLS
- loading=lazy auf 25 unter-Fold-Bilder (Feature-/Problem-/Trust-Icons + handshake)
Logo bleibt eager (above-the-fold)
- preconnect zu unpkg.com (CDN fuer Leaflet) im Head von 8 Seiten
Reduziert TLS-Handshake-Verzoegerung beim ersten Leaflet-Asset
Phase 3 - Englische Lagebild-Seiten:
- /en/situations/iran-conflict/, /en/situations/cyber-attacks/,
/en/situations/deepfakes/ erstellt (Mirror der DE-Lagen mit
englischer UI)
- lagebild.js: curLang() liest jetzt direkt <html lang>; neuer
dataBase()-Helper, damit EN-Seiten die JSON-Daten aus dem
DE-Pfad nachladen koennen (window.LAGEBILD_DATA_BASE pro Seite)
- 4 zuvor hardcodierte DE-Strings (emptyDevelopments, emptySummary,
Quelle-Tooltip, Schliessen-Aria) ueber t() und das vorhandene
lang.de/lang.en-Dictionary uebersetzt
- DE-Lagen-Seiten: hreflang-Tags wieder aktiv, Toggle zeigt nun
korrekt auf das EN-Pendant statt /en/
- en/index.html Karussell-Buttons zeigen auf EN-Lagen
- Sitemap mit hreflang-Alternativen fuer alle Lagen ergaenzt
Phase 4 - Kontaktformular zweisprachig (Frontend):
- js/app.js submitContact() liest <html lang>, sendet lang im POST
und zeigt Sende-/Fehler-Texte in der jeweiligen Sprache
- Backend (contact-form.py) wird separat ausgerollt, ist aber
abwaertskompatibel: bei fehlendem lang-Param defaultet es auf de
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Neuer .lang-switcher Komponente in css/lang-switcher.css, Variante
fuer dunkle Lagebild-Seiten enthalten
- Sprachumschalter im Header und Mobile-Menue aller DE-Seiten
(index, impressum, datenschutz, lagen/*)
- Englische Seiten unter /en/index.html, /en/legal-notice.html und
/en/privacy.html mit kompletter Uebersetzung; rechtliche Texte mit
Hinweis "German version shall prevail"
- hreflang-Tags (de/en/x-default) auf Hauptseite und rechtlichen
Seiten; Lagen-Seiten ohne hreflang bis EN-Versionen existieren
- og:locale + og:locale:alternate gesetzt, Schema.org bleibt
- Sitemap mit xhtml:link Alternates fuer beide Sprachen ergaenzt
- DE-Lagen-Toggle zeigt vorerst auf /en/ (EN-Lagen folgen Phase 3)
- Cookie-Banner liest <html lang> bereits selbststaendig, daher
englisch auf EN-Seiten ohne weitere Aenderung
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>