Communitygithub.com

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Richtet einen SMTP-basierten E-Mail-Autoresponder für Verkaufs-Landingpages ein – automatischer E-Mail-Versand, nachdem ein Benutzer ein Formular ausgefüllt hat (Name/Telefon/E-Mail), ohne an einen bestimmten Anbieter gebunden zu sein.

Was ist MKT.LANDINGPAGE.SKILLS?

Dieser Skill befähigt einen KI-Agenten, einen vollständigen E-Mail-Autoresponder-Workflow für eine Verkaufs-Landingpage zu implementieren. Der Skill erkennt zunächst den Projektstack (Next.js, Vite oder statisches HTML) und fordert den Benutzer dann auf, einen SMTP-Anbieter aus einer Liste von sieben Optionen auszuwählen, darunter Gmail, Resend, SendGrid, Mailgun, Brevo, Zoho oder ein benutzerdefinierter SMTP. Der Kern des Skills besteht darin, Kontext aus den Pipeline-Artefakten des Benutzers (wie `offer.json` und `conversion-copy.md`) zu sammeln, um den Anruf zu verstehen. Auf dieser Grundlage erstellt er zwei maßgeschneiderte E-Mail-Entwürfe: einen Autoresponder für den Lead und eine Lead-Benachrichtigung für den Eigentümer. Der Skill präsentiert diese Entwürfe dem Benutzer zur Überprüfung und Bearbeitung, bevor er den Code mit `nodemailer` verdrahtet, Umgebungsvariablen konfiguriert und eine Testanleitung bereitstellt. Er unterstützt verschiedene E-Mail-Muster (Leadmagnet, Buchungsbestätigung, Zahlungserinnerung, Nachverfolgung, Onboarding nach dem Kauf) und ist für den Einsatz mit Next.js App Router, Pages Router, Vite oder statischem HTML auf Plattformen wie Vercel optimiert.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lexuanthanhhy/MKT.LANDINGPAGE.SKILLS/tree/main/.claude/skills/biz-email-setup

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Biz SMTP Form Autoresponder — Automatische E-Mail nach Lead-Formularausfüllung

Dieser Skill verwandelt das Anmeldeformular auf einer Landingpage (Name/Telefon/E-Mail nach VN-Traffic-Standard) in 2 automatische E-Mails direkt nach dem Absenden durch den Benutzer: (A) eine herzliche Willkommens-E-Mail an den Lead, (B) eine Benachrichtigungs-E-Mail an den Eigentümer. Die E-Mails werden individuell für jedes Angebot basierend auf dem vorhandenen Kontext aus der biz-*-Pipeline entworfen (kein allgemeines "Vielen Dank für Ihre Anmeldung, wir werden uns bald bei Ihnen melden" – das ist Lead-verbrennender Text).

Philosophie: Der E-Mail-Autoresponder ist der goldene Moment. Ein Lead hat gerade auf die Senden-Schaltfläche geklickt = befindet sich auf dem Höhepunkt der Absicht. Die E-Mail muss innerhalb von 30 Sekunden (1) bestätigen, dass das Absenden korrekt war, (2) das im CTA Versprochene liefern (Leadmagnet / Buchung / Zahlungslink), (3) klare Erwartungen für den nächsten Schritt setzen. Eine gute Autoresponder-E-Mail verwandelt 20-40 % der kalten Leads in heiße Leads. Eine generische E-Mail führt dazu, dass der Lead den Absender blockiert oder den Markennamen innerhalb von 24 Stunden vergisst.

Warum SMTP (nicht an einen Anbieter gebunden): SMTP ist ein offener Standard – der Benutzer kann den Anbieter wählen, der am besten zu Budget, Region und Compliance passt. Gmail SMTP ist kostenlos mit 500/Tag (ausreichend für eine Landingpage mit <50 Leads/Tag), Resend SMTP 3000/Monat, SendGrid 100/Tag für immer kostenlos, Brevo (beliebt in VN) 300/Tag kostenlos, VN-Hosting (Mắt Bão/PA/Inet) bietet oft kostenloses SMTP. Der Code verwendet nodemailer – ein Anbieterwechsel erfordert nur das Ändern von 4 Umgebungsvariablen, keine Codeänderung. Vermeidet Vendor-Lock-in.

Ausgabe des Skills: Code-Patch + 2 responsive HTML-E-Mail-Entwürfe + Liste der Umgebungsvariablen + Testplan. Der Skill sendet KEINE Test-E-Mails selbst – der Benutzer muss die Entwürfe zuerst bestätigen, da Leadmagnet-Links, Markenstimme und Dringlichkeitsformulierungen Eigentum des Benutzers sind.


Wann dieser Skill verwendet werden sollte

  • Der Benutzer hat gerade eine Landingpage deployed (über /biz-deploy-vercel) und das Formular sendet ins Leere.
  • Der Benutzer hat eine bestehende Landingpage (Next.js, Vite oder statisches HTML auf Vercel) und möchte einen E-Mail-Autoresponder einbinden.
  • Der Benutzer baut neu und möchte die E-Mail-Integration von Anfang an vor dem Deployment.
  • Der Benutzer hat bereits Gmail/Google Workspace und möchte das kostenlose SMTP nutzen, anstatt einen neuen Anbieteraccount zu erstellen.
  • Der Benutzer hat VN-Hosting (Mắt Bão, PA, Inet) mit einem vorhandenen SMTP-Server, den er nutzen möchte.

Verwenden Sie diesen Skill NICHT, wenn:

  • Der Benutzer E-Mail-Marketing-Broadcast (Newsletter, Drip-Kampagnen 7-30 Tage) möchte → Mailchimp/ConvertKit/MailerLite sind besser geeignet.
  • Der Benutzer SMS/Zalo OA-Autoresponder möchte → anderer Anwendungsfall.
  • Der Benutzer CRM-Integration (Leads in Hubspot/Pipedrive/Notion DB) möchte → anderer Skill.
  • Der Benutzer Massen-Cold-Email-Outreach benötigt → Instantly/Smartlead, nicht transaktional.

Gesamtworkflow (7 Phasen)

