HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/thread-self/root/tmp/SeoVisualPlaybook.jsx
import React, { useState } from 'react';
import { trackEvent } from '../../utils/tracking.js';

const visualTemplates = [
  {
    title: 'BEWERTEMICH Intent Route Matrix',
    intent: 'Heatmap-Ansicht für starke Suchintentionen mit klarer Upload-Route.',
    copy: 'Optimiert für Hero- und Ad-Varianten, die Besucher direkt von Longtail-Intent zu Upload führen.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-intent-route-matrix',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
      'Create a high-conversion landing hero for bewertemich.de focused auf SEO-Intent-Routen.\n\nScene: 16:9 hero mockup, neutral SaaS aesthetic, mobile+desktop split composition.\nLayout:\n- Top ribbon with trust chips: "A/B-Vergleich", "Invite-first", "DSGVO-freundlich".\n- Left: bold headline "Suchintention gefunden, direkt testen".\n- Left-bottom: three compact cards for intents "profilbild-bewerten", "bewerbungsfoto-bewerten", "linkedin-profilbild-optimieren".\n- Right: 3-step funnel ladder with labels "Upload", "Einladen", "Stimmen" and conversion percentages.\n- Middle strip: mini trend sparkline (mock values: 120, 145, 160, 190, 215, 233) and three tiny bar chips.\n- Bottom-right: CTA buttons "Jetzt Profilbild testen" and "Landingpage öffnen".\n- Keep it clean, data-forwarded, no photos of people, no purple gradient, no logos.'
  },
  {
    title: 'BEWERTEMICH Intent Traffic Heatmap',
    intent: 'Präzise Route-Sicht auf Intentionen, Klickraten und nächsten Schritt im Upload-Funnel.',
    copy: 'Neuester Hero-Prompt für direkte Besucherlenkung von der Suche in klare Conversion-Stufen.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-intent-traffic-heatmap',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
      'Create a conversion-optimized homepage hero for bewertemich.de in 16:9 ratio, neutral SaaS look, with explicit click-path focus from intent to upload.\nScene concept:\n- Top hero line: "Suchintention erkannt. Nächster Schritt klar."\n- Center-left: three large intent cards for "profilbild-bewerten", "bewerbungsfoto-bewerten", "linkedin-profilbild-optimieren" each with trust chips: CTR, Mobile, Stimmenpotenzial.\n- Center-right: interactive-looking funnel lane with stages: Query → Upload → Invite → Stimmen → Ergebnis.\n- Add a live-style metrics strip:\n  - Besucher heute, Invite-Klicks, Stimmen in 24h, Conversion\n  - numbers should look realistic and upward-trending.\n- Bottom: two strong CTA chips: "Jetzt Profilbild testen" and "Landingpage öffnen".\n- Right rail: 3 tiny comparison tiles with slugs and a winner highlight.\n- Visual style: clean editorial data graphics, rounded cards, thin lines, no people, no stock photos, no logos, no purple palette, warm blue + deep slate + emerald accents.\n- Make text fully readable in 16:9 and mobile crop.'
  },
  {
    title: 'BEWERTEMICH Social Proof Matrix',
    intent: 'Social-Proof-Funnel mit Zahlen, Vergleichsspalten und Mini-Charts für SEO-Kanäle.',
    copy: 'Marktnahe Darstellung von Stimmenvolumen und Conversion im 16:9-Format.',
    status: 'Local Template',
    source: 'local:bewertemich-seo-social-proof-matrix',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
`Create a premium social-proof marketing visual for a German profile feedback platform. Scene: 16:9 web hero, split-screen layout, left panel for headline and trust badges, right panel for data matrix and small mini-charts.

Composition:
- Header row with brand chip and subtitle: "Bewerten. Entscheiden. Konvertieren."
- Two large metric cards: "Neue aktive Stimmen" and "Durchschnittliche Conversion" with clear number blocks.
- Middle area with 3 comparison tiles labeled for SEO slugs: "profilbild-fuer-linkedin", "bewerbungsfoto-bewerten", "facebook-profilbild-testen".
- Include a compact row of 4 proof chips: "5 Stimmen Minimum", "A/B-Vergleich", "Invite-First", "Datenschutz".
- Right side: horizontal conversion funnel with three states: Uploads, Einladungen, Upload-Abschluss.
- Lower right: miniature sparkline and stacked bars showing upload vs related clicks over 7 days.
- Add clear CTA button: "Jetzt Profilbild testen".`,
  },
  {
    title: 'Bewertemich SEO Kampagnenvisual',
    intent: 'Kampagnenhero mit Live-Funnel und intent-basierten Landing-Tiles.',
    copy: 'Konvertiert organischen Traffic über klare Stufen in Upload + Invite + Stimme.',
    status: 'Local Template',
    source: 'local:bewertemich-seo-kampagnenvisual',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
`Create a bold social-proof marketing hero for a German image-feedback platform named bewertemich.de.
Scene: desktop web campaign graphic, 16:9 ratio, non-photo, vector+3D UI styling.
Layout:
- Top bar with small brand mark and menu labels: „So funktioniert es“, „Vorlagen“, „Erfolgsgrafiken“, „Jetzt testen“.
- Main headline block on the left with text: "Echtes Foto-Feedback in Minuten" and subcopy: "Verwandeln Sie Besucher in aktive Rater – mit klarer Upload-Funnel-Logik, Invite-First und aussagekräftigem Ranking.".
- Right side shows an isometric growth funnel in UI cards with three stages: Upload, Invite, Vote.
- Add a sticky metric strip with three cards: "Neue Uploads", "Aktive Stimmen", "SEO-Landing-Views" and large percentages.`,
  },
  {
    title: 'SEO Growth Dashboard Visual',
    intent: 'Analytische Übersichts-Karte für Besucherquellen, Klicks und Conversion-Rate.',
    copy: 'Perfekt für Fortschrittskommunikation im Bereich SEO-Growth, ideal für den Admin- oder About-Bereich.',
    status: 'Local Template',
    source: 'local:seo-growth-dashboard-visual',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
`Create a bold dark analytics dashboard hero panel for German SEO growth monitoring, featuring a conversion funnel card set and landing-page performance bars.
Scene composition includes:
- Header with title: "SEO-Wachstums-Dashboard"
- Three metric cards: Besuchs-View, Upload-Klicks, Related-Klicks with large numbers
- Horizontal bar chart showing top 6 landing-seiten by Klick-Rate
- A growth sparkline line in the bottom right
- CTA badge: "Heute +18%".
- Overall feel: trustworthy, conversion-focused, campaign-control ready.`,
  },
  {
    title: 'Bewertemich Traffic Hub Hero',
    intent: 'Neue Traffic-Zielseiten-Routen mit klarer CTA und KPI-Strip auf der Startseite.',
    copy: 'Hero-Visual, das Suchabsicht, Schrittfolge und Chart-Layer in einem Layout bündelt.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-traffic-hub-hero',
    language: 'Deutsch/English',
    aspect: '16:9',
    prompt:
`Create a high-conversion 16:9 hero visual for a German web platform named bewertemich.de.
Scene: modern SaaS-style landing hero with data-forwarded storytelling.
- Left block: badge row with labels "Bewerten. Entscheiden. Konvertieren." and 3 compact trust chips: "Invite-first", "A/B-Vergleich", "Datenschutz".
- Center headline: "Mehr echte Stimmen – mehr Uploads – mehr Entscheidungen in Minuten".
- Bottom: stacked mini charts (sparkline + bars) and CTA button "Jetzt Profilbild testen".`,
  },
  {
    title: 'Bewertemich Audience Intent Path',
    intent: 'Intent-Cluster (Karriere, Dating, Bewerbung) mit klarem Übergang in die Funnel-Logik.',
    copy: 'Für Hero- und Ads-Varianten, die je nach Suchintention differenzieren.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-audience-intent-path',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
`Create a conversion-first SaaS marketing visual for a German profile-feedback platform.
Format: 16:9 website hero mockup.
- Left top: brand chip "BEWERTEMICH.DE" and headline row: "Dein Foto, deine Nische, dein Vorteil".
- Center headline: "Wer sucht, klickt, lädt hoch – und entscheidet sofort.".
- Three audience tabs for Karriere, Dating, Bewerbungsbild-Update with CTR chips.
- Right section: 3-step funnel strip Upload · Invite-Link · Stimme.`,
  },
  {
    title: 'Bewertemich Social Proof Loop',
    intent: 'Mobile-konforme Storyline mit DSGVO-Signal und zwei starken CTAs.',
    copy: 'Social-Post/Ad-Format für Retargeting auf mobilen Kanälen mit direktem Upload-Flow.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-social-proof-loop',
    language: 'Deutsch',
    aspect: '9:16',
    prompt:
`Design a mobile-first social proof visual for a German landing page in the style of a high-converting ad.
Canvas: 1080x1920.
- Top badge: "Echte Stimmen, echte Entscheidungen".
- A 3-step path in compact cards: "Foto hochladen" → "Invite teilen" → "Stimmen sammeln".
- Trust indicators: "DSGVO-konform", "Keine Registrierung nötig".
- CTA area with buttons: "Jetzt testen" and "Landingpage öffnen".`,
  },
  {
    title: 'Bewertemich Conversion Funnel Hero',
    intent: 'Von Suchintention zum Upload, inklusive KPI-Strip und Trust-Elementen.',
    copy: 'Neue Hero-Idee für starke Besucherlenkung auf „Ich will jetzt testen“.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-conversion-funnel-hero',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
`Create a 16:9 mobile-and-desktop friendly hero concept for a German profile photo feedback platform.
Style: high-conversion SaaS landing hero, clean vector + glassmorphism, no people, no photo-realistic faces.
Layout:
- Top-left: brand pill "bewertemich.de" and small nav hints with 3 items.
- Main headline block: "Suchintention → Upload → Einladung → Stimme" in bold.
- Under headline: three horizontal progression cards for intent examples, quick upload and 5-voices threshold.
- Right side: compact dashboard mock with three KPI cards (Visibility, Invite-Clicks, Conversion).
- Add trust strip: "Keine Registrierung nötig", "DSGVO-freundlich", "A/B Vergleiche im Standard".
- Final CTA area with chips: "Jetzt testen" and "Landingpage öffnen".`,
  },
  {
    title: 'Bewertemich FAQ Conversion Card',
    intent: 'Einwandauflösung durch mobile Conversion-Karten mit mini FAQs und CTA.',
    copy: 'Mobile Karte, die häufige Fragen direkt im Werbe-Funnel beantwortet.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-faq-conversion-card',
    language: 'Deutsch',
    aspect: '9:16',
    prompt:
`Create a mobile-first card deck in 1080x1920 for a German image feedback funnel.
Style: editorial marketing graphic with rounded cards and strong typography.
Composition:
- Top strip with badge: "Bewertung in 3 Schritten" and subtitle "Ohne langes Warten".
- Center card "Problem erkennen" with short copy about ungeklärte Profilbild-Wahl.
- Center card "Lösung testen" with upload path and Invite-first iconography.
- Center card "Entscheiden" with comparison meter and A/B badge.
- Side rail with social proof chips: "12.000+ Stimmen", "5 Stimmen Mindestgrenze", "A/B-Standard".
- Bottom section with mini FAQ snippets.
- Include two CTA buttons near bottom: "Jetzt Upload starten" and "Landingseite öffnen".`,
  },
  {
    title: 'Bewertemich Visitor Ticker Hero',
    intent: 'Live-Metriken, Routen und Trust-Infos für eine direkte Besucherlenkung.',
    copy: 'Ein Hero im 16:9-Format mit KPI-Ticker, Intentionstrack und klarer CTA-Kaskade.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-visitor-ticker-hero',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
      'Create a German conversion-first landing hero visual for bewertemich.de in 16:9 ratio.\\n' +
      'Scene style: clean UI dashboard + editorial poster, no photos of people.\\n' +
      'Layout:\\n' +
      '- Top row: brand chip "BEWERTEMICH.DE" and a trust ribbon: "Keine Registrierung nötig • DSGVO-freundlich • 5 Stimmen Mindestgrenze".\\n' +
      '- Middle left: clear one-line hero: "In 90 Sekunden von Suchbegriff zu klarem Bild-Entscheid".\\n' +
      '- Middle right: three stacked metric cards labeled: "Neue Uploads heute", "aktive Stimmen", "Upload -> Stimme Rate" with plausible numbers.\\n' +
      '- Bottom section: three traffic route chips with labels: profilbild-bewerten, bewerbungsfoto-bewerten, linkedin-profilbild-optimieren.\\n' +
      '- Add CTA pair: "Jetzt testen" and "Landingpage öffnen".\\n' +
      '- Visual tone: trustworthy, bright neutral background, blue-slate accents, emerald highlight, no purple, no logos.',
  },
  {
    title: 'Bewertemich Intent Speed Navigator',
    intent: 'Schneller Weg vom Suchbegriff zum Upload in einem lesbaren Entscheidungs-Flow.',
    copy: 'Mobile/desktop Hybrid mit 3-Schritt-Funnel und Klickpfaden für Zielgruppen.',
    status: 'Neu via gpt-image-template-agent',
    source: 'local:bewertemich-intent-speed-navigator',
    language: 'Deutsch',
    aspect: '16:9',
    prompt:
      'Create a mobile/desktop hybrid ad concept for German users: "Schneller Treffer im Profilbild-Feedback".\\n' +
      'Canvas: 16:9 with right-side mobile mock stack.\\n' +
      'Elements:\\n' +
      '- Horizontal journey at top: "Suchintention" -> "Upload" -> "Invite" -> "Stimme".\\n' +
      '- Center: three mini cards for intent buckets Career, Dating, Social with realistic CTR chips.\\n' +
      '- Right rail: mini review stream with star badges and short micro-quotes.\\n' +
      '- Add countdown chip: "Ø erste Antwort in 3:04 Minuten".\\n' +
      '- Add two CTA buttons in one row: "Jetzt starten" and "Mehr Intentionen".\\n' +
      '- Use vector-based modern SaaS art direction, rounded borders, thin lines, no people, no photo realism, no purple-heavy gradients.',
  }
];

