用途:针对 HubSpot 中同一真实公司存在多条记录、导致联系人、交易与互动历史分散的问题,按域名和规范化名称识别重复候选,导出可审核的 CSV,并引导用户逐对合并。
主要能力:脚本 before.py 分页拉取全部公司(properties 含 name、domain、lifecyclestage、num_associated_contacts、num_associated_deals、hubspot_owner_id、createdate),按域名分组并统计重复组与影响记录数,同时按小写化名称分组,输出重复数量最多的域名和名称,并写出两份审计 CSV:data/audit-logs/duplicate-companies-by-domain.csv 和 duplicate-companies-by-name.csv。
使用方式:前置条件为具有 crm.objects.companies.read 权限的 HubSpot 私有应用访问令牌、Python 3.10+ 与 uv、包含 HUBSPOT_ACCESS_TOKEN 的 .env 文件,合并操作需 Super Admin 权限。运行:uv run skills/merge-duplicate-companies/scripts/before.py。脚本自带 PEP 723 内联元数据,无需单独安装依赖。
执行模式:Plan -> Before -> Execute -> After。Plan 阶段需确认是否为有意的区域办公室重复、合并不可逆、优先合并 Customer 阶段再 Opportunity 阶段、预估关键重复 2-4 小时、全量清理 8-12 小时。Execute 阶段为人工操作,可选 HubSpot 内置 Duplicates 工具(Settings > Data Management > Duplicates > Companies,每次约 50 对)、按名称搜索后 Actions > Merge 手动合并,或第三方工具 Dedupely、Insycle、Koalify。After 阶段重跑分析并人工抽查。
限制:HubSpot 无批量合并 API,合并只能在 UI 或第三方工具中逐对进行;合并不可撤销,无公司级取消合并,只能按 before CSV 手工重建。当两条记录同一属性都有值时保留主记录的值,需先核对电话、地址、行业等;重复名称误报率较高,域名匹配更可靠;内置 Duplicates 工具取决于套餐层级,未必可用。技能不会自动合并,所有合并均需人工确认。域名分组前统一小写并去除空白。