Files
BSN-Chatsystem/verify_article.sh
T
Hermes Agent b3b6b702d1 chore: vollständiger Workspace-Snapshot 03.07.2026
- publish_gatekeeper.py (neues Gatekeeper-System)
- 4 Premium-Artikel: Veggie Match, Berlin 1960, Wild Tiled West, Scream Park
- Alle kumulierten Artikel, Scripts, Medien und Caches
2026-07-03 11:35:39 +02:00

27 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
FILE="${1:-}"
ERRORS=0
WARNINGS=0
ok() { echo "$1"; }
fail() { echo "$1"; ERRORS=$((ERRORS+1)); }
warn() { echo "⚠️ $1"; WARNINGS=$((WARNINGS+1)); }
if [ -z "$FILE" ] || [ ! -f "$FILE" ]; then echo "Usage: $0 <file>"; exit 1; fi
echo "=== $FILE ==="
READMORE_COUNT=$(grep -c 'system-readmore' "$FILE" || true)
if [ "$READMORE_COUNT" = "1" ]; then ok "Read-More: 1"
elif [ "$READMORE_COUNT" = "0" ]; then fail "Read-More: FEHLT"
else fail "Read-More: $READMORE_COUNT (muss 1)"; fi
if grep -q '<div class="meta">' "$FILE"; then fail "div.meta statt p.meta"; else ok "p.meta korrekt"; fi
BODY=$(sed -n '/<body>/,/<\/body>/p' "$FILE")
if echo "$BODY" | grep -qP '[\x{1F300}-\x{1F9FF}\x{2600}-\x{27BF}\x{1F600}-\x{1F64F}]'; then fail "Emojis im Body"; else ok "Keine Emojis"; fi
if echo "$BODY" | grep -q '<h2>Quellen</h2>'; then fail "h2>Quellen statt span-strong"; else ok "Quellen-Überschrift korrekt"; fi
LINKS_TOTAL=$(echo "$BODY" | grep -o '<a ' | wc -l)
LINKS_BLANK=$(echo "$BODY" | grep -o 'target="_blank"' | wc -l)
if [ "$LINKS_TOTAL" -gt 0 ] && [ "$LINKS_TOTAL" != "$LINKS_BLANK" ]; then fail "$((LINKS_TOTAL - LINKS_BLANK)) von $LINKS_TOTAL Links ohne target=_blank"
else ok "Alle $LINKS_TOTAL Links mit target=_blank"; fi
if grep -q '<meta name="description" content="[^"]*[a-zA-Z]' "$FILE"; then ok "Meta-Description"; else fail "Meta-Description fehlt"; fi
if grep -q '<meta name="keywords" content="[^"]*[a-zA-Z]' "$FILE"; then ok "Meta-Keywords"; else fail "Meta-Keywords fehlen"; fi
echo ""
[ $ERRORS -eq 0 ] && echo "✅ ALLE CHECKS BESTANDEN" || echo "$ERRORS Fehler"