const cardTone = [
  'from-slate-900/90 to-slate-800/70',
  'from-emerald-900/80 to-emerald-800/65',
  'from-blue-900/80 to-blue-800/65',
  'from-slate-800/90 to-slate-700/70',
  'from-cyan-900/80 to-cyan-800/65',
  'from-amber-900/80 to-amber-800/65',
  'from-teal-900/80 to-teal-800/65',
  'from-zinc-900/80 to-zinc-800/65',
];

const previewLength = 8;

export const SeoVisualPlaybook = () => {
  const [copiedSource, setCopiedSource] = useState('');
  const [copyError, setCopyError] = useState('');

  const copyTemplate = async (template) => {
    if (!template?.prompt) return;

    try {
      if (typeof navigator !== 'undefined' && navigator.clipboard && typeof navigator.clipboard.writeText === 'function') {
        await navigator.clipboard.writeText(template.prompt);
      } else {
        const textarea = document.createElement('textarea');
        textarea.value = template.prompt;
        textarea.setAttribute('readonly', '');
        textarea.style.position = 'fixed';
        textarea.style.left = '-9999px';
        document.body.appendChild(textarea);
        textarea.focus();
        textarea.select();
        document.execCommand('copy');
        textarea.remove();
      }
      await trackEvent('seo_visual_prompt_copy', {
        source: 'home',
        surface: 'seo_visual_playbook',
        meta: { template: template.source }
      }, {
        transport: 'beacon'
      });

      setCopiedSource(template.source);
      setCopyError('');
      window.setTimeout(() => {
        setCopiedSource('');
      }, 1200);
    } catch {
      setCopyError('Copy fehlgeschlagen. Bitte manuell markieren.');
      window.setTimeout(() => {
        setCopyError('');
      }, 1200);
    }
  };

  return (
    <section className="mt-8">
      <div className="rounded-2xl border border-slate-200 bg-white p-4 md:p-6">
        <div className="flex flex-wrap items-center justify-between gap-3">
          <div>
            <div className="inline-flex rounded-full bg-primary/10 px-3 py-1 text-xs font-semibold text-primary">Neue Visualisierungs-Runde</div>
            <h2 className="mt-3 text-xl font-bold">Conversion-Visuals für Besucherlenkung und Upload-Drive</h2>
            <p className="mt-1 text-sm text-gray-600">Prompt-Templates aus dem Local-Katalog für KI-Bildgenerierung inkl. Copy-to-Clipboard, direkt für neue Hero- und Ad-Varianten.</p>
          </div>
          <a href="/admin/content?tab=seo" className="btn btn-sm btn-primary" aria-label="SEO-Admin öffnen">SEO-Admin öffnen</a>
        </div>

        <div className="mt-4 grid gap-3 lg:grid-cols-2 xl:grid-cols-3">
          {visualTemplates.map((template, index) => (
            <article
              key={template.source}
              className="group relative overflow-hidden rounded-xl border border-slate-200 bg-white shadow-sm transition hover:-translate-y-0.5 hover:shadow"
            >
              <div className={`h-28 rounded-t-xl bg-gradient-to-br ${cardTone[index % cardTone.length]} p-4 text-white`}>
                <p className="inline-flex rounded-full bg-white/15 px-2 py-1 text-xs font-semibold">Template #{index + 1}</p>
                <h3 className="mt-3 text-sm font-bold leading-snug">{template.title}</h3>
              </div>
              <div className="space-y-3 border-t border-slate-100 p-4">
                <p className="text-sm font-semibold text-slate-800">{template.intent}</p>
                <p className="text-sm text-gray-600">{template.copy}</p>
                <p className="rounded-lg bg-slate-50 border border-slate-100 p-2 text-xs text-slate-700">{template.prompt.split('\n').slice(0, previewLength).join('\n')}</p>
                <div className="flex items-center justify-between text-xs text-gray-500">
                  <span className="inline-flex rounded-full bg-slate-100 px-2 py-1">{template.language}</span>
                  <span className="inline-flex rounded-full bg-slate-100 px-2 py-1">{template.aspect}</span>
                  <span className="inline-flex rounded-full bg-slate-100 px-2 py-1">{template.status}</span>
                </div>
                <button
                  type="button"
                  className="btn btn-outline btn-sm w-full"
                  onClick={() => copyTemplate(template)}
                  aria-label={`Prompt kopieren ${template.title}`}
                >
                  {copiedSource === template.source ? 'Prompt kopiert' : 'Prompt kopieren'}
                </button>
              </div>
            </article>
          ))}
        </div>

        {copyError ? (
          <div className="mt-4 rounded-xl border border-warning bg-warning/10 px-4 py-2 text-xs text-warning-content">{copyError}</div>
        ) : null}
      </div>
    </section>
  );
};