mcp-generate
Use when user says "mcp:generate", "generiere emails", "email generation", "MCP workflow", "generate emails for campaign", or triggers /mcp:generate.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when user says "mcp:generate", "generiere emails", "email generation", "MCP workflow", "generate emails for campaign", or triggers /mcp:generate.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | mcp-generate |
| description | Use when user says "mcp:generate", "generiere emails", "email generation", "MCP workflow", "generate emails for campaign", or triggers /mcp:generate. |
Dieser Skill orchestriert die vollautomatische AI-Variablen-Generierung fuer Leads via MCP Business Tools. Claude generiert AI-Variablen basierend auf Research, Qualification und Screenshots, und speichert sie via save_lead_variables. Email-Body und Subject werden NICHT durch diesen Skill erzeugt — sie sind in der Email-Sequenz hardcoded und werden beim CSV-Export live mit den Variablen gerendert.
Hinweis zur Parallelisierung: Wenn dein Client parallele Subagents unterstuetzt (z.B. Claude Code), spawne pro Lead einen Subagent wie beschrieben. Andernfalls arbeite die Leads sequentiell mit exakt denselben Schritten ab — das Ergebnis ist identisch, nur langsamer.
1. list_campaigns -> Kampagne identifizieren (oder campaign_id aus Argument)
|
2. list_leads(campaign_id, limit={batch_size})
-> {batch_size} Leads mit Basisdaten (~0.5 KB/Lead)
|
3. Fuer jeden Lead: Sub-Agent spawnen (parallel, bis zu {batch_size} gleichzeitig)
-> Jeder Agent: get_lead_data() -> generiert Variablen -> save_lead_variables()
|
4. Batch-Report: "Batch 1/N done, X/Y leads processed"
|
5. Naechster Batch: list_leads erneut (remaining > 0?)
|
6. Fertig: "Y Leads verarbeitet, Variablen bereit fuer Review"
| Eingabe | Verhalten |
|---|---|
/mcp:generate | Zeigt Kampagnen via list_campaigns, User waehlt |
/mcp:generate 76 | Startet direkt fuer Kampagne 76 |
generiere emails fuer kampagne 76 | Startet direkt fuer Kampagne 76 |
Wenn KEINE campaign_id als Argument uebergeben wurde:
list_campaigns auf (MCP Tool)leadCounts.needs_email_generation > 0Wenn campaign_id als Argument uebergeben wurde: Direkt zur Batch-Groesse-Abfrage.
Batch-Groesse abfragen:
Frage den User: "Wie viele Leads pro Batch? (Default: 10)"
Merke dir die Antwort als {batch_size}. Wenn der User einfach Enter drueckt oder nichts sagt: batch_size = 10.
Dann weiter zu Phase 2.
Rufe auf:
list_leads(
campaign_id = <ID>,
limit = {batch_size}
)
Merke dir aus der Response:
campaign.name und campaign.idtotal (Gesamtzahl zu verarbeitender Leads)remaining (verbleibend nach diesem Batch)leads[] mit IDs und BasisdatenWenn leads leer ist: "Keine Leads zur Verarbeitung. Alle Leads haben bereits generierte Variablen." -> STOP.
Fuer JEDEN Lead im Batch einen Agent spawnen. Verwende das Agent-Tool mit:
subagent_type: nicht gesetzt (general-purpose)mode: "bypassPermissions"run_in_background: true (fuer echte Parallelitaet)name: "gen-{lead.company}" (gekuerzt auf 20 Zeichen)description: "Generate variables for {lead.company}"WICHTIG: Spawne ALLE Agents eines Batches in EINEM Message-Block, damit sie parallel laufen.
Fuer jeden Lead den folgenden Prompt zusammenbauen. Ersetze die Platzhalter mit den tatsaechlichen Daten aus der list_leads Response:
Du generierst AI-Variablen fuer einen Lead via MCP Tools.
KAMPAGNE: {campaign.name} (ID: {campaign.id})
LEAD: {lead.company} (ID: {lead.id})
## Schritte
1. Rufe get_lead_data(campaign_id={campaign.id}, lead_id={lead.id}) auf
2. Lies den emailGeneration.systemPrompt sorgfaeltig — er definiert Ton, Stil und Kontext
3. Analysiere Research, Qualification und Custom Attributes
4. Analysiere die Screenshots visuell (falls URLs vorhanden und dein Client Bilder laden kann)
5. Generiere fuer JEDE Variable in emailGeneration.variables[] den Text gemaess ihrem Prompt
6. REVIEW — Pruefe JEDE generierte Variable gegen diese Checkliste:
- Umlaute korrekt geschrieben? (Ä/Ö/Ü/ä/ö/ü/ß — NIEMALS AE/OE/UE/ae/oe/ue/ss)
- Keine internen Metriken erwaehnt? (SEO-Score, Overall-Score, Fit-Level, Need-Flags, Dimension-Scores, Opportunity Score, ranked Keyword)
- Keine HTTPS/SSL-Behauptungen? ("ohne HTTPS", "kein SSL" etc.)
- Kein harscher Deficit-Sprech? (ausbaufähig, nicht erreichbar, fehlerhaft, unzureichend, kaum nutzbar, schwach, schlecht)
- Anrede konsistent ueber alle Variablen? (durchgehend formal ODER team-basiert, nie gemischt)
- Kein "vorallem"? (korrekt: "vor allem")
- Keine Leerzeilen am Anfang oder Ende einer Variable?
- Jede Variable unter 10.000 Zeichen?
Falls ein Kriterium verletzt: Korrigiere die Variable und pruefe erneut.
7. Speichere via save_lead_variables(campaign_id={campaign.id}, lead_id={lead.id}, variables=JSON-String)
WICHTIG: variables ist ein JSON-STRING. ALLE Variablen aus emailGeneration.expectedOutput muessen enthalten sein.
Screenshots sind in der lead.screenshots[] Liste als relative URLs enthalten (z.B. /api/research-artifacts/abc-123), Basis ist die ListM8-Server-URL.
Wenn dein Client Bilder von URLs laden und visuell analysieren kann: Screenshots laden und in die Generierung einbeziehen. Andernfalls: Screenshots ueberspringen und nur auf Basis von Research-Text, Qualification und Custom Attributes generieren — im Report vermerken: "Screenshots nicht einbezogen, Text-basierte Generierung."
Warte bis ALLE Sub-Agents des Batches fertig sind (sie laufen im Background — du wirst benachrichtigt).
Zaehle:
status: "success")status: "error" oder Agent-Fehler)Zeige Batch-Report:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Batch {batch_nr}/{total_batches} abgeschlossen
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Verarbeitet: {processed}/{total_leads} Leads
Erfolg: {success_count} | Fehler: {error_count}
Verbleibend: {remaining}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Wenn remaining > 0: Zurueck zu Phase 2 (naechster list_leads Aufruf).
Wenn remaining == 0 oder keine Leads mehr: Zeige Abschluss-Report:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MCP Generate abgeschlossen
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Kampagne: {campaign.name} (ID: {campaign.id})
Gesamt verarbeitet: {total_processed} Leads
Erfolg: {total_success} | Fehler: {total_errors}
Status: Verarbeitete Leads auf "pending_review" gesetzt
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Naechster Schritt: /mcp:verify — Variablen pruefen und freigeben
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Keine Parameter. Gibt alle Kampagnen des Users zurueck.
Response-Felder:
campaigns[].id — Kampagnen-IDcampaigns[].name — Namecampaigns[].leadCounts.needs_email_generation — Anzahl Leads in der Generierungs-Queuecampaigns[].leadCounts.pending_review — Anzahl Leads mit generierten, noch nicht freigegebenen Variablencampaigns[].leadCounts.approved / .rejected — Final-Statuscampaigns[].aiVariables[] — Konfigurierte AI-Variablen (Name + sortOrder)| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
campaign_id | int | required | Kampagnen-ID |
limit | int | 10 | Anzahl Leads (1-200) |
fit_level | string | "qualified" | Qualification-Filter |
research_status | string | "researched" | Research-Status-Filter |
campaign_status | string | "processing" | Campaign-Status-Filter |
qualification_status | string | '' | Qualification-Status-Filter: '' (alle), 'pending' (inkl. nie qualifiziert), 'processing', 'completed', 'failed' |
Gibt nur Basisdaten zurueck: id, email, company, website, city, phoneNumber, score, qualification (fitLevel, category, summary).
WICHTIG: Der Default campaign_status="processing" ist korrekt fuer den Generierungs-Workflow (= Leads mit Status "Ausstehend").
| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
campaign_id | int | required | Kampagnen-ID |
lead_id | int | required | Lead-ID |
Gibt vollen Generierungs-Context zurueck:
qualification (fitLevel, category, summary, snapshot)research (text, bestEmail, decisionMaker, contactRecommendation)screenshots[] (type, viewport, url, label)customAttributes (key-value Paare)emailGeneration.systemPrompt — Der aufgeloeste System-PromptemailGeneration.variables[] — Variablen mit aufgeloesten PromptsemailGeneration.expectedOutput — JSON-Schema der erwarteten Ausgabe (Variablen-Namen)| Parameter | Typ | Default | Beschreibung |
|---|---|---|---|
campaign_id | int | required | Kampagnen-ID |
lead_id | int | required | Lead-ID |
variables | string | required | JSON-String mit generierten Werten |
variables-Format: "{\"hallo\": \"...\", \"intro\": \"...\"}"
Verhalten: Persistiert eine neue LeadAIVariableValue-Version pro Variable (vorherige Versionen bleiben als Historie erhalten). Setzt LeadCampaignStatus.status = pending_review. Beruehrt KEINE Email-Steps (Body/Subject werden beim CSV-Export live aus den Variablen gerendert).
Success-Response:
{
"status": "success",
"lead_id": 456,
"campaign_id": 123,
"version": 1,
"variables_saved": 2,
"campaign_status": "pending_review"
}
Error-Response bei fehlenden Variablen:
{
"status": "error",
"message": "Variable(s) missing from submission: 'intro'",
"expected_variables": ["hallo", "intro"],
"received_variables": ["hallo"]
}
/mcp:verify)Die folgenden Tools werden im Verification-Workflow verwendet, NICHT in der Generierung:
LeadCampaignStatus = approved, ready fuer CSV-Export)reason (LeadCampaignStatus = rejected, vom CSV-Export ausgeschlossen)Details: siehe /mcp:verify Skill.
| Fehler | Aktion |
|---|---|
list_leads gibt leere leads[] | "Keine Leads in Queue" -> STOP |
| Sub-Agent save_lead_variables Error | Fehler notieren, weitermachen mit naechstem Lead |
| Sub-Agent Timeout/Crash | Als Fehler zaehlen, im Report erwaehnen |
| Alle Agents eines Batches fehlgeschlagen | Warnung ausgeben, User fragen ob fortfahren |
| Netzwerk/MCP-Verbindungsfehler | 1x Retry, dann STOP mit Fehlermeldung |
Kein automatischer Retry einzelner Leads — fehlgeschlagene Leads koennen spaeter mit /mcp:generate erneut verarbeitet werden (sie haben noch keinen pending_review-Status und tauchen wieder in list_leads auf).
campaign_status="processing") auf.Use when user says "mcp:campaign", "erstelle kampagne via mcp", "kampagne per mcp anlegen", "campaign blueprint erstellen", "bearbeite kampagne via mcp", or triggers /mcp:campaign.
Use when user says "mcp:import", "importiere leads via mcp", "leads hochladen mcp", "csv leads importieren", "outscraper import mcp", or triggers /mcp:import.
Use when user says "mcp:pipeline", "kompletter mcp durchlauf", "leads komplett verarbeiten", "qualify research generate", "alles in einem lauf mcp", "full pipeline", or triggers /mcp:pipeline.
Use when user says "mcp:qualify", "qualifiziere leads", "lead qualifizierung", "qualify leads", "leads bewerten", or triggers /mcp:qualify.
Use when user says "mcp:research", "recherchiere leads", "lead research", "research leads", "leads recherchieren", or triggers /mcp:research.
Use when user says "mcp:verify", "verify emails", "email verification", "pruefe emails", "email review", "emails pruefen", or triggers /mcp:verify.