Phase 0: PROJEKTSTACK ERKENNEN (Next.js App / Pages / Vite / statisches HTML)
       ↓
Phase 1: SMTP-ANBIETER AUSWÄHLEN (Gmail / Resend SMTP / SendGrid / Mailgun / Brevo / Zoho / Benutzerdefiniert)
       ↓
Phase 2: KONTEXT SAMMELN (offer.json + conversion-copy.md, oder Next.js app/page.tsx lesen, oder deployed HTML lesen)
       ↓
Phase 3: E-MAIL-MUSTER AUSWÄHLEN (Leadmagnet / Buchung / Zahlung / Nurture)
       ↓
Phase 4: 2 E-MAILS ENTWERFEN (Autoresponder + Eigentümerbenachrichtigung) — Benutzer anzeigen
       ↓
Phase 5: BENUTZERÜBERPRÜFUNG & BEARBEITUNG — iterieren, bis der Benutzer zustimmt
       ↓
Phase 6: CODE VERDRAHTEN (nodemailer installieren + API-Route + Formularbindung + Umgebungsvariablen)
       ↓
Phase 7: ANBIETER-SETUP + TESTPLAN — Anleitung zum Abrufen der SMTP-Anmeldedaten, Domain-Verifizierung (falls erforderlich), Live-Test

Jede Phase hält an und wartet auf Benutzerbestätigung – insbesondere Phase 1 (Anbieterwahl), Phase 4-5 (E-Mail-Inhalt), Phase 7 (Anbieter-DNS), da dies Markenwerte des Benutzers sind. Die Code-Generierung in Phase 6 erfolgt proaktiver durch den Skill.


Phase 0 — Projektstack erkennen

Lesen Sie die Stammdateien des Projekts, um den Stack zu identifizieren. Der Stack bestimmt: wo die API-Route platziert wird, die Syntax für den nodemailer-Import, die Art der Formularbindung (fetch oder form action).

ErkennungsdateiStackAPI-Route-PfadFormularbindung
next.config.js/mjs/ts + app/-OrdnerNext.js App Routerapp/api/submit/route.tsClient-Komponente fetch('/api/submit')
next.config.js/mjs/ts + pages/-OrdnerNext.js Pages Routerpages/api/submit.tsClient-Komponente fetch('/api/submit')
vite.config.js/tsVite (React/Vue/Svelte)api/submit.js (Vercel-Funktion)Client-Komponente fetch('/api/submit')
package.json ohne Framework, mit index.htmlStatisches HTMLapi/submit.js (Vercel-Funktion)Inline <script> mit fetch('/api/submit')
Kein lokales Projekt, nur URLBestehende deployed SeiteBenutzer muss zuerst das Repository klonen oder den Repository-Pfad angeben—

Zusätzlich lesen, um Formularfelder zu bestimmen:

  • Suchen Sie nach <form> im Code → listen Sie vorhandene <input name="..."> auf
  • Standarderwartung (laut Projektspeicher): name, phone, email. Einige Seiten fügen hinzu: company, message, budget, utm_source.
  • Wenn das Formular noch nicht existiert → der Skill erstellt in Phase 6 ein neues Formular mit mindestens 3 Feldern (Name/Telefon/E-Mail).

Wichtig: Wenn der Benutzer kein lokales Projekt hat (nur eine deployed URL), halten Sie an und fragen Sie: "Haben Sie ein lokales Repository, in das ich den Code einfügen kann? Ich muss die Quelldateien bearbeiten. Wenn Sie nur eine URL haben, klonen Sie bitte das Repository und geben Sie mir den Pfad." Es ist nicht möglich, nur über eine URL einzubinden.


Phase 1 — SMTP-Anbieter auswählen

Fragen Sie den Benutzer, einen der 7 Anbieter auszuwählen. Jeder Anbieter hat unterschiedliche SMTP-Konfigurationen (Host/Port/Auth), der Skill füllt automatisch die Vorlage für die Umgebungsvariablen aus, wenn der Benutzer eine Auswahl trifft.

#AnbieterKostenloses KontingentGeeignet, wennSMTP-HostPortHinweise
1Gmail / Google Workspace500/TagBenutzer hat bereits Gmail/Workspace, geringes Traffic-Aufkommensmtp.gmail.com587 (STARTTLS)App-Passwort erforderlich (2FA), KEIN Hauptpasswort verwenden
2Resend SMTP3000/MonatHohe Zustellbarkeit + schöne Logs gewünscht, DNS-Setup in Ordnungsmtp.resend.com587Benutzer = resend, Passwort = API-Key. Domain muss verifiziert werden, um von benutzerdefinierter @brand.vn zu senden
3SendGrid SMTP100/Tag für immer kostenlosStack bereits mit SendGrid vertraut, Webhook benötigtsmtp.sendgrid.net587Benutzer = apikey literal, Passwort = API-Key
4Mailgun SMTP100/Tag × 3 MonateEU/US-Region, entwicklerfreundlichsmtp.mailgun.org (US) oder smtp.eu.mailgun.org (EU)587Benutzer/Passwort aus den Mailgun-Domain-Einstellungen
5Brevo (Sendinblue) SMTP300/Tag für immer kostenlosBeliebt in VN, großzügigstes kostenloses Kontingent, VN-Support vorhandensmtp-relay.brevo.com587Benutzer = Login-E-Mail, Passwort = SMTP-Key (anders als API-Key)
6Zoho Mail SMTP5/Tag kostenlos, 1$/Benutzer/MonatBenutzer verwendet bereits Zoho Workspacesmtp.zoho.com587App-Passwort erforderlich, wenn 2FA aktiviert ist
7Benutzerdefiniertes SMTPAbhängig vom HostingVN-Hosting (Mắt Bão/PA/Inet/Nhân Hòa) bietet SMTP inklusive, oder selbst gehostetes PostfixBenutzerangabeBenutzerangabeBenutzer gibt vollständigen Host/Port/Benutzer/Passwort an

