业主面访材料智能生成技能
概述
输入用户上传的原始素材(房源图片/PDF/Word、市场分析报告、业主录音或转写文稿),自动输出标准化业主面访方案 PPT(.pptx,16:9)。核心能力:多格式解析、录音文稿专项分析(卖房原因/卖点/客群/价格预期)、精确图片裁剪(趋势图/竞品截图)、pptxgenjs 生成 PPT。
适用场景:经纪人业主上门面访/登门拜访前制作展示方案。
输出:标准 .pptx,PowerPoint/WPS 可直接打开编辑、投屏、打印;图表数据可二次修改。
工作流程(七步:收集→搜索→验证→结构化→JSON→PPTX→交付)
第一步:收集素材并分类处理
使用文件工具读取用户上传的所有文件,按类型分类处理三类核心资料:
房源基础信息类:
- 图片文件(房源信息截图、房产证、户型图等):
1. 优先使用Read工具直接识别图片中的文字和表格(多模态)
2. 降级:Read 不可用时用 easyocr OCR(PIL 读中文路径 + reader.readtext(np.array(img)))
提取内容:面积、户型、楼层、朝向、装修、产权、配套、楼龄、税费、挂牌价、小区名、维护人
- PDF/Word文档:用 Read 读取转为文本,提取结构化房源信息
市场行情信息类:
- 图片文件(市场行情截图、小区挂牌价对比图):同图片识别方式
提取内容:同小区挂牌价、近期成交价、片区供需、客户流向、市场热度
- PDF分析报告(如"市场竞争策略分析报告"等多页数据图表报告):
1. 优先 Read 识别报告文字与数据
2. 降级:PyMuPDF(fitz)提取报告内所有原始图片,存到 pdf_analysis/pageN_imgM.ext
3. 重要原则:报告中已有的"近18个月趋势图"、"挂牌价/成交价图"、"小区数据图"、"竞品对比图"等原始图表,必须保留为图片资源直接嵌入PPT对应页面,不重新生成图表,避免失真
- PDF/Word文档(市场调研报告、竞品分析):Read 读取,提取市场数据、竞品分析、成交趋势
业主沟通录音/文稿类:
- 录音文件(.mp3/.wav/.mp4/.webm):用 linkspace-asr <录音文件路径> --output <输出文本文件路径> 转文字
- 录音转写文稿/文字记录(.txt/.doc/.docx 或直接粘贴文字):Read 直接读取
提取内容:卖房原因、价格预期、决策人、核心顾虑、自我评价、时间要求
录音文稿专项分析规则(当上传录音文稿或录音转写文本时执行):
读取文稿后按 4 维度分析,结果存入 transcript_analysis.json(结构见下),用于第四步整合进房源分析模块:
- 卖房原因:识别卖房动机(置换/移民/资金周转/投资/学区变更等),提取业主原话加引号引用;与已有信息冲突时以业主原话为准。例:业主说"孩子要出国读书,房子空着也是浪费"→ "孩子出国,房屋闲置"
- 核心卖点:识别业主自述房屋优势(采光/户型/装修/配套/交通等),提取具体细节("下午3点客厅还能晒到太阳"、"走路5分钟到地铁");与已有卖点对比:文稿新增→补充、业主更详细→用原话替换、已有且未提及→保留。每个卖点必须带业主原话或具体数据
- 客群画像:从业主对买家的描述/带看反馈识别客群;结合房源特征推断(附近有学校→学区刚需、面积大配套全→改善、小户型低总价→刚需年轻、投资客看过→投资)。与已有画像冲突时以文稿为准,描述要具体("附近3公里内有2所重点小学,适合学区刚需家庭")
- 价格预期:识别业主明确提到的价格数字,记录表态(急售可让步/价格坚定/看市场反馈);与已有数据不同时以业主说的价格为准
transcript_analysis.json 结构:
{
"selling_reason": { "quote": "业主原话", "reason": "提炼原因", "source": "transcript" },
"core_selling_points": [ { "point": "卖点", "quote": "原话", "action": "added|updated|kept" } ],
"target_customers": { "description": "画像", "evidence": "依据", "action": "updated|kept" },
"price_expectation": { "amount": "价格", "attitude": "急售可让步|价格坚定|看市场反馈", "source": "transcript" }
}
重要原则:上传文件提取的所有原始数据保存为验证基准;录音文稿分析结果优先级高于网络搜索和默认推断。
经纪人信息默认占位符(无需询问用户,直接写入 agent_info):
- 姓名 X经理 / 电话 联系方式1XXXXXXXXXX / 门店 XX房产XX门店 / 地址 XX市XX区XX路XX号
- 重要:交付 PPT 时提醒用户,封面和结尾页经纪人信息为占位符,需在 PowerPoint 中手动修改
第二步:补充市场行情数据与城市元素搜索
用户上传的市场数据不完整或缺失时,用 webSearch 补充最近 1 年数据:
- 搜索词示例:"[小区名称] 最近成交价 2026"、"[片区名称] 房价走势 最新"、"[城市][区域] 二手房市场行情 2026"
- 收集:同小区挂牌价/成交价、片区供需与热度、周边竞品房源
城市地标元素搜索(封面/结尾页背景用):
1. webSearch 搜索 "[城市名] 标志性建筑 地标"、"[城市名] 城市天际线 特色",提取 3-5 个地标及城市特色
2. 保存 city_info.json:city_name / landmarks(3-5个) / city_description(1-2句) / city_keywords
生成城市背景图片(city_cover_bg.png,封面/结尾页核心元素,必须完成):
1. 加载 ImageGen:ToolSearch → tool_names: ["ImageGen"]
2. prompt 规则:专业高端房产封面背景;含城市地标剪影/天际线;扁平插画或水彩风格;浅色商务高级色调(米白/浅灰绿/古铜金系),明亮通透,避免深色;横向宽幅底部留白;16:9
- 示例:"Professional real estate presentation cover background, [城市名] city skyline silhouette, landmarks including [地标1, 地标2], flat illustration style, light ivory white and deep green and bronze gold color scheme, bright airy, business elegant, minimalist, wide horizontal composition, bottom area clean for text overlay, 16:9 aspect ratio"
3. 保存到工作目录 city_cover_bg.png
4. ImageGen 不可用降级:方案A WebSearch 下载城市天际线高清图;方案B PPT 中用 pptxgenjs 绘制简化建筑剪影(浅蓝矩形群组)
第三步:数据验证与一致性检查(强制执行)
- 建立基准:处理/搜索前,先把第一步从上传文件提取的所有原始数据存为
uploaded_data_baseline.json(房源基础信息、用户市场数据、录音关键信息) - 搜索后对比:网络补充数据后,将关键字段(小区名称、面积、户型、楼层、价格区间)与基准逐项对比
- 冲突处理(上传数据优先):
- 小区名/面积/户型/楼层不一致 → 一律采用上传数据
- 搜索价格与业主预期差异超 20% → 标注差异、采用业主价格
- 录音文稿分析结果优先级高于网络搜索 - 记录差异(提效:仅当实际出现字段冲突时才写入
data_validation_log.txt,无冲突则跳过文件写入直接进入下一步):格式[字段] 上传: <值> | 抓取: <值> | 采用: 上传数据 - 严重冲突/验证失败 → 向用户报告并请求确认后再继续
第四步:提炼核心信息并构建结构化数据
基于收集到的所有信息,提炼并组织成结构化JSON数据。参考references/output_structure.md中定义的完整格式,构建包含六大固定模块的数据:
0. 去AI味写作规范(强制执行)
PPT文案必须避免AI生成感,让业主觉得是真人经纪人写的方案。以下规则在所有文字生成中强制执行:
禁用表达清单(出现即视为不合格,必须改写):
- "综上所述"、"值得注意的是"、"总而言之"等AI过渡词
- "我们将为您提供"、"致力于为您"、"竭诚为您服务"等空泛承诺
- "该房源具有"、"本房源享有"等公文式表达 → 改为"这套房子"、"您家"
- "具有显著优势"、"具备极高性价比"等空洞修饰 → 用具体数据替代
- "优化居住体验"、"提升生活品质"等口号式表达
- "通过多维度分析"、"经过深度调研"等自夸式表述
- "敬请关注"、"敬请期待"等客套话
- "赋能"、"抓手"、"闭环"等互联网黑话
- 任何以"作为"开头的句子
必须做到的写作要求:
1. 口语化:用面对面跟业主聊天的语气写文案,不是写报告
- ✅ "这个小区近半年成交了12套,均价在5万3左右"
- ❌ "该小区近半年成交量达12套,成交均价约为53000元/㎡"
2. 数据具体:所有描述必须带具体数字,不用"较高"、"较低"、"较多"等模糊词
- ✅ "楼层是18/32层,正南朝向,下午采光特别好"
- ❌ "楼层适中,朝向优越,采光充足"
3. 引用业主原话:从录音转写中提取业主的真实表达,加引号引用
- ✅ 业主说:"主要是孩子上学方便,走路5分钟就到学校"
- ❌ 业主卖房原因:教育资源配套优质
4. 本地化表达:使用当地房产术语和片区俗称
- 如北京说"南北通透",上海说"房型正气",广州说"向南单位"
5. 一句话说清:每个卖点/理由用一句话讲完,不堆砌形容词
6. 避免排比句:不使用"既...又...还..."等AI典型排比结构
7. 人称统一:全篇以"您"称呼业主,以"我"或"我们"自称经纪人
文案审校流程:
生成所有文字内容后,逐条对照禁用表达清单检查,发现违规则改写。改写后再次确认:
- 是否有具体数据支撑
- 是否像真人说话
- 是否有空泛修饰词
- 是否有AI典型句式
1. 市场介绍模块(多层级分析,3 个层级各占一页)
整合思路:将原"市场介绍"扩展为"近18个月市场分析"专题,从三个层级(城市、区域、商圈)展示市场走势,每个层级独立一页(城市成交趋势/区域成交趋势/商圈成交数据),每页全幅展示该层级趋势图。每页只放一张趋势图,不展示额外的成交均价、月均、涨幅、成交周期、供需比等数据卡。
数据来源:用户上传的市场分析报告图片(如PDF中提取的趋势图)。识别并保留原图,不要重新生成图表。
图片裁剪规则:报告中的城市/区域/商圈三级趋势图通常合并在一张大图中,用 scripts/precise_crop.py 裁剪为 3 张独立图:
1. 扫描定位:python scripts/precise_crop.py pdf_analysis/page1_img1.jpeg --mode scan_only(确认三级边界)
2. 自动拆分:--mode auto_split --count 3 --output_dir pdf_analysis --prefix 18m_section
3. 按扫描结果重命名为 city_18m.jpeg / district_18m.jpeg / subarea_18m.jpeg(对应城市/区域/商圈)
4. 拆分不精确时改用 crop_range 按明确坐标裁剪(坐标值由 scan_only 输出确定,以扫描输出为准,不做估算试错)
裁剪执行原则(提效):全部 6 张裁剪图(趋势图3张 + 挂牌价图1张 + 小区数据图1张 + 竞品前3套1张)一次性连续执行完再进入下一步,避免逐图穿插其他工作;优先用 auto_split / crop_top_n 自动模式,仅自动结果不精确时才用 scan_only 坐标 + crop_range 手动定位
三个子页面(各占一页,每页仅展示 1 张趋势图,不展示任何额外数据卡):
- (1)城市成交趋势(近18个月):city_18m.jpeg(城市/直辖市/省份二手房走势)
- (2)区域成交趋势(近18个月):district_18m.jpeg(房源所在行政区/区域走势)
- (3)商圈成交数据(近18个月):subarea_18m.jpeg(房源所属商圈/小区簇走势)
市场描述用聊天口吻(如"您这个小区最近半年卖得不错,成交了12套"),不用"市场表现优异"、"供需关系良好"等空泛表述。
2. 房源分析模块
从录音转写文本/录音文稿和文档中提取:
- 卖房原因:置换/移民/资金周转/投资等,影响定价策略
- 核心卖点:3-5个最突出优势(户型/朝向/楼层/装修/配套/学区等)
- 目标客群:刚需/改善/学区/投资,匹配推广渠道
- 价格预期:业主心理价位,对比市场行情合理性
录音文稿整合规则(上传了录音文稿时执行,将 transcript_analysis.json 结果并入本模块):
1. 卖房原因:优先引用业主原话(加引号);与文稿 selling_reason 不一致时以文稿为准
2. 核心卖点:遍历 core_selling_points 按动作合并——added 追加末尾、updated 用文稿版替换(原话丰富描述)、kept 保留;总数控制在 3-5 个
3. 目标客群:target_customers.action == "updated" 时用文稿结果替换;描述须基于文稿证据(业主提到的客户特征、带看反馈)
4. 价格预期:用业主明确提到的数字;记录态度(急售可让步/坚定/看市场反馈);对比市场合理性
未上传录音文稿时:卖房原因、核心卖点、客群画像基于房源基础信息和市场数据推断生成,标注"基于房源信息推断"。
去AI味:卖房原因引用业主原话、卖点用具体数据("18楼正南,下午3点客厅还能晒到太阳")、客群描述具体化("附近3公里有2所重点小学")。
1.5 挂牌价与成交价关系模块(独立页面,第5页)
数据来源:市场分析报告中的"挂牌价与成交价关系图"原图。
展示:左侧原图(保留原图)+ 右侧分析结论卡片(挂牌价均值、成交价均值——金色Arial数字突出;议价幅度——商务蓝;议价空间说明口语化)
关键洞察:挂牌/成交价差、客户实际成交折让比例、对业主定价的参考建议
去AI味:"这小区平均挂牌 145 万,实际成交 138 万,议价幅度约 4.8%",不用"价格弹性"、"价格发现机制"等术语。
1.6 小区数据模块(独立页面,第6页)
数据来源:市场分析报告中的"小区数据"原图(户型分布、面积段、楼栋信息等)。
展示:顶部小区核心信息卡(小区名、地址、建成年代、总户数、容积率、绿化率、物业类型、产权年限)+ 中部原图(保留原图)+ 底部 3-4 个关键指标卡(主力户型占比、主力面积段、平均成交周期、成交活跃度)
去AI味:"这小区主推 89 ㎡两房,占了成交量的 65%",不用"主力户型为"等报告式语言。
1.7 竞品房源对比模块(独立页面,第7页)
数据来源:市场分析报告中的"竞品房源对比图"原图。
图片裁剪:竞品图通常含多套房源,只保留前 3 套——用 scripts/precise_crop.py:先 --mode scan_only 扫描各套边界,再 --mode crop_top_n --count 3 --output_dir pdf_analysis --prefix competitor_top3 裁出前3套(不精确时用 crop_range 按坐标手动定位),保存为 competitor_top3.jpeg
展示:顶部竞品分析结论(一句话总结本小区 vs 前3套竞品的优劣势)+ 主体 competitor_top3.jpeg 原图;不展示右侧对比维度卡
去AI味:"咱们这个小区单价 1.38 万,比周边 3 个竞品都低 1000-2000 块,性价比很明显",不用"具备相对价格优势"等官话。
(1)定价策略(必须包含三档定价):
- 快速成交定价:价格略低于市场价,能够快速出手,适合急售
- 定价金额
- 定价理由说明
- 市场价格:参照市场价格与房源自身优势(装修、楼层)综合评估
- 定价金额
- 定价理由说明
- 目标价:参照业主预期价格,可能略高于市场价,建议根据市场及带看反馈调整
- 定价金额
- 定价理由说明
- 定价逻辑:说明基于同小区近期成交价和周边竞品分析的测算依据
- 议价空间:建议预留的议价百分比
标注说明:所有价格支持在PowerPoint中直接手动修改。
(2)线上展示优化:
列出全套线上房源包装动作:
- 拍摄高清房源照片(采光好的时段,广角镜头)
- 制作VR全景看房
- 撰写吸睛标题和详细描述
- 标注核心卖点标签
- 提升平台房源分值与曝光流量
(3)房源实地美化建议:
根据房屋现状给出方案:
- 常规深度清洁(窗户擦拭、地板打蜡、异味处理)
- 软装整理(摆放绿植、更换明亮灯具、收纳整理)
- 针对房屋户型、采光、格局等硬伤,提供简易低成本美化整改方案(墙面修补、门窗维修等)
(4)精准推广渠道(按客群匹配):
结合房源目标客群匹配对应推广渠道:
- 刚需年轻客群:小红书、短视频自媒体(抖音/快手)、微信社群、租房转售群
- 改善家庭客群:门店端口推广、老客户推荐、同小区业主群
- 学区客户:家长群体、教育论坛、学区房专题推广
- 高端客群:圈层定向推介、高端社区活动、私域资源对接
标注说明:渠道按需匹配,支持根据实际情况调整。
(5)其他补充推广动作:
补充临时性、辅助性推广举措:
- 举办房源开放日活动
- 制作房源推广短视频
- 联合周边商圈异业合作
- 设置老带新推荐奖励
4. 双方权责与配合事项模块
经纪人后续执行动作:
- 明确跟进节奏(每日/每周反馈进度)
- 及时同步市场动态和客户反馈
- 统筹安排客户带看
- 执行线上线下推广计划
- 协调交易流程各环节
业主需配合事项(固定7项):
1. 陪同经纪人查看竞品房源,共同梳理提炼房源核心卖点
2. 配合编辑短视频文案、拍摄自媒体宣传内容,从自住体验角度讲述房屋故事
3. 进入专属推广协作群,同步市场动态、接收客户一手反馈
4. 共同协商设置带看激励、成交激励;可选择承担部分契税、中介费、物业费,或赠送闲置家电/家具作为福利
5. 按时参与房源聚焦会、空看活动,为同行讲解房屋优势与居住体验
6. 客户带看期间,配合接待、答疑讲解居住感受,拉近客户距离
7. 日常保持房屋干净整洁,保障带看体验
5. 完整交易流程模块
标准化流程步骤(固定7步):
1. 房源上架:签署委托协议、录入系统、开始推广
2. 客户带看:预约看房、现场讲解、收集反馈
3. 价格协商:客户出价、议价沟通、达成一致
4. 签订合同:买卖双方签署正式合同、确定条款
5. 资金监管:首付款进入监管账户、保障资金安全
6. 面签过户:办理贷款、缴纳税费、产权过户
7. 物业交割:水电煤过户、钥匙交接、尾款结算
6. 交易风险提醒模块
必须涵盖三类风险:
(1)产权风险:
- 风险描述:房产证真伪、抵押状况、共有产权人等问题
- 规避措施:核查房产证真伪及抵押情况,确认产权清晰无争议
(2)定价风险:
- 风险描述:定价过高流失客户,议价空间设置不合理
- 规避措施:合理设置议价空间,避免因定价过高流失优质客户
(3)流程风险:
- 风险描述:贷款审批延误、过户时间拖延、政策变动
- 规避措施:关注贷款审批时效和过户环节,预防政策变动影响
重要原则:
- 所有内容必须基于用户上传的素材,不编造数据
- 语言口语化与专业化结合,适合直接向业主展示,像跟业主面对面聊天
- 核心信息(价格、卖点、渠道)重点标注
- 定价策略和推广渠道在文档中标注"可根据实际情况调整"
- 严格执行去AI味写作规范(见第四步第0节),生成后逐条审校
第五步:生成JSON数据文件
使用文件工具将结构化数据写入JSON文件,保存到当前工作目录下的 owner_visit_data.json。
确保JSON格式符合references/output_structure.md的定义,包含所有必需字段和子模块,特别是:
- 定价策略包含三档定价(快速成交定价、市场价格、目标价)
- 交易流程包含完整7步
- 风险提醒涵盖三类风险(产权、定价、流程)
- 经纪人信息(agent_info):使用通用占位符(X经理、联系方式1XXXXXXXXXX、XX房产XX门店、XX市XX区XX路XX号)
- 城市信息(city_info):包含城市名称、地标列表、城市描述、背景图路径
第六步:生成PPTX演示文稿
使用pptxgenjs(Node.js库)生成标准PowerPoint格式的.pptx文件。严格按照 15 页幻灯片结构排版(基础 10 页;上传市场分析报告时第2页拆为城市/区域/商圈 3 页趋势页,并扩展挂牌价成交价、小区数据、竞品对比 3 页)。
(1)环境准备
首先确保pptxgenjs可用:
# 在工作目录中初始化Node.js环境并安装pptxgenjs
cd <当前工作目录>
npm init -y
npm install pptxgenjs
(2)配色方案与设计规范
选择与房地产行业匹配的高端专业配色方案,确保PPT具备现代感与高级质感。
完整色板:
| 用途 | 色值 | 说明 |
|---|---|---|
| 主色(墨绿) | 345040 |
标题栏底色、关键色块 |
| 标题深墨绿 | 294134 |
封面主标题、页面标题、卡片标题、强调文字数字 |
| 主色中调 | 5F7A6B |
渐变过渡、二级标题栏、图表主色 |
| 主色灰绿 | 9CA99E |
图表辅助色、强调装饰 |
| 极浅灰绿底 | EDF1EB |
封面/结束页提亮渐变、降级方案底色、浅标签底 |
| 辅色(古铜金) | C0A16F |
价格数字、重点标注、装饰线 |
| 辅色浅米金 | E9DCC4 |
金色渐变端点、浅金底块 |
| 浅灰绿白背景 | F4F6F5 |
内容页整体背景 |
| 卡片白 | FFFFFF |
卡片底色 |
| 浅灰绿卡片底 | EFF2EF |
交替卡片底色、区块分隔 |
| 正文深灰 | 333333 |
正文文字主色 |
| 正文中灰 | 666666 |
辅助说明文字 |
| 分割线灰绿 | E3E8E3 |
分割线、边框 |
| 浅装饰灰 | A8A49D |
次要装饰、脚注 |
| 警示红 | C0392B |
风险提醒标题、关键警告 |
| 警示浅红底 | FDEDEC |
风险卡片背景色 |
| 翠绿 | 2E8B57 |
正面数据、卖点优势 |
| 翠绿浅底 | E8F8F0 |
正面信息卡片背景 |
| 活力橙 | E67E22 |
快速成交定价标签、高亮 |
| 天空蓝 | 4A90C2 |
市场价标签、流程图连线 |
| 白色 | FFFFFF |
文字反色、纯白卡片 |
渐变定义(通过在幻灯片上叠加多个半透明矩形实现):
- 封面:城市地标背景图片铺底 + 全幅半透明白色(透明度45%)提亮 + 底部半透明浅米金(E9DCC4透明度60%) + 顶部半透明极浅灰绿(EDF1EB透明度55%),形成明亮通透的浅色渐变,确保深色文字可读性
- 结束页:城市地标背景图片铺底 + 全幅半透明白色(透明度55%) + 中央半透明浅米金(E9DCC4透明度50%),突出中心文字和联系卡片
- 标题栏渐变:底色345040,右侧叠加5F7A6B渐变淡出
- 降级方案:当城市背景图片不可用时,使用极浅灰绿EDF1EB底色 + 简化城市天际线剪影(高度错落的9CA99E半透明矩形群组)替代
卡片阴影效果(通过在卡片底部+右侧偏移2-3pt处先绘制同大小的000000矩形,透明度8-10%):
- 大卡片阴影:偏移(x:0.04, y:0.04),透明度10%
- 小卡片阴影:偏移(x:0.03, y:0.03),透明度8%
装饰元素规范:
- 顶部装饰线:C0A16F,高度3-4pt,位于标题栏下方,宽幅与内容区等宽
- 页码标记:345040圆角正方形(24x24pt) + 白色数字(10pt, Arial)
- 章节分割线:E3E8E3实线,1.5pt,用于分隔左右栏
- 步骤序号圆形:345040填充正圆(直径32pt) + 白色数字(16pt, Arial Bold),带2pt白色描边
- 重点色条:C0A16F圆角矩形(宽4pt),用于卡片左侧重点标识
字体规范(增强层级体系):
| 层级 | 字体 | 大小 | 粗细 | 用途 | 颜色 |
|---|---|---|---|---|---|
| H1 | Microsoft YaHei | 42-48pt | Bold | 封面主标题 | 294134(浅底深墨绿字) |
| H2 | Microsoft YaHei | 30-36pt | Bold | 页面大标题 | FFFFFF(标题栏上) 或 294134 |
| H3 | Microsoft YaHei | 22-26pt | Bold | 卡片标题/区块标题 | 294134 |
| H4 | Microsoft YaHei | 17-20pt | Bold | 子区块标题 | 333333 |
| Body-L | Microsoft YaHei | 15-17pt | Regular | 正文内容 | 333333 |
| Body-M | Microsoft YaHei | 12-14pt | Regular | 辅助正文 | 666666 |
| Body-S | Microsoft YaHei | 10-11pt | Regular | 脚注/来源标注 | A8A49D |
| Price | Arial | 30-38pt | Bold | 定价金额 | C0A16F |
| Number | Arial | 20-24pt | Bold | 步骤编号/数据强调 | FFFFFF(墨绿底反白) |
设计原则(增强版):
- 封面与结束页:使用城市地标背景图片+浅色提亮遮罩,营造城市归属感与明亮高端感;封面底部展示经纪人姓名+电话+门店信息;结束页设置独立联系卡片,突出经纪人个人品牌
- 内容页:统一使用浅灰绿白背景(F4F6F5) + 深灰文字,确保舒适可读性;顶部墨绿标题栏提供视觉锚点
- 卡片式布局:所有信息块使用白色圆角矩形卡片(圆角radius: 0.08),配合微阴影增加层次感与悬浮效果
- 顶部标题栏:每页顶部墨绿矩形标题栏(高度0.9-1.1英寸,345040),白色标题文字左对齐,底部配3pt古铜金装饰线
- 分栏设计:内容页优先使用左右分栏(60/40或50/50),用浅色分割线或间距区分,避免大面积纯文字
- 数字与金额:使用古铜金大号Arial字体突出,配合浅米金底色块营造强视觉焦点;金额数字前加¥符号
- 边距规范:内容区域左右边距0.6英寸,卡片之间间距0.15-0.2英寸,文字与卡片边缘内边距0.15英寸
- 视觉节奏:封面/结束页浅色提亮+古铜金装饰,内容页浅灰绿白背景+墨绿标题栏,整体明亮通透,靠墨绿与古铜金色块的交替营造节奏感,杜绝大面积深色
- 丰富装饰:每页至少3个以上视觉元素(色块/图表/装饰线/形状/图标),杜绝纯文字页面
- 高亮强调:关键数据/卖点使用浅米金或翠绿色块背景衬托,风险信息使用警示浅红底+红色左边框
(3)标准大纲结构(15 页:基础 10 页 + 上传报告扩展 5 页,不得遗漏)
基础 10 页(未上传市场分析报告时):
1. 封面页 — 主标题为「XX小区业主售房方案」(XX小区根据房源信息或市场分析数据中的小区名自动填充,模板按 cover_community_name → community_data.name → cover_subtitle 前缀依次取值)+ 副标题(小区·户型·面积)+ 城市地标背景 + 经纪人信息 + 日期
2. 市场行情分析 — 片区概况描述 + 价格走势图 + 4个指标卡
3. 房源分析(上) — 卖房原因与核心卖点(3-5个)
4. 房源分析(下) — 目标客群与价格预期
5. 推广方案(上) — 定价策略(三档定价卡片)+ 线上优化
6. 推广方案(下) — 推广渠道(按客群分类)+ 美化建议
7. 双方权责 — 经纪人动作 + 业主配合事项(7项)
8. 交易流程 — 完整交易步骤(7步时间轴)
9. 风险提醒 — 潜在风险(三类)与规避措施
10. 结束页 — 城市地标背景 + 感谢语 + 经纪人联系卡片(姓名/电话/门店/地址)
上传市场分析报告时,扩展为 15 页(第2页拆为 3 页层级趋势页,并插入以下 3 页,后续顺延):
- 第2页:城市成交趋势(近18个月)——层级色条(level_name/level_value)+ 全幅趋势图,无额外数据卡
- 第3页:区域成交趋势(近18个月)——同上布局
- 第4页:商圈成交数据(近18个月)——同上布局
- 第5页:挂牌价与成交价关系(保留原图)
- 第6页:小区数据(保留原图)
- 第7页:竞品房源对比(仅前3套竞品裁剪图,无右侧对比维度卡)
- 后续页面(房源分析、推广方案、交易流程、风险提醒、结束页)顺延为第8~15页
回退至 10 页的条件:用户未上传市场分析报告时,按基础模块的 10 页结构生成。
(4)生成PPTX的Node.js脚本编写规范
不手写脚本:直接复制 assets/generate_pptx_template.js 为 generate_pptx.js(或直接运行模板文件),然后按以下规则填充:
- 数据读取:脚本自动读取
./owner_visit_data.json(第五步生成),数据解析部分无需改动 - 填充内容:把模板中每页占位内容替换为
owner_visit_data.json中的实际数据;模板每页注释已标明所需字段与布局 - 图片:模板按
data.*.image_path/./city_cover_bg.png读取裁剪图与背景图;原图缺失时模板已内置降级(占位文字/天际线剪影),勿自行改动 - 禁止改动:颜色常量
C、字体预设F、辅助函数(addHeaderBar / addCard / addAccentCard / addStepCircle / addPageNumber / addGoldLine / addSkyline / formatPhone / addCityBg / addCityLabel)与页面骨架一律保留,仅替换文字与数据(addPageNumber(slide)已改为自动递增编号,调用时不传页码参数) - 页数自动切换:模板
hasReport分支自动处理——上传市场分析报告时输出 15 页(含城市/区域/商圈 3 页趋势 + 挂牌价/小区数据/竞品对比页),未上传时回退 10 页;勿手动增删页面 - 图表:模板已用
addChart绘制无报告版价格走势图,禁止重新设计图表
各页面内容要点(布局代码模板已实现,此处仅提示每页数据来源):
| 页 | 标题 | 数据来源 |
|---|---|---|
| 1 | 封面 | agent_info(姓名/电话/门店)、city_info、cover_subtitle(小区·户型·面积) |
| 2 | 城市成交趋势(近18个月)(有报告) | 18m_analysis.city(level_name/level_value + city_18m.jpeg 原图);无报告时本页为市场行情分析:description + chart_data 走势图 + 4个 key_metrics 指标卡 |
| 3 | 区域成交趋势(近18个月)(有报告) | 18m_analysis.district(level_name/level_value + district_18m.jpeg 原图) |
| 4 | 商圈成交数据(近18个月)(有报告) | 18m_analysis.subarea(level_name/level_value + subarea_18m.jpeg 原图) |
| 5 | 挂牌价与成交价(有报告) | market_intro.price_relation(挂牌均价/成交均价/议价幅度/insight + 原图) |
| 6 | 小区数据(有报告) | community_data(名称/板块/年代/户数/容积率/绿化率/物业费 + 原图 + key_metrics) |
| 7 | 竞品房源对比(有报告) | competitor_comparison(summary + 前3套裁剪图 competitor_top3.jpeg) |
| 8 | 房源分析(上):卖房原因+核心卖点 | property_analysis.selling_reason(引业主原话)/ core_selling_points(3-5个) |
| 9 | 房源分析(下):目标客群+价格预期 | property_analysis.target_customer_groups(客群卡片)/ price_expectation |
| 10 | 定价策略(三档定价) | promotion_plan.pricing_strategy(fast_deal/market/target 三档 + 定价逻辑 + 议价空间) |
| 11 | 渠道与美化 | promotion_plan.online_optimization(5项)/ promotion_channels(按客群4组)/ beautification_suggestions |
| 12 | 双方权责 | responsibilities.agent_actions(5项)/ owner_cooperation(7项) |
| 13 | 交易流程(7步) | transaction_process(step/title/description) |
| 14 | 风险提醒(3类) | risk_warnings(risk_type/description/prevention) |
| 15 | 结束页+联系卡片 | agent_info(含 store_address) |
填充后运行:node generate_pptx.js,输出 业主面访方案.pptx。
(5)执行生成
编写完整的Node.js脚本后,执行生成:
cd <当前工作目录>
node generate_pptx.js
运行环境要求:使用系统提供的Node.js(22.22.2或24.14.0),确保pptxgenjs已安装。
(6)PPTX质量检查(QA)
生成后必须完成以下检查(任一项不过即修正后重新生成):
内容完整性:
- 用 markitdown 提取文本核对:pip install "markitdown[pptx]" 后执行 python -m markitdown "业主面访方案.pptx"(重点核对第2~7页图片页标题与关键数字,文本页抽查即可)
- 六大模块齐全;上传报告时为 15 页(含城市/区域/商圈趋势 3 页 + 挂牌价/小区数据/竞品对比 3 页),未上传时 10 页
- 三档定价完整、交易流程 7 步、风险 3 类含规避措施、业主配合 7 项
- 页码连续正确(模板自动编号,从第2页起显示)
原图与裁剪:
- 第2~4页三张层级趋势图、第5页挂牌价对比图、第6页小区数据图、第7页前3套竞品裁剪图均来自用户上传报告原图,无压缩失真、有金色边框、下方标注"数据来源:用户上传的市场分析报告"
- 第2~4页每页仅展示对应层级趋势图(全幅),无额外数据卡;第7页无右侧对比维度卡
视觉规范:
- 浅色商务色板统一;每页顶部商务蓝标题栏+金色装饰线;卡片圆角(0.08)+微阴影;三档定价卡片顶带橙/蓝/金
- 封面/结束页:城市背景图+浅色提亮遮罩+左上角城市标签;结束页联系卡片(姓名金色+电话Arial粗体)
- 页码右下角;风险卡浅红底+红左边框+翠绿规避;流程步骤圆与箭头对齐;文件大小 >50KB
内容真实性:
- 全部内容基于用户上传素材,市场数据来自上传文件或网络搜索,无编造
去AI味与录音文稿:
- 全文无禁用表达;卖房原因引业主原话;卖点有具体数据;人称"您"统一
- 上传录音文稿时:已生成 transcript_analysis.json 并按 added/updated/kept 合并;文稿结果优先级高于网络搜索
经纪人占位符:
- 封面底部与结束页联系卡片显示占位符(X经理/联系方式1XXXXXXXXXX/XX房产XX门店);交付时提醒手动修改
第七步:交付演示文稿
使用presentFiles工具将生成的PPTX演示文稿交付给用户:
presentFiles(["<当前工作目录>/业主面访方案.pptx"])
同时在正文中说明:
使用方式:
- 直接打开:用 PowerPoint 或 WPS Office 打开,即可查看和编辑
- 投屏展示:连接投影仪或大屏后,按F5进入全屏放映模式
- 打印输出:文件 → 打印,建议选择"横向"布局和"适应页面"
- 二次编辑:所有文字、图表、数据均可直接在PowerPoint/WPS中修改
- 分享发送:.pptx文件可通过微信、邮件等方式直接发送给业主
注意事项:
- 定价策略和推广渠道标注"可根据实际情况调整",支持手动修改
- 图表数据可在PowerPoint中右键编辑数据源
- 建议在面访前预览一遍,根据实际情况微调内容
- 文件可永久保存,支持反复使用
- 封面和结尾页的经纪人信息(姓名、电话、门店)为通用占位符,务必在PowerPoint中手动修改为实际信息后再使用
终止规则
若在生成过程中触发以下任一条件,立即终止并告知用户:
- 生成的PPT缺失六大模块中任意一个模块或其子模块
- 定价策略未提供三档定价建议(快速成交定价、市场价格、目标价)
- 交易流程步骤少于7步
- 风险提醒未涵盖产权/定价/流程三类风险或缺失规避措施
- 最终输出格式非.pptx标准PowerPoint格式
- 业主配合事项少于7项
- 当用户上传市场分析报告时,生成的PPT页数不足 15 页(缺少城市/区域/商圈趋势页/挂牌价成交价/小区数据/竞品对比等扩展页面)
- 市场趋势页(第2~4页)未将复合趋势图裁剪为3张独立图片,或展示了额外数据卡(成交均价/月均/涨幅等)
- 竞品对比页未从原图中裁剪前3套竞品,或展示了右侧对比维度卡
- 分析报告原图出现明显压缩失真或外侧无金色边框装饰
触发终止规则后,说明具体缺失项,并要求重新生成或补充完善。
资源说明
scripts/precise_crop.py
精确图片裁剪工具,支持三种模式:
- scan_only:扫描图片内容块,输出坐标范围(用于调试和确认裁剪位置)
- auto_split:自动检测内容块,将复合图拆分为N段(适用于趋势图三等分)
- crop_top_n:自动检测内容块,只保留前N个块合并为一张图(适用于竞品前3套)
- crop_range:按明确坐标范围裁剪(适用于自动检测不精确时的手动定位)
依赖:PIL (Pillow)、numpy。在Python虚拟环境中运行。
references/output_structure.md
定义业主面访方案的完整JSON数据结构,包含所有字段说明、数据类型、生成原则。生成数据前必须参考此文档确保结构完整。
特别包含:
- 经纪人信息结构(agent_info):使用通用占位符(X经理、联系方式1XXXXXXXXXX等),生成后由用户手动修改
- 城市信息结构(city_info):城市名称、地标列表、城市描述、背景图路径
- 多层级市场分析结构(market_intro.18m_analysis):city / district / subarea 三个层级对象,每个仅含层级名称、区域名与裁剪后的趋势图路径(无 key_metrics),三个层级各占一页
- 挂牌价与成交价关系结构(market_intro.price_relation):原图路径 + 各项数据 + 解读
- 小区数据结构(community_data):基础信息 + 原图路径 + 关键指标
- 竞品对比结构(competitor_comparison):分析结论 + 前3套竞品裁剪图路径(无 comparison_points)
- 录音文稿分析结构(transcript_analysis):卖房原因、核心卖点、客群画像、价格预期的文稿分析结果,用于补充或修改房源分析模块数据
- 三档定价策略的详细结构
- 完整交易流程的7步定义
- 三类风险提醒的标准格式
- 业主配合事项的固定7项内容
使用示例
用户上传房源信息后,典型执行流程:
1. 提取素材(图片多模态识别/OCR、PDF 提取原图、Word/录音转写、录音文稿直接读取)
2. 如上传录音文稿:执行 4 维度分析生成 transcript_analysis.json
3. 如上传PDF分析报告:用 scripts/precise_crop.py 裁剪 3 张趋势图 + 前3套竞品截图
4. 搜索补充市场数据 + 城市地标 + 生成城市背景图
5. 数据验证(上传数据优先,录音文稿优先级高于网络搜索)
6. 构建 JSON(15 页大纲 + agent_info占位符 + city_info + 原图路径 + transcript_analysis),执行去AI味审校,写入 owner_visit_data.json
7. 复制 assets/generate_pptx_template.js 为 generate_pptx.js,填充数据后 node generate_pptx.js
8. 按第六步 QA 检查,交付 .pptx 并提醒手动修改经纪人占位符
最终用户获得:
- 标准PowerPoint格式的专业演示文稿(.pptx)
- 可用PowerPoint/WPS直接打开编辑
- 支持投屏展示的标准16:9宽屏比例
- 基础 10 页 + 上传分析报告时扩展为 15 页(城市/区域/商圈趋势 3 页 + 挂牌价成交价/小区数据/竞品对比 3 页)
- 市场趋势页(第2~4页)使用用户上传的报告原图全幅展示(保留原数据精度)
- 图表和数据可二次编辑的专业文件