2026-10-05 · 原文发布日
自动给Immoweb房源打分并推送捡漏提醒
这个免费n8n流程每天定时或手动启动,通过Apify接口抓取比利时房产网站Immoweb的房源,与Google Sheets里的历史记录合并去重、跟踪价格变化并计算每平米价、同类中位价、折扣和异常标记;再把新房源或降价房源连同评分规则发给Gemini,返回BUY/MAYBE/AVOID评级、理由和风险提示,写回Sheets,非AVOID且新出现或降幅达标的房源会推送到Slack。
原文要点
n8n免费模板20453。流程每天7:00定时或手动启动:调用Apify的Immoweb抓取API按配置数量取比利时房源(失败则发Slack警告)→与Google Sheets里的历史记录合并去重、追踪价格历史,计算每平米价、同类中位价、折扣与异常标记→把新房源或价格变动房源连同结构化评分规则发给Google Gemini,返回BUY/MAYBE/AVOID评级、分数、理由与风险红旗→结果写回Sheets行→评级非AVOID且为新房源或降幅达标的,发Slack提醒并生成可邮件发送的消息。需自配Apify、Sheets服务账号、Gemini、Slack四组凭据。
这次做成什么
搭一条「每日抓房源→与历史比价→AI评级→只把值得关注的新房/降价房推到Slack」的自动盯盘流程。本站设计一个不依赖真实Belgian房源的练习方案:先用合成的房源CSV代替Apify输出跑通去重、比价与评级逻辑,再接真实凭据。
准备什么
- n8n实例(自托管或云)
- Apify账号与API令牌(HTTP Header Auth),以及Immoweb搜索URL
- Google Sheets服务账号凭据,目标表格已共享给服务账号邮箱
- Google Gemini(Google PaLM)API凭据
- Slack API凭据与目标频道
具体怎么做
配置Apify抓取
创建Apify账号,把API令牌存为n8n的HTTP Header Auth凭据;在配置节点填入Immoweb搜索URL(在Immoweb上筛选城市、类型、价格区间后复制地址栏URL)和maxItems上限。先用小上限如20条试跑。
建立Google Sheets历史库
新建表格并建一个房源历史页,列至少包含listing_id、标题、价格、面积、每平米价、首次发现日期、最近价格、评级、状态。把表格共享给服务账号邮箱,在n8n里选Sheets服务账号凭据并填入表格ID与页名。
接入Gemini评级
添加Gemini API凭据,在发送评级的节点使用结构化rubric提示词(可用下方本站示例改写),要求Gemini只返回JSON:verdict(BUY/MAYBE/AVOID)、score、reasons、red_flags。配置节点里设定降价触发阈值,例如降幅达到5%才推送。
先用合成数据跑通逻辑
在Apify节点后临时用手动数据节点粘贴下方合成CSV转成的条目,验证:重复listing_id被合并、价格变化被记录、每平米价与中位价计算正确、Gemini返回的JSON能合并回房源行。确认无误后再接真实Apify。
接Slack并设定调度
添加Slack凭据并选目标频道;把触发器设为每天7:00(或你所在时区的早晨)。推送条件为:评级非AVOID,且(首次出现 或 降幅≥配置阈值)。抓取失败走另一条分支发警告到同一频道。
可直接复制的材料
合成房源测试数据
本站虚构数据;IM-1002含一次2万欧降价用于触发降价分支,替换为真实抓取结果前先跑通这三行
listing_id,title,price_eur,area_m2,city,first_seen,last_price_eur
IM-1001,布鲁塞尔两居室公寓,289000,85,Brussels,2026-09-01,289000
IM-1002,根特联排住宅,345000,120,Ghent,2026-08-15,365000
IM-1003,安特卫普一居室,199000,52,Antwerp,2026-10-04,199000Gemini评级rubric提示词
本站独立编写的评分规则示例,阈值可自行调整;与原模板节点的字段名需在导入后核对
你是比利时住宅置业分析助手。根据输入房源的以下字段评级:价格、面积、每平米价、同城市同类房源中位价、相对中位价的折扣率、价格历史、异常标记。规则:每平米价低于同类中位价10%以上且无异常标记→BUY;低于中位价0-10%或数据不全→MAYBE;高于中位价、异常标记为真、或面积/价格字段缺失→AVOID。只返回JSON:{"verdict":"BUY|MAYBE|AVOID","score":0-100,"reasons":["不超过3条中文理由"],"red_flags":["风险点,无则为空数组"]},不要输出JSON以外的文字。房源数据:{{ $json }}Slack推送消息模板
本站整理的字段映射与消息格式说明,具体字段名以导入模板为准;不提供可导入的工作流JSON
格式:【BUY】{title}|€{price_eur}|{area_m2}m²|€{price_per_m2}/m²|较同类中位价 {discount_pct}%|降价 {drop_pct}%|理由:{reasons}|链接:{url}。推送条件:verdict≠AVOID 且(is_new=true 或 drop_pct≥配置阈值)。抓取失败分支:「⚠️ Immoweb抓取失败:{error}」。输入与输出示例
本站虚构演示,评级由本站示例rubric推出,非作者运行结果,未调用真实接口
输入
合成数据中IM-1002根特联排:现价345000欧、120m²、原价365000欧(降5.5%),同城中位每平米3100欧,该房每平米2875欧(低7.3%),无异常标记。对应输出
Gemini返回(示意):{"verdict":"MAYBE","score":68,"reasons":["每平米价低于同城中位7.3%,未达10%的BUY线","近期降价5.5%,卖方让步信号","面积120m²适合家庭需求"],"red_flags":[]}。Slack推送:【MAYBE】根特联排住宅|€345000|120m²|€2875/m²|较中位价-7.3%|降价5.5%|理由:每平米低于中位、近期降价。做完检查这些
- 同一listing_id第二次出现时只更新价格历史而不新建行
- 每平米价=价格÷面积,折扣率相对同城中位价计算,与手算一致
- Gemini返回严格JSON且verdict只会是BUY/MAYBE/AVOID之一,能合并回原房源行
- 只有非AVOID且满足「新房源或降幅≥阈值」的房源触发Slack推送
- 断开Apify令牌试跑一次,抓取失败分支会发Slack警告而不是静默失败
容易卡住的地方
- Apify按抓取量计费,maxItems别一开始就开大,先用20条以内试跑
- Immoweb页面结构或Apify scraper变更会导致抓取字段漂移,需定期检查
- Sheets服务账号必须被共享表格权限,否则读写直接报错
- Gemini偶尔返回带解释文字的非法JSON,需在提示词里强约束并做好解析失败兜底
- 中位价依赖样本量,小城市同类房源太少时折扣率参考价值低
- 评级是规则化参考而非购房建议,比利时置业涉及税费与法规需自行核实
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Score Immoweb real estate deals with Gemini and log to Sheets and Slack
- 原作者
- iamvaar
- 原始发布日期
- 2026-10-05T12:37:38.592Z
- 来源
- https://n8n.io/workflows/20453