Standardempfehlung nach Angebotstyp:

  • Landingpage mit <50 Leads/Tag, Benutzer hat Gmail → Gmail SMTP (kostenlos, 5 Minuten Einrichtung).
  • Landingpage mit >50 Leads/Tag oder professionelle Zustellbarkeit erforderlich → Brevo (kostenlos 300/Tag, gute Zustellbarkeit für VN) oder Resend SMTP (3000/Monat, schöne Logs).
  • Benutzer möchte migrationssicher sein und später selbst hosten können → Benutzerdefiniertes SMTP von Anfang an.

Frageformat für den Benutzer:

Welchen SMTP-Anbieter möchten Sie für den automatischen E-Mail-Versand verwenden?

1. Gmail / Google Workspace (kostenlos 500/Tag, am einfachsten, wenn Sie bereits Gmail haben)
2. Resend SMTP (kostenlos 3000/Monat, hohe Zustellbarkeit, Domain-Verifizierung erforderlich)
3. SendGrid SMTP (kostenlos 100/Tag für immer, wenn Sie die API bereits kennen)
4. Mailgun SMTP (kostenlos 100/Tag × 3 Monate)
5. Brevo / Sendinblue SMTP (kostenlos 300/Tag, beliebt in VN)
6. Zoho Mail SMTP (wenn Sie bereits Zoho Workspace verwenden)
7. Benutzerdefiniertes SMTP (Ihr VN-Hosting bietet es an / selbst gehostet)

Wenn Sie noch keinen Account haben, empfehle ich [Gmail bei geringem Traffic / Brevo bei hoher Zustellbarkeit]. Welche Nummer wählen Sie?

Nach der Auswahl des Benutzers → speichern für die Injektion in die Umgebungsvariablen-Vorlage in Phase 6 + Anleitung zum Abrufen der Anmeldedaten für den richtigen Anbieter in Phase 7.

⚠️ Wichtig — Sicherheit: SMTP-Anmeldedaten (insbesondere Gmail-App-Passwort) berechtigen zum Senden von E-Mails vom Konto des Benutzers. Niemals direkt in den Quellcode einbetten. Immer über Umgebungsvariablen. Warnen Sie den Benutzer, die Anmeldedaten sofort zu rotieren, falls sie versehentlich committet werden.


Phase 2 — Kontext sammeln

Ziel: Das Angebot ausreichend tief verstehen, um nicht-generische E-Mails zu entwerfen. 3 Eingabemodi:

Modus A — Pipeline-Artefakte vorhanden (reichhaltigster)

Der Benutzer hat gerade /biz-offer-alex-hormozi und/oder ui-ux-pro-max ausgeführt → hat Dateien:

  • output/<case-slug>/offer.json — Segment, Traumziel, Mechanismus, Bonus-Stack, Garantie, Preisgestaltung (PRIMÄRE Quelle der Wahrheit)
  • output/<case-slug>/conversion-copy.md — Hero-Block einfügebereit (Überschrift, Unterüberschrift, CTA-Formulierung)
  • output/<case-slug>/landing-page/app/page.tsx — aktuelle erstellte Next.js-Verkaufsseite (lesen, um die verwendeten Abschnitte + Formularfelder zu kennen)

⚠️ Update 2026-05-14: Die alte Pipeline hatte layout.json + copy.json (von biz-sales-page-layout, DEPRECATED) — der neue Prozess ÜBERSPRINGT diese 2 Dateien. Nur offer.json + Lesen von page.tsx reichen als Kontext aus.

Lesen Sie die 3 oben genannten Quellen. Extrahieren Sie für die E-Mails:

  • Segment + Traumziel → Betreffzeile personalisieren ("[Name], der 8-wöchige AI Agent Fahrplan ist bereit" statt "Willkommen")
  • Mechanismus-Name → im Textkörper verstärken ("Das PROMPT-Framework-System, das Sie lernen werden...")
  • Bonus-Stack → in der E-Mail auflisten (wenn das Angebot kostenlos/günstig ist und einen sofortigen Bonus liefert)
  • Garantietext → wörtlich in der E-Mail zitieren, um Bedenken zu reduzieren
  • CTA-Formulierung → im endgültigen CTA der E-Mail spiegeln

Modus B — Landingpage vorhanden, aber kein JSON

Der Benutzer hat deployed HTML, aber nicht biz-offer/biz-sales-page ausgeführt. Der Skill liest das HTML:

  • curl -s <URL> oder lokale index.html-Datei lesen
  • Hero h1, Unterüberschrift, CTA-Button-Text, Preisblock, Garantieblock parsen
  • Daraus Angebotstyp + Segment ableiten

Modus B ist in 80 % der Fälle ausreichend, aber die E-Mails sind weniger personalisiert als Modus A. Schlagen Sie dem Benutzer vor: "Sie können /biz-offer-alex-hormozi ausführen, um eine offer.json zu erhalten, und dann hierher zurückkommen, die E-Mail wird besser sein. Oder Sie fahren mit Modus B fort."

Modus C — Nichts vorhanden

Der Benutzer hat nur ein HTML-Formular, keinen Kontext. Der Skill muss 5 schnelle Fragen stellen:

  1. Was ist Ihr Produkt/Ihre Dienstleistung? (1 Satz)
  2. Was möchten Sie dem Benutzer nach dem Ausfüllen des Formulars senden? (PDF-Download / Buchungslink / Zahlungslink / nur Bestätigung und späterer Anruf)
  3. Markenname + Name des Absenders (wird im "Von:"-Feld angezeigt)
  4. Ihre E-Mail-Adresse für Benachrichtigungen über neue Leads
  5. Die Domain, die Sie besitzen, um SPF/DKIM zu verifizieren (wenn Resend/SendGrid/Mailgun/Brevo ausgewählt wurde – bei Gmail überspringen)

Phase 3 — E-Mail-Muster auswählen

2-Trigger-Modell (für Angebote mit Checkout-Flow): Bei günstigen Kursen / digitalen Produkten mit Online-Zahlung gibt es 2 verschiedene Auslöser an verschiedenen Punkten, die 2 verschiedene E-Mails senden. Fassen Sie sie nicht in einer einzigen E-Mail zusammen.

Lead füllt Formular auf Landingpage aus
         ↓
   [Trigger A — /api/submit]
         ↓
   E-Mail P3 (ZAHLUNGSERINNERUNG, schlank)
         ↓
