AI PLAY玩法更新持续收录
← 回到更新流

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凭据与目标频道

具体怎么做

  1. 配置Apify抓取

    创建Apify账号,把API令牌存为n8n的HTTP Header Auth凭据;在配置节点填入Immoweb搜索URL(在Immoweb上筛选城市、类型、价格区间后复制地址栏URL)和maxItems上限。先用小上限如20条试跑。

  2. 建立Google Sheets历史库

    新建表格并建一个房源历史页,列至少包含listing_id、标题、价格、面积、每平米价、首次发现日期、最近价格、评级、状态。把表格共享给服务账号邮箱,在n8n里选Sheets服务账号凭据并填入表格ID与页名。

  3. 接入Gemini评级

    添加Gemini API凭据,在发送评级的节点使用结构化rubric提示词(可用下方本站示例改写),要求Gemini只返回JSON:verdict(BUY/MAYBE/AVOID)、score、reasons、red_flags。配置节点里设定降价触发阈值,例如降幅达到5%才推送。

  4. 先用合成数据跑通逻辑

    在Apify节点后临时用手动数据节点粘贴下方合成CSV转成的条目,验证:重复listing_id被合并、价格变化被记录、每平米价与中位价计算正确、Gemini返回的JSON能合并回房源行。确认无误后再接真实Apify。

  5. 接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,199000

Gemini评级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