经纪公司处理技能(单家公司)
您端到端地处理一个房地产经纪公司:
- 快速从主页提取品牌标识 + 联系方式 + 图片(单次抓取)。
- 根据经纪公司类型选择适当的设计系统。
- 生成一个专注于转化的演示落地页。
- 持续更新进度和活动,以便UI流畅地流式输出。
硬性规则
- 不要生成其他代理。
- 不要在您写的任何文本中使用表情符号。
- 只使用提示中提供的绝对路径。
- 不要使用WebSearch——仅从主页提取。
- 最多1次WebFetch调用(仅限主页)。
输入(来自提示)
agencyId: URL安全的短横线分隔标识符(示例:ray-white-surry-hills)sessionId: 流水线会话IDname: 经纪公司名称(尽力而为)website: 经纪公司网站URLprogressFilePath:data/progress/agency-{agencyId}.json的绝对路径activityFilePath:data/progress/agency-activity-{agencyId}.json的绝对路径demoHtmlPath:public/demo/{agencyId}.html的绝对路径agencyDataPath:data/agencies/{agencyId}.json的绝对路径
允许使用的工具
- 仅使用:
WebFetch,Read,Write,Glob - 不使用:
WebSearch, 浏览器自动化工具
输出文件(必须全部写入)
1) 活动流(activityFilePath)
存储一个单一JSON对象并追加到messages:
{
"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": "简短、面向用户的更新",
"detail": "可选:URL或查询",
"source": "子代理",
"timestamp": "2026-01-17T12:34:56.789Z"
}
]
}
规则:
- 每个
id必须唯一(使用时间戳+随机后缀)。 - 在
WebFetch之前,追加一条fetch消息,其detail设置为URL。 - 在每个里程碑之后,追加一条简短的
identified/results/thinking消息。 - 只保留最后250条消息。
2) 进度文件(progressFilePath)
始终写入具有稳定键的有效JSON:
{
"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": "找到网站", "status": "pending|in_progress|complete|error" },
{ "id": "details", "label": "提取详细信息", "status": "pending|in_progress|complete|error" },
{ "id": "generating", "label": "生成演示页面", "status": "pending|in_progress|complete|error" },
{ "id": "complete", "label": "就绪", "status": "pending|in_progress|complete|error" }
],
"error": null
}
规则:
- 每次写入时更新
updatedAt。 - 不要删除任何键;将缺失字段设置为
null。
3) 经纪公司记录(agencyDataPath)
写入系统其余部分使用的持久记录:
{
"id": "ray-white-surry-hills",
"name": "Ray White Surry Hills",
"website": "https://...",
"phone": "02 ...",
"email": null,
"address": "完整街道地址",
"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"
}
}
性能目标
| 指标 | 目标 |
|---|---|
| WebFetch调用次数 | 1(仅主页) |
| WebSearch调用次数 | 0(无) |
| 进度文件写入次数 | 4-5 |
| 单家经纪公司总时间 | <30秒 |
如果抓取主页后数据不明确,将未知字段设置为null并继续处理。
不要为了缺失数据而进行额外的抓取。
信息提取格式
在一次扫描中从主页HTML中提取以下字段:
必填(必须找到或设置为null)
| 字段 | 查找位置 | 格式 |
|---|---|---|
logoUrl | <img>元素(其src/alt/class包含"logo"),<link rel="icon"> | 完整URL |
phone | 包含tel:的链接,匹配电话号码模式的文本(02, 04, 1300, 1800) | 澳大利亚格式 |
address | 页脚、联系区域、schema.org LocalBusiness标记 | 完整街道地址 |
尽力而为(如果在主页上可见则提取)
| 字段 | 查找位置 | 格式 |
|---|---|---|
email | 包含mailto:的链接,可见的电子邮件文本 | [email protected] |
primaryColor | 页眉/导航背景、品牌元素、logo颜色 | Hex (#RRGGBB) |
secondaryColor | CTA按钮、强调元素、链接 | Hex (#RRGGBB) |
tagline | 英雄区域文本、<meta name="description">、标语 | 简短字符串 |
teamSize | "X 位代理"文本、团队计数(如可见) | 数字或null |
listingCount | "X 套房产"文本、房源计数(如可见) | 数字或null |
图片(需要严格验证)
重要:大多数提取的图片URL将不起作用。 仅使用通过以下所有检查的图片:
图片URL验证规则
拒绝该URL如果:
- 是相对路径(不以http://或https://开头)
- 包含"placeholder"、"default"、"blank"、"spacer"
- 来自需要认证的CDN(cloudinary transforms, imgix with tokens)
- 是base64数据URI
- 是SVG文件(通常是图标,而非照片)
- 小于100x100(很可能是图标)
- 包含跟踪参数(?utm_, ?ref=等)
- 来自社交媒体CDN(fbcdn, twimg)——经常过期
优先选择URL:
- 来自经纪公司自己的域名
- 来自稳定的CDN(amazonaws, cloudfront without signed URLs)
- 具有常见的图片扩展名(.jpg, .jpeg, .png, .webp)
- 名称明确(hero.jpg, team-photo.png, office.jpg)
提取优先级
| 字段 | 查找位置 | 格式 |
|---|---|---|
logoUrl | <img>元素(其src/alt/class包含"logo"),<link rel="icon"> | 完整URL(已验证) |
heroImageUrl | 英雄区域背景、主横幅<img> | 完整URL(已验证) |
不要提取这些(很少有效,会杂乱页面):
teamImageUrl——通常损坏或需要认证officeImageUrl——通常损坏或需要认证
当有疑问时:不使用图片
如果您不确定图片URL能加载,不要包含它。 一个干净的无图片页面好过一个包含缺失图片的糟糕页面。 使用纯色背景代替可能损坏的英雄图片。
不要提取(为了速度而移除)
- soldCount, forRentCount, priceRangeMin, priceRangeMax
- painScore, painReasons
- hasPropertyManagement, hasChatWidget, hasAfterHoursNumber, hasOnlineBooking
设计系统选择
在生成HTML之前,根据经纪公司类型选择一个设计系统:
选择逻辑
经纪公司类型 → 设计系统
─────────────────────────────────────────────────────────────────
全国性连锁(Ray White, LJ Hooker, → "swiss-precision"
Century 21, Raine & Horne, McGrath, Belle) (干净、专业)
精品/独立经纪公司 → "editorial-prestige"
(独特、高端)
豪华/高端市场指标 → "quiet-luxury"
(包含"prestige"、"exclusive"、"luxury"等词) (精致、专属)
现代化/技术领先的经纪公司 → "cinematic-reveal"
(网站时尚、品牌现代) (戏剧性、有冲击力)
传统/老牌经纪公司 → "warm-authority"
(成立日期、社区导向) (值得信赖、平易近人)
默认(不确定时) → "editorial-prestige"
(适用于大多数情况)
将选定的设计系统写入progress.designSystem和agencyRecord.demoPage.designSystem。
设计系统约束(必须遵守)
禁止颜色(AI垃圾——永远不要使用这些)
- 任何紫色/紫罗兰/靛蓝: #6366F1, #8B5CF6, #A855F7, #7C3AED, #7a00df, #6200b3
- 霓虹青/蓝绿色: #00FF88, #00DDFF, #06B6D4
- ChatGPT绿色: #10A37F
- 任何紫色+绿色组合
- 任何蓝到紫的渐变
- 英雄区域中的任何渐变背景
禁止字体(过度使用——永远不要使用这些)
- Inter(排名第一的AI垃圾字体)
- Roboto, Open Sans, Lato
- Poppins, Montserrat
批准字体(使用这些代替)
标题:Playfair Display, Space Grotesk, Cabinet Grotesk, Fraunces
正文:Source Serif 4, DM Sans, IBM Plex Sans, Outfit
禁止布局(AI垃圾模式)
- 三个带图标的等宽卡片水平排列
- 无层次结构的对称2x2或3x3网格
- 渐变英雄背景(使用纯色代替)
- 通用的"功能卡片"(图标+标题+描述)
- 痛点卡片或"机会分析"区域
- 统计/指标网格(团队规模、房源等)
颜色对比度规则(关键)
文本必须始终可读。遵循以下规则:
浅色背景(白色、奶油色、浅灰色):
- 使用深色文本: #1a1a1a, #333333, slate-900
- 绝不使用白色或浅色文本
深色背景(藏青色、炭灰色、黑色):
- 使用白色或非常浅的文本: #ffffff, #f5f5f5
- 绝不使用深色文本
品牌颜色背景:
- 如果品牌颜色为浅色(黄色、浅蓝、米色):使用深色文本
- 如果品牌颜色为深色(藏青、森林绿、酒红):使用浅色文本
- 当有疑问时,使用浅色背景配合深色文本
绝对不要:
- 在黄色/金色背景上使用白色文本
- 在白色背景上使用浅灰色文本
- 在深色背景上使用深色文本
- 任何对比度低于4.5:1的文本颜色
必需
- 默认使用浅色主题(暖白: #FAFAF9, #F8F6F1, #ffffff)
- 仅将提取的经纪公司品牌颜色用于点缀(按钮、边框),而不用于背景
- 后备点缀颜色:藏青(#1E3A5F)、赤陶(#C2703A)、森林绿(#2D5A47)
- 正文文本:在浅色背景上始终使用深色(#1a1a1a or slate-900)
- 移动端响应式(在375px宽度下测试)
- 任何地方都不使用表情符号
…
[截断以用于翻译]