Lead schließt Zahlung ab → Zahlungsanbieter-Webhook
         ↓
   [Trigger B — /api/payment-webhook]
         ↓
   E-Mail P5 (ONBOARDING NACH KAUF, vollständig)

Inhaltsregeln:

  • P3 (Vor-Zahlung): nur Zahlungslink + kurze Garantie + Dringlichkeit. KEINE vollständige Liste der Leistungen/des Bonus-Stacks – der Lead hat sie noch nicht "verdient", die Auflistung verringert die Dringlichkeit der Zahlung.
  • P5 (Nach-Zahlung): ALLES liefern – Zugangslink, vollständige Leistungen, Bonus-Stack, Gruppenlink, Bürozeiten-Plan, 1 Follow-up-Frage zur Personalisierung. Dies ist der wahre goldene Moment.

(Lesen Sie den Speicher feedback_email-autoresponder-2-stage-flow für die detaillierte Begründung.)


Wählen Sie basierend auf dem Kontext aus Phase 2 das passende Muster aus. Lesen Sie references/email-formulas.md für detaillierte Vorlagen auf Vietnamesisch.

MusterAuslöserWann verwendenBetreff-Hinweis
P1 — Leadmagnet-LieferungFormularabsendungAngebot = kostenloser PDF-/E-Book-/Vorlagen-/Swipe-Date-/Checklist-Download"[Name], das Dokument [X] ist bereit — öffnen Sie es jetzt 👇"
P2 — BuchungsbestätigungFormularabsendungAngebot = Terminbuchung/Call/Beratung/Demo/kostenlose Strategie-Session"[Name], Ihre Anmeldung zur Beratung wurde erfasst — nächste Schritte im Inneren"
P3 — ZahlungserinnerungFormularabsendung (noch nicht bezahlt)Angebot = günstiges Produkt (199K-3M VND), E-Mail führt zum Checkout"[Name], Zahlungslink für [Kurs X] — sichern Sie sich den Sonderpreis für 24h ⏰"
P4 — Nurture (Verkaufsgespräch steht bevor)FormularabsendungAngebot = High-Ticket-Coaching/Agentur 5M-50M+ VND, Verkaufsteam ruft innerhalb von 24h an"[Name], [Anrufer] wird sich innerhalb von 24h melden — Vorbereitungs-Checkliste im Inneren"
P5 — Onboarding nach KaufZahlungs-WebhookLead hat gerade bezahlt — vollen Wert liefern + 1 Personalisierungsfrage"🎉 Willkommen [Name] in [Kurs X] — jetzt freischalten"

Regeln für die Musterauswahl:

  • Angebot = kostenloser Download/Training → Nur P1 (1 Auslöser, 1 E-Mail).
  • Angebot = kostenloser Buchungs-Call → Nur P2 (1 Auslöser, 1 E-Mail).
  • Angebot = günstig mit Online-Zahlung (Stripe/Momo/ZaloPay/Sepay) → P3 + P5 (2 Auslöser, 2 E-Mails).
  • Angebot = High-Ticket-Verkaufsgespräch → Nur P4, Follow-up durch Verkaufsteam (Onboarding nach Abschluss ist ein separater Prozess).

Der Skill schlägt das passende Muster mit Begründung vor und fragt den Benutzer nach Bestätigung. Beispiel: "Basierend auf der offer.json sehe ich, dass dies ein Kurs für 1,99 Mio. VND mit Zahlungsintegration ist. Ich schlage die Einrichtung von 2 E-Mails vor: P3 (Zahlungserinnerung nach Formularausfüllung) + P5 (Onboarding nach Zahlung + 1 Personalisierungsfrage). Sind Sie einverstanden oder möchten Sie nur eine E-Mail P3 vorab?"


Phase 4 — 2 E-Mails entwerfen

Generieren Sie 2 reine vietnamesische E-Mails (Anrede mit anh/chị), mobile-responsives HTML.

E-Mail A — Autoresponder an den Lead

Struktur in 6 Blöcken (lesen Sie references/email-formulas.md für die spezifische Formulierung pro Muster):

  1. Betreffzeile — personalisiert mit {{name}}, kurz unter 50 Zeichen, 1 leichtes Emoji am Ende, wenn es zur Markenstimme passt (✉️ 👇 ✓), Spam-Trigger vermeiden ("FREE", "$$$", "GUARANTEE" in Großbuchstaben).
  2. Vorschautext — 1 Satz, der unter der Betreffzeile im Posteingang angezeigt wird und den Wert der E-Mail beim Öffnen erklärt.
  3. Begrüßung — "Chào anh/chị {{name}}," — nicht "Dear", nicht "Sehr geehrte Damen und Herren".
  4. Haupttext — gemäß dem gewählten Muster. Regeln:
    • Kurz (unter 200 Wörter).
    • 1 primären CTA-Link/Button deutlich sichtbar.
    • Konkreten Verweis auf den Angebot-/Mechanismusnamen aus dem Kontext (nicht "unser Produkt").
    • Bei Muster P3/P4 → 1 Dringlichkeitserinnerung + 1 Beruhigung (Garantie).
  5. Signatur — Name des Absenders + Markenname + 1 Kontaktlink (Zalo/Telefon/Website).
  6. Fußzeile — Adresse (Anti-Spam-Gesetz erforderlich) + Abmeldelink (für Compliance erforderlich, auch bei transaktionalen E-Mails empfehlenswert).

E-Mail B — Benachrichtigung an den Eigentümer

Struktur in 4 Blöcken:

  1. Betreffzeile — "🆕 Neuer Lead: {{name}} — {{product_name}} — {{timestamp}}". Kurz, scanbar, direkt.
  2. Lead-Daten: Tabellarisch oder Aufzählung: Name, Telefon, E-Mail, alle zusätzlichen Felder (Unternehmen, Nachricht).
  3. Wenn Angebot eine Buchung ist: Direkter Kalenderlink (Calendly/Cal.com) zum Annehmen/Ablehnen.
  4. Admin-Hinweis: "Lead in den nächsten 24h kontaktieren. Diese E-Mail ist nur für Sie."

Keine Verkaufs- oder Marketinginhalte in dieser E-Mail – sie ist rein informativ für den Eigentümer.


