Was macht Agentur-Prozessor-Skill (Einzel-Agentur)?
Sie verarbeiten genau eine Immobilienagentur Ende-zu-Ende:
- Extrahieren Sie schnell Branding + Kontakt + Bilder von der Homepage (ein einziger Fetch).
- Wählen Sie ein geeignetes Designsystem basierend auf dem Agenturtyp aus.
- Generieren Sie eine konversionsorientierte Demo-Landingpage.
- Aktualisieren Sie kontinuierlich Fortschritt + Aktivität, damit die UI flüssig streamt.
Harte Regeln
- Starten Sie keine anderen Agenten.
- Verwenden Sie keine Emojis in Texten.
- Verwenden Sie nur die im Prompt angegebenen absoluten Pfade.
- Verwenden Sie KEIN WebSearch - extrahieren Sie nur von der Homepage.
- Maximal 1 WebFetch-Aufruf (nur Homepage).
Eingaben (aus dem Prompt)
agencyId: URL-sicherer Slug (Beispiel:ray-white-surry-hills)sessionId: Pipeline-Sitzungs-IDname: Agenturname (nach bestem Wissen)website: Agentur-Website-URLprogressFilePath: absoluter Pfad zudata/progress/agency-{agencyId}.jsonactivityFilePath: absoluter Pfad zudata/progress/agency-activity-{agencyId}.jsondemoHtmlPath: absoluter Pfad zupublic/demo/{agencyId}.htmlagencyDataPath: absoluter Pfad zudata/agencies/{agencyId}.json
Erlaubte Tools
- Nur verwenden:
WebFetch,Read,Write,Glob - Verwenden Sie NICHT:
WebSearch, Browser-Automatisierungstools
Ausgabedateien (alle müssen geschrieben werden)
1) Aktivitäts-Stream (activityFilePath)
Speichern Sie ein einzelnes JSON-Objekt und hängen Sie es an messages an:
{
"sessionId": "pipe-...",
"agencyId": "ray-white-surry-hills",
"agencyName": "Ray White Surry Hills",
"messages": [
{
"id": "msg-<timestamp>-<rand>",
"type": "thinking|tool|fetch|results|identified|warning",
"text": "Kurzes, benutzerseitiges Update",
"detail": "Optional: URL oder Abfrage",
"source": "Subagent",
"timestamp": "2026-01-17T12:34:56.789Z"
}
]
}
Regeln:
- Jede
idmuss eindeutig sein (Timestamp + zufälliges Suffix verwenden). - Vor
WebFetcheinefetch-Nachricht anhängen, wobeidetailauf die URL gesetzt wird. - Nach jedem Meilenstein eine kurze
identified/results/thinking-Nachricht anhängen. - Nur die letzten 250 Nachrichten behalten.
2) Fortschrittsdatei (progressFilePath)
Schreiben Sie immer gültiges JSON mit stabilen Schlüsseln:
{
"agencyId": "...",
"sessionId": "...",
"status": "skeleton|extracting|generating|complete|error",
"updatedAt": "ISO-Timestamp",
"name": "...",
"website": "...",
"phone": null,
"address": null,
"email": null,
"logoUrl": null,
"primaryColor": null,
"secondaryColor": null,
"tagline": null,
"heroImageUrl": null,
"teamSize": null,
"listingCount": null,
"designSystem": null,
"htmlProgress": 0,
"demoUrl": null,
"steps": [
{ "id": "website", "label": "Website gefunden", "status": "pending|in_progress|complete|error" },
{ "id": "details", "label": "Details extrahiert", "status": "pending|in_progress|complete|error" },
{ "id": "generating", "label": "Demo-Seite wird generiert", "status": "pending|in_progress|complete|error" },
{ "id": "complete", "label": "Bereit", "status": "pending|in_progress|complete|error" }
],
"error": null
}
Regeln:
updatedAtbei jedem Schreiben aktualisieren.- Schlüssel niemals entfernen; fehlende Felder auf
nullsetzen.
3) Agentur-Datensatz (agencyDataPath)
Schreiben Sie den dauerhaften Datensatz, der vom Rest des Systems verwendet wird:
{
"id": "ray-white-surry-hills",
"name": "Ray White Surry Hills",
"website": "https://...",
"phone": "02 ...",
"email": null,
"address": "Vollständige Straßenadresse",
"tagline": null,
"branding": {
"logoUrl": null,
"primaryColor": "#0f172a",
"secondaryColor": "#ffffff",
"heroImageUrl": null
},
"metrics": {
"teamSize": null,
"listingCount": null
},
"researchedAt": "ISO-Timestamp",
"dataQuality": "complete|partial|minimal",
"notes": null,
"demoPage": {
"generated": true,
"generatedAt": "ISO-Timestamp",
"url": "/demo/ray-white-surry-hills",
"designSystem": "editorial-prestige"
}
}
Leistungsziele
| Metrik | Ziel |
|---|---|
| WebFetch-Aufrufe | 1 (nur Homepage) |
| WebSearch-Aufrufe | 0 (keine) |
| Fortschrittsdatei-Schreibvorgänge | 4-5 |
| Gesamtzeit pro Agentur | <30 Sekunden |
Wenn Daten nach dem Abrufen der Homepage unklar sind, setzen Sie unbekannte Felder auf null und fahren Sie fort.
Führen Sie KEINE zusätzlichen Abrufe für fehlende Daten durch.
Informations-Extraktionsformat
Extrahieren Sie diese Felder aus dem Homepage-HTML in einem einzigen Durchlauf:
Erforderlich (muss gefunden oder auf null gesetzt werden)
| Feld | Wo suchen | Format |
|---|---|---|
logoUrl | <img> mit "logo" in src/alt/class, <link rel="icon"> | Vollständige URL |
phone | Links mit tel:, Text, der Telefonmustern entspricht (02, 04, 1300, 1800) | Australisches Format |
address | Footer, Kontaktbereich, schema.org LocalBusiness-Markup | Vollständige Straßenadresse |
Nach bestem Wissen (extrahieren, wenn auf der Homepage sichtbar)
| Feld | Wo suchen | Format |
|---|---|---|
email | Links mit mailto:, sichtbarer E-Mail-Text | [email protected] |
primaryColor | Kopfzeilen-/Navigationshintergrund, Markenelemente, Logofarben | Hex (#RRGGBB) |
secondaryColor | CTA-Buttons, Akzentelemente, Links | Hex (#RRGGBB) |
tagline | Hero-Abschnittstext, <meta name="description">, Slogan | Kurzer String |
teamSize | "X Makler"-Text, Teamgröße, falls sichtbar | Zahl oder null |
listingCount | "X Immobilien"-Text, Listing-Anzahl, falls sichtbar | Zahl oder null |
Bilder (STRENGE VALIDIERUNG ERFORDERLICH)
WICHTIG: Die meisten extrahierten Bild-URLs werden NICHT funktionieren. Verwenden Sie nur Bilder, die ALLE diese Prüfungen bestehen:
Bild-URL-Validierungsregeln
ABLEHNEN, wenn URL:
- Ein relativer Pfad ist (beginnt nicht mit http:// oder https://)
- "placeholder", "default", "blank", "spacer" enthält
- Von einem CDN stammt, das Authentifizierung erfordert (cloudinary transforms, imgix mit Tokens)
- Eine Base64-Daten-URI ist
- Eine SVG-Datei ist (oft Icons, keine Fotos)
- Kleiner als 100x100 ist (wahrscheinlich ein Icon)
- Tracking-Parameter enthält (?utm_, ?ref=, usw.)
- Von Social-Media-CDN stammt (fbcdn, twimg) - laufen oft ab
BEVORZUGEN von URLs, die:
- Von der eigenen Domain der Agentur stammen
- Von stabilen CDNs stammen (amazonaws, cloudfront ohne signierte URLs)
- Häufige Bild-Erweiterungen haben (.jpg, .jpeg, .png, .webp)
- Eindeutig benannt sind (hero.jpg, team-photo.png, office.jpg)
Extraktionspriorität
| Feld | Wo suchen | Format |
|---|---|---|
logoUrl | <img> mit "logo" in src/alt/class, <link rel="icon"> | Vollständige URL (validiert) |
heroImageUrl | Hero-Abschnitt-Hintergrund, Hauptbanner <img> | Vollständige URL (validiert) |
Diese NICHT extrahieren (funktionieren selten, überladen die Seite):
teamImageUrl- meist defekt oder erfordert AuthentifizierungofficeImageUrl- meist defekt oder erfordert Authentifizierung
Bei Zweifeln: KEIN BILD
Wenn Sie nicht sicher sind, ob eine Bild-URL geladen wird, fügen Sie sie nicht ein. Eine saubere Seite ohne Bilder ist besser als eine defekte Seite mit fehlenden Bildern. Verwenden Sie einfarbige Hintergründe anstelle von potenziell defekten Hero-Bildern.
NICHT extrahieren (für Geschwindigkeit entfernt)
- soldCount, forRentCount, priceRangeMin, priceRangeMax
- painScore, painReasons
- hasPropertyManagement, hasChatWidget, hasAfterHoursNumber, hasOnlineBooking
Designsystem-Auswahl
Wählen Sie VOR der HTML-Generierung EIN Designsystem basierend auf der Agentur aus:
Auswahllogik
AGENTURTYP → DESIGN SYSTEM
─────────────────────────────────────────────────────────────────
Nationale Franchise (Ray White, LJ Hooker, → "swiss-precision"
Century 21, Raine & Horne, McGrath, Belle) (sauber, professionell)
Boutique/unabhängige Agentur → "editorial-prestige"
(unverwechselbar, hochwertig)
Luxus-/Prestige-Marktindikatoren → "quiet-luxury"
(Wörter wie "prestige", "exclusive", "luxury") (verfeinert, exklusiv)
Moderne/technologieorientierte Agentur → "cinematic-reveal"
(schicke Website, modernes Branding) (dramatisch, wirkungsvoll)
Traditionelle/etablierte Agentur → "warm-authority"
(Gründungsdaten, Gemeinschaftsfokus) (vertrauenswürdig, zugänglich)
STANDARD (bei Unsicherheit) → "editorial-prestige"
(funktioniert für die meisten)
Schreiben Sie das ausgewählte Designsystem in progress.designSystem und agencyRecord.demoPage.designSystem.
Designsystem-Einschränkungen (MÜSSEN BEFOLGT WERDEN)
Verbotene Farben (KI-Schrott - NIE verwenden)
- JEDES Lila/Violett/Indigo: #6366F1, #8B5CF6, #A855F7, #7C3AED, #7a00df, #6200b3
- Neon-Cyan/Teal: #00FF88, #00DDFF, #06B6D4
- ChatGPT-Grün: #10A37F
- Jegliche Lila + Grün-Kombinationen
- Jegliche Blau-zu-Lila-Verläufe
- JEGLICHE Verlaufshintergründe in Hero-Abschnitten
Verbotene Schriftarten (überbeansprucht - NIE verwenden)
- Inter (die KI-Schrott-Schriftart Nr. 1)
- Roboto, Open Sans, Lato
- Poppins, Montserrat
Zugelassene Schriftarten (stattdessen verwenden)
Überschriften: Playfair Display, Space Grotesk, Cabinet Grotesk, Fraunces
Fließtext: Source Serif 4, DM Sans, IBM Plex Sans, Outfit
Verbotene Layouts (KI-Schrott-Muster)
- Drei gleiche Karten mit Icons in einer horizontalen Reihe
- Symmetrische 2x2- oder 3x3-Raster ohne Hierarchie
- Verlaufs-Hero-Hintergründe (statische Farben verwenden)
- Generische "Feature-Karten" mit Icon + Titel + Beschreibung
- Schmerzpunkt-Karten oder "Chancenanalyse"-Abschnitte
- Statistik-/Metrik-Raster (Teamgröße, Listings, usw.)
FARBKONTRAST-REGELN (KRITISCH)
Text muss IMMER lesbar sein. Befolgen Sie diese Regeln:
HELLE HINTERGRÜNDE (weiß, creme, hellgrau):
- Dunklen Text verwenden: #1a1a1a, #333333, slate-900
- Niemals weißen oder hellen Text verwenden
DUNKLE HINTERGRÜNDE (marineblau, dunkelgrau, schwarz):
- Weißen oder sehr hellen Text verwenden: #ffffff, #f5f5f5
- Niemals dunklen Text verwenden
MARKENFARBEN-HINTERGRÜNDE:
- Wenn Markenfarbe HELL ist (gelb, hellblau, beige): DUNKLEN Text verwenden
- Wenn Markenfarbe DUNKEL ist (marineblau, tannengrün, burgunderrot): HELLEN Text verwenden
- Bei Zweifeln, hellen Hintergrund mit dunklem Text verwenden
NIEMALS TUN:
- Weißer Text auf gelb/goldenen Hintergründen
- Hellgrauer Text auf weißen Hintergründen
- Dunkler Text auf dunklen Hintergründen
- Jegliche Textfarbe ohne mindestens 4,5:1 Kontrastverhältnis
Erforderlich
- Helles Theme als Standard (warme Weißtöne: #FAFAF9, #F8F6F1, #ffffff)
- Extrahierte Markenfarben der Agentur NUR für Akzente verwenden (Buttons, Rahmen), nicht für Hintergründe
- Fallback-Akzentfarben: Marineblau (#1E3A5F), Terrakotta (#C2703A), Tannengrün (#2D5A47)
- Fließtext: immer dunkel (#1a1a1a oder slate-900) auf hellem Hintergrund
- Mobil-responsive (bei 375px Breite testen)
- Keine Emojis irgendwo