用途:在 HubSpot Marketing Hub 中,无邮箱地址的联系人无法接收营销邮件、销售序列或事务性消息,却仍计入计费联系人数量。该技能用 CRM API 识别并删除这些联系人。
主要能力:分四阶段执行,Plan -> Before -> Execute -> After。before.py 统计无邮箱联系人数并导出 CSV 基线;execute.py 分页收集联系人 ID、导出审计 CSV,并以每批 100 条批量归档删除;after.py 验证是否仍存在无邮箱联系人。搜索使用 email 的 NOT_HAS_PROPERTY 过滤,分页以 after 游标每页 100 条;批量删除接口最多接受 100 个 ID,成功返回 HTTP 204。
使用方式:需要具备 crm.objects.contacts.read 和 crm.objects.contacts.write 权限的 HubSpot 私有应用访问令牌、Python 3.10+ 与 uv,并在仓库根目录创建 .env 文件写入 HUBSPOT_ACCESS_TOKEN。脚本携带 PEP 723 内联元数据,无需单独安装依赖,例如 uv run skills/delete-no-email-contacts/scripts/before.py。
安全机制与限制:默认安全中止阈值为 500 条,超出则脚本退出且不删除任何内容;删除前导出包含 ID、姓名、创建日期的 CSV 审计日志;执行前需展示 Before 状态并等待明确确认。删除的联系人可在 90 天内通过 HubSpot 设置 > 数据管理 > 已删除对象恢复。注意 HubSpot 搜索 API 单次查询上限为 10,000 条结果,搜索约每秒 4 次请求,批量归档间隔建议 0.5 秒。若有集成或表单持续创建无邮箱联系人,删除后会再次出现,应先排查来源。付费、价格及平台相关信息暂未提供。