Phase 5 — Benutzerüberprüfung & Bearbeitung

Nach der Erstellung der 2 Entwürfe:

  1. Zeigen Sie beide E-Mails in einer gut lesbaren Form (Vorschau von Betreffzeile + Textkörper) mit einem Hinweis auf den Platzhalter {{name}}.
  2. Fragen Sie, ob der Benutzer:
    • Betreffzeile anpassen möchte (Markenstimme / Schreibstil)
    • Bonus-Stack oder Garantietext ändern möchte
    • E-Mail-Code (für späteres Einfügen in den Editor) oder alles auf einmal genehmigen möchte

Iterieren Sie, bis klar „Genehmigt" kommt. Fahren Sie nicht mit der Code-Verdrahtung fort, bis der Benutzer die E-Mail-Inhalte genehmigt hat.


Phase 6 — Code verdrahten

Führen Sie basierend auf der Erkennung aus Phase 0 + Anbieterwahl + genehmigten Entwürfen die folgenden Änderungen durch:

1. nodemailer installieren

npm install nodemailer

2. Umgebungsvariablen konfigurieren

Erstellen/Bearbeiten Sie .env.local (für Next.js) oder .env (für Vite):

SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
[email protected]
SMTP_PASS=your-app-password
# Nur für Resend: SMTP_USER=resend, SMTP_PASS=re_...
# Nur für SendGrid: SMTP_USER=apikey, SMTP_PASS=SG.xxxxx
# Nur für Brevo: SMTP_USER=login-email, SMTP_PASS=xkeysib-xxx

# Absenderinformationen
FROM_NAME=Ihre Marke
[email protected]

# E-Mail des Eigentümers für Benachrichtigungen
[email protected]

Hinweis: Wenn der Benutzer einen Gmail-App-Passwort verwendet, stellen Sie in Phase 7 eine Anleitung zum Erstellen bereit.

3. API-Route generieren

Erstellen Sie basierend auf dem Stack aus Phase 0 die entsprechende Datei:

// Beispiel: app/api/submit/route.ts (App Router)
import nodemailer from "nodemailer";

const transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST,
  port: Number(process.env.SMTP_PORT),
  secure: false,
  auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS },
});

export async function POST(request: Request) {
  const data = await request.json();
  const { name, phone, email } = data;

  // ... E-Mail-Betreff in den genehmigten Entwurf einfügen
  const leadEmailHtml = `...`;
  const ownerEmailHtml = `...`;

  await transporter.sendMail({
    from: `"${process.env.FROM_NAME}" <${process.env.FROM_EMAIL}>`,
    to: email,
    subject: `[Name], Ihr Link ist bereit 👇`,
    html: leadEmailHtml,
  });

  await transporter.sendMail({
    from: process.env.FROM_EMAIL,
    to: process.env.OWNER_EMAIL,
    subject: `🆕 Neuer Lead: ${name} - ${new Date().toISOString()}`,
    html: `<p>Name: ${name}</p><p>Telefon: ${phone}</p><p>E-Mail: ${email}</p>`,
  });

  return Response.json({ success: true });
}

(Bei Verwendung des 2-Trigger-Modells P3 + P5 eine separate Route /api/payment-webhook generieren, die von Stripe/Momo/ZaloPay aufgerufen wird.)

4. Formular-Code aktualisieren

Fügen Sie onSubmit zum bestehenden <form> hinzu:

const handleSubmit = async (e: React.FormEvent) => {
  e.preventDefault();
  const formData = new FormData(e.target as HTMLFormElement);
  const response = await fetch("/api/submit", {
    method: "POST",
    body: JSON.stringify({
      name: formData.get("name"),
      phone: formData.get("phone"),
      email: formData.get("email"),
    }),
    headers: { "Content-Type": "application/json" },
  });
  if (response.ok) {
    alert("Alles klar! Überprüfen Sie Ihre E-Mail.");
  }
};

Phase 7 — Anbieter-Setup & Testplan

Zu diesem Zeitpunkt ist der Code fertig, aber der SMTP-Dienst ist noch nicht einsatzbereit. Der Skill führt den Benutzer durch:

Gmail SMTP

  1. Gehen Sie zu myaccount.google.com/apppasswords
  2. Erstellen Sie ein App-Passwort (Auswahl „Andere (benutzerdefinierter Name)")
  3. Kopieren Sie das 16-stellige App-Passwort in SMTP_PASS
  4. Hinweis: Wenn 2FA auf dem Konto nicht aktiviert ist, aktivieren Sie es, bevor Sie ein App-Passwort erstellen können

Resend SMTP

  1. Gehen Sie zu resend.com/domains → Domain hinzufügen
  2. Fügen Sie die DKIM/SPF-DNS-Einträge hinzu (dem Benutzer das genaue DNS-Eintragsformat anzeigen)
  3. Warten Sie auf die Verifizierung (5–30 Minuten)
  4. Kopieren Sie den API-Key in SMTP_PASS und setzen Sie SMTP_USER=resend

Brevo SMTP

  1. Gehen Sie zu brevo.com → SMTP & API → SMTP-Schlüssel
  2. Erstellen Sie einen SMTP-Schlüssel (Unterschied zum API-Key beachten)
  3. Kopieren Sie ihn in SMTP_PASS, SMTP_USER = die bei Brevo registrierte E-Mail

Benutzerdefiniertes SMTP (Hosting VN)

  1. Fragen Sie den Benutzer nach dem vom Hosting bereitgestellten SMTP-Server (normalerweise: mail.domain.com oder smtp.domain.com)
  2. Port: 587 (STARTTLS) oder 465 (SSL) – hängt vom Hosting ab
  3. Benutzer = E-Mail-Konto des Hostings / Passwort = E-Mail-Passwort

Testplan

Nach Abschluss des Setups:

  • Phase 1: node -e "const nodemailer = require('nodemailer'); ..." ausführen, um die SMTP-Verbindung zu testen
  • Phase 2: E-Mail an den Lead senden (die Seite öffnen, Formular mit gültiger E-Mail ausfüllen) → prüfen, ob die E-Mail im Spam-/Hauptposteingang ankommt
  • Phase 3: E-Mail an den Eigentümer senden → prüfen, ob sie ankommt
  • Phase 4: Wenn möglich, die gesamte Pipeline testen: Formular ausfüllen → E-Mail abrufen → Link in der E-Mail bestätigen → Seite wird erfolgreich geöffnet
  • Hinweis: Bei der ersten Einrichtung können E-Mails im Spam landen, was normal ist. Warm-up des SMTP-Servers durch vorheriges Senden einiger manueller E-Mails.

⚠️ Fehlerbehebung: Wenn die E-Mail nicht ankommt, überprüfen Sie:

  • Sieht die .env-Datei korrekt aus? (env var nicht in Anführungszeichen setzen, keine Leerzeichen nach =)
  • Stimmen Host und Port mit den SMTP-Einstellungen überein?
  • Ist der SMTP-Port in der Firewall des Hostings geöffnet? (wichtig bei benutzerdefiniertem SMTP)
  • SendGrid/Brevo: Haben Sie den SMTP-Key anstelle des API-Keys verwendet?

Referenzen & Dateien

NameTypVerwendung
references/email-formulas.mdReferenzE-Mail-Vorlagen für jedes Muster auf Vietnamesisch
references/email-autoresponder-2-stage-flow.mdReferenzErklärung des 2-Trigger-Modells P3 + P5

Änderungsprotokoll

  • 2026-05-14: Pipeline-Aktualisierung. biz-sales-page-layout DEPRECATED. Überspringen Sie layout.json und copy.json. Verwenden Sie nur offer.json + page.tsx lesen.
  • 2026-05-10: Erstversion: 7 Phasen, SMTP-Unterstützung für 7 Anbieter, nodemailer-Integration.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Best practices for Remotion - Video creation in React

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Scaffold trang `/admin` CRM-style trực quan vào Next.js project (Supabase backend) — KHÔNG còn variant Vercel KV. Layout 1CRM-inspired: sidebar 3 tab (Tổng quan / Khách hàng / Email marketing) + popup nhập mã đăng nhập. **Tab Tổng quan**: 4 KPI cards (Tổng leads / Đã thanh toán / Tỷ lệ chuyển đổi / Doanh thu) có delta arrow vs kỳ trước, line chart leads+paid+revenue theo ngày dùng `recharts`, donut trạng thái paid/pending/expired, period selector pill 7d/30d/90d, list 5 thanh toán gần nhất. **Tab Khách hàng**: bảng leads + search + filter trạng thái + filter ngày + CSV export. **Tab Email marketing**: form soạn chiến dịch (tên + tiêu đề + body chọn định dạng **văn bản thường HOẶC HTML** + placeholder `{{name}}` + audience 4 loại all/paid/pending/last_days + tên người gửi) — có nút **Xem trước** mở modal iframe render đúng email thật (text → auto convert + wrap khung; HTML fragment → wrap khung, HTML đầy đủ giữ nguyên) → gửi bulk qua SMTP (reuse `nodemailer` của `biz-email-setup` — KHÔN

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Deploy landing page / website (React, Next.js, Vite, static HTML) lên Vercel — tự kiểm tra Vercel CLI hoặc Vercel MCP đã cài chưa, nếu chưa thì cài qua npm/pnpm và hướng dẫn user authenticate (vercel login), tự detect framework (Next.js / Vite / CRA / static), auto-generate vercel.json khi cần, chạy `vercel --prod`, trả về live URL + inspect URL + hướng dẫn custom domain. USE WHEN user says 'deploy lên vercel', 'đẩy landing page lên vercel', 'publish website', 'go live', 'deploy nextjs', 'deploy react', 'deploy vite', 'tạo URL live', 'đưa lên production', 'biz-deploy-vercel', 'host landing page', 'vercel deploy', 'ship lên vercel', 'đẩy code lên vercel'. Skill này áp dụng cho cả case dùng Vercel CLI lẫn Vercel MCP server.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Cài chatbot AI dạng floating widget góc dưới phải vào project Next.js có sẵn (App Router hoặc Pages Router), responsive đầy đủ web + tablet + mobile, gọi LLM qua OpenRouter (mặc định google/gemini-3-flash-preview, có thể đổi sang anthropic/claude-sonnet-4.6), streaming response, RENDER MARKDOWN trong assistant bubble (bold / list / link / code) qua react-markdown + remark-gfm — KHÔNG hiện raw **bold** dạng text — có knowledge base từ FAQ + tài liệu sản phẩm/khóa học do user cung cấp để chatbot tự động trả lời khách hàng, và TỰ ĐỘNG EXTRACT + LƯU LEAD (tên + SĐT + email) vào Upstash Redis/Vercel KV dưới namespace `chat-lead:{phone}` khi user cung cấp đầy đủ thông tin trong chat — dedupe theo SĐT, TTL 90 ngày, fire-and-forget không block stream. Skill tự detect số lượng project Next.js — nếu có nhiều hơn 1 sẽ hỏi user chọn project nào để cài; tự detect TypeScript/JS, App Router/Pages Router, Tailwind/CSS module, KV/Upstash availability (skip auto-save nếu chưa có); tự install react-markd

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Đóng gói offer **không thể chối từ** (grand slam offer) theo phương pháp Alex Hormozi ($100M Offers) — nhận input pains/gains/customer jobs theo Value Proposition Design (Osterwalder 2014) + sản phẩm/dịch vụ, rồi sinh ra: (1) markdown report tiếng Việt đầy đủ Value Equation scoring + Core Offer + 3-4 Bonus stack + Guarantee + Urgency + Pricing, (2) offer.json structured cho pipeline downstream (`ui-ux-pro-max` build sales page production-ready), (3) conversion copy block (headline + subheadline + CTA) sẵn sàng paste landing page. 2 input mode: (B) user paste sẵn pains + gains + product, (C) user chỉ có sản phẩm — skill phỏng vấn theo VPD framework để surface pain/gain trước. Bonus stack mode hybrid: skill brainstorm 5-7 candidate có justification value rồi user pick/chỉnh 3-4 cái. Tiếng Việt thuần (xưng anh/chị), giá VND charm pricing (X99K), 3-tier decoy structure. USE WHEN user says 'đóng gói offer', 'tạo offer', 'thiết kế offer Hormozi', 'grand slam offer', 'value stack', 'offer sta

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Nâng cấp copy sales page tiếng Việt — biến copy có sẵn (từ `offer.json` + `conversion-copy.md` của `/biz-offer-alex-hormozi`, HOẶC từ Next.js project đã build qua `ui-ux-pro-max`, HOẶC user paste block copy bất kỳ) thành **copy chất lượng cao chốt đơn**: headline punchy hơn, pain agitation đau hơn, mechanism rõ hơn, benefit cụ thể hơn, FAQ xử lý đúng objection của thị trường VN, CTA mạnh hơn. Skill này có 3 INTENSITY LEVEL: (1) **Polish** — light edit + power word + sửa nhịp; (2) **Conversion-optimized** — rewrite 5 block critical + tạo A/B variants cho hero/CTA; (3) **Sales-letter** — long-form story-driven full rewrite kèm P.S.. Mỗi section áp dụng đúng formula thuyết phục (PAR cho pain, BAB cho solution, FEP cho benefit, PVEN cho final CTA, Star-Chain-Hook cho testimonial). Output gồm 4 file: `copy-upgraded.md`, `copy-variants.md` (A/B test bank — 3 hero + 3 CTA + 3 final-CTA), `copy-changes.md` (diff Trước/Sau + lý do), `copy.json` (structured downstream). Giọng văn tiếng Việt thuầ

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

⚠️ DEPRECATED (2026-05-14) — Skill này KHÔNG còn trong pipeline chuẩn. Quy trình mới đã bỏ bước wireframe markdown trung gian: sau `/biz-offer-alex-hormozi` đi THẲNG sang `ui-ux-pro-max` để build Next.js sales page production-ready (có design language nhất quán: style + palette + font pairing, không phải Tailwind defaults). Lý do deprecate: wireframe markdown làm thêm 1 bước trung gian không tạo giá trị — `ui-ux-pro-max` đọc trực tiếp `offer.json` đã đầy đủ anchor + core + bonus + guarantee + urgency + pricing rồi ra HTML production luôn. Chỉ dùng skill này KHI user EXPLICITLY yêu cầu wireframe markdown để review/in/share trước khi build code (rare case). KHÔNG trigger trên các keyword 'tạo sales page', 'tạo landing page bán hàng' nữa — những keyword đó giờ trigger `ui-ux-pro-max`.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

End-to-end Sepay VietQR payment infrastructure cho landing page Next.js — guide user setup Sepay account + bank linking + scaffold đầy đủ payment flow trong project. Skill này xử lý 7 phase: (0) detect Next.js stack + **HỎI user chọn lead store backend** (Vercel KV hoặc Supabase Free Postgres — default recommend Supabase do free tier rộng hơn ~50× + có SQL + admin UI), (1) GUIDE user đăng ký Sepay account tại my.sepay.vn + link bank account VN (Vietcombank/Techcombank/MB/ACB/VPBank/BIDV/...) + lấy API key + setup webhook URL trên Sepay dashboard, (2A nếu chọn KV) setup Vercel KV (install `@vercel/kv` + KV namespace + 4 env vars KV_*), (2B nếu chọn Supabase) setup Supabase project (tạo project tại Singapore region + chạy migration SQL tạo 4 bảng leads/phone_index/order_counter/webhook_dedup với pg_cron TTL cleanup + RLS deny-all + lấy SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY + Vercel Cron ping `/api/health` mỗi 6 ngày chống auto-pause), (3) scaffold `lib/leads-store.ts` (thin re-export

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Setup Telegram bot notification cho thanh toán thành công từ Sepay webhook trong Next.js project. Skill này: (1) hướng dẫn user 3 bước tạo Telegram bot riêng qua @BotFather + lấy bot token + chat_id (qua @userinfobot cho chat 1-1, hoặc /getUpdates API cho group), (2) tạo helper function `sendTelegramNotification()` reusable trong `lib/telegram.ts`, (3) detect existing Sepay webhook route trong project (thường là `/api/sepay-webhook`, `/api/payment-success`, hoặc tương đương) và wire Telegram call CÙNG CHỖ với email auto-responder (Resend) — gửi parallel qua `Promise.allSettled` để Telegram fail KHÔNG block 200 response trả Sepay (Sepay sẽ retry webhook nếu nhận non-200, gây duplicate notification), (4) draft message format mặc định tiếng Việt: emoji + tên khách + SĐT + email + amount (charm pricing VND định dạng `499.000đ`) + tên sản phẩm + timestamp giờ VN dd/mm/yyyy HH:mm, (5) update `.env.local` với `TELEGRAM_BOT_TOKEN` + `TELEGRAM_CHAT_ID`, add vào `.gitignore`, nhắc user paste vào

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Convert a single MP3 voiceover file into a single HeyGen avatar lip-sync MP4 video. Single-purpose — no planning, no SRT, no chunking, no Remotion compositing. Hybrid path — REST upload (helper script) + HeyGen MCP for video creation, because the post-2026 MCP no longer exposes an asset-upload tool. Reads avatar look pool (`HEYGEN_AVATAR_LOOKS`) from `.env` and HeyGen API key (`HEYGEN_API_KEY`) for the upload step. USE WHEN user says "tạo video heygen từ mp3", "mp3 to heygen", "heygen mp4 từ audio", "convert mp3 sang heygen video", "tạo avatar video từ file mp3", "lip sync mp3 heygen", "biến mp3 thành video heygen", or any time the user has exactly one MP3 file and wants exactly one HeyGen avatar MP4 out.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Demand-side market research cho digital product / service ở Việt Nam — đo cầu thật + WTP + channel-market fit + defensibility qua keyword volume, marketplace sales (Shopee/Unica/Edumall/Gitiho/KyNa), community signal (FB groups, TikTok hashtag, Zalo OA), competitor pricing, unit economics — không phải macro PESTEL. Output: keyword portfolio + Niche Score 100 điểm 7-dimension có evidence + go/no-go decision + falsification protocol. Force triangulate ≥3 sources cho mỗi claim quan trọng. USE WHEN user says 'nghiên cứu thị trường', 'market research', 'validate niche', 'keyword research', 'demand validation', 'niche có nên làm không', 'có ai làm chưa', 'thị trường đủ lớn không', 'có lời không', 'chọn ngách', 'kiểm tra cầu'. Cũng trigger khi user mô tả 1 ý tưởng kinh doanh cụ thể và muốn check feasibility. Skill này KHÔNG fit: high-ticket transactional sale (BĐS, ô tô), B2B enterprise (sales cycle 6+ tháng), hyper-local geo micro-market (1 toà nhà, 1 phường). KHÔNG làm: macro PESTEL/Porter

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Transcribe an MP3 voiceover into an SRT subtitle file and a word-level segments JSON using local OpenAI Whisper. Input is a single MP3 path; output is `<stem>.srt` + `<stem>_segments.json` written next to the MP3 (or to a custom output dir). USE WHEN the user says 'extract srt from mp3', 'trích srt từ mp3', 'transcribe voiceover', 'tạo file srt và segments', 'whisper transcribe', 'bóc transcript có timestamp', 'extract voiceover segments', 'tách SRT từ audio', or any time a downstream skill (plan-short-video-edit, heygen-remotion-short-video-editor) needs an SRT + word-level segments JSON from a voiceover MP3 and one does not already exist.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Convert Vietnamese/English script text to MP3 voiceover using ElevenLabs TTS API. Calls POST /v1/text-to-speech/{voice_id}, streams audio bytes, writes MP3 directly. Locked to Hoang's brand voice ID by default. USE WHEN user says 'tạo mp3 elevenlabs', 'elevenlabs tts', 'eleven labs voice', 'text to speech elevenlabs', 'tạo voiceover elevenlabs', 'đọc text bằng elevenlabs', 'tts elevenlabs to mp3', 'eleven labs script to mp3', 'voiceover bằng elevenlabs', 'giọng elevenlabs'.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

End-to-end orchestrator: **script → final MP4 16:9 (1920×1080) podcast-keynote**.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

End-to-end short-video pipeline — từ kịch bản (Việt/Anh) ra MP4 TikTok/Reels 9:16 hoàn chỉnh. Orchestrator 3 phase ghép skill có sẵn — (1) TTS provider chọn được giữa `mkt-elevenlabs-tts-to-mp3` (default, voice của Hoàng) hoặc `mkt-video-script-to-mp3` (MiniMax speech-2.8-hd), (2) checkpoint user duyệt MP3, (3) `heygen-mp3-to-mp4` lip-sync avatar HeyGen, (4) delegate Phase 3 packaging cho sub-agent `mkt-full-video-phase3-packager` (transcribe + scene outline + checkpoint + fan-out N scene writers parallel + scaffold + preview Studio). API key + voice ID cho cả 2 provider lưu ở `.env`. USE WHEN user nói "tạo full video từ script", "script to tiktok video", "pipeline full video heygen + hyperframe", "tạo video từ kịch bản đến mp4", "elevenlabs heygen hyperframe full pipeline", "minimax heygen pipeline", "kịch bản ra video tiktok", hoặc có sẵn 1 script + (optional) ảnh b-roll và muốn ra MP4 9:16 đóng gói có captions, SFX, b-roll.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Build a TikTok/Reels/YouTube **landscape 16:9 (1920×1080)** short video from a pre-recorded talking-head MP4 using HyperFrames — transcribe Vietnamese audio, scaffold a complete preview-ready 1920×1080 project with a slide pane (1200px) on the left and a floating avatar frame on the right, GSAP timeline có SPLIT↔PIP transitions (slide full-screen + avatar PIP corner thumbnail), breathing yoyo zoom + beat-driven punch-in trên avatar, 5 scene compositions kiểu "tier-row" pattern (post-stack hook / chats-stack problem / hero-orb solution / counter-row recap / terminal-row CTA), optional cream-paper editorial infographic image slots với `<img onerror>` fallback, 6 SFX wired tại scene boundaries, **NO captions** (giọng avatar là spine). USE WHEN user nói "edit video 16:9 từ HeyGen MP4", "scaffold project landscape", "podcast keynote editor", "talking head + slide editor", "build hyperframes 1920×1080", "tạo project 16:9 từ avatar mp4", "scaffold 16:9 hyperframes", "hyperframe landscape vide

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Pipeline đóng gói: từ MP4 quay sẵn (talking head 9:16) tới HyperFrames preview project hoàn chỉnh có captions, SFX, zoom hooks, b-roll toàn cảnh có hiệu ứng rich, và CTA finale.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Audit bài Facebook / Reels / YouTube để phát hiện 4 downward drivers (over-branding, over-production, stock imagery, standardized aesthetic) + frequency-over-quality. Mỗi anti-pattern bị drop ~75% performance nếu hiện diện. USE WHEN user says 'audit content', 'check anti pattern', 'content có lỗi gì không', 'kiểm tra over branding', 'vì sao video bị chết', 'vì sao post không ai xem', 'content audit', 'kiểm tra chất lượng content'.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Tìm viral pattern ở ngành khác (bác sĩ, luật sư, tài chính, bất động sản, thủ công) có thể apply cho niche AI/automation của Hoang. Ngách AI educator VN còn ít format được khai thác — cross-industry adaptation là blue ocean. USE WHEN user says 'tìm format ngành khác', 'cross industry research', 'học format từ ngành khác', 'blue ocean format', 'tìm format chưa ai làm', 'adapt format từ niche khác', 'cross industry viral'.

lexuanthanhhy/MKT.LANDINGPAGE.SKILLS

Rewrite CTA kiểu autocratic (Mua ngay! Follow ngay! Đăng ký liền!) sang 3 variants Democratic / Benevolent / Laissez-faire — reach 85% dân số thay vì chỉ 5% (action-based). Áp dụng cho landing page, caption FB, CTA video, email. USE WHEN user says 'rewrite cta', 'sửa cta', 'cta không autocratic', 'viết lại kêu gọi hành động', 'cta cho landing page', 'cta nhẹ nhàng hơn', 'inclusive cta', 'cta democratic benevolent'.

Verwandte Skills