mcpField
S
signal-scanner

signal-scanner

github.com/gooseworks-ai营销与增长1.3k49 次安装3 天前更新
代码仓库

关于 signal-scanner

signal-scanner 是用于定期扫描目标公司和关注人物购买信号的营销技能。它为信号评分,并要求先试运行、经明确批准后才写入数据库。

主要功能

  1. 01定期扫描公司和人物
  2. 02检测招聘、融资及资料变更
  3. 03按时效和账户等级评分
  4. 04写入数据库前先试运行

适用场景

  1. 01判断账户外联时机
  2. 02激活记录前审查信号
  3. 03定期扫描目标账户

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gooseworks-ai/goose-skills --skill signal-scanner

安装后在 Claude Code 中输入/signal-scanner确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

skill.meta.json
configs/
example.json
toma-bdc-signal.json
scripts/
signal_scanner.py

详细介绍

Signal Scanner

定期扫描器,可检测 TAM 公司和观察名单中的 personas 的购买信号,将其写入 signals 表,并为后续激活做好准备。

适用场景

  • TAM Builder 已填充公司和 personas 后
  • 定期扫描(每日/每周),检测基于时机的外联触发因素
  • 需要从静态名单转向由意向驱动的外联时

前提条件

  • .env 中配置了 SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY
  • .env 中配置了 APIFY_TOKEN(用于 Phase 2 信号)
  • .env 中配置了 ANTHROPIC_API_KEY(可选,用于大模型内容分析)
  • 已通过 tam-builder 填充 TAM 公司
  • 已为 Tier 1-2 公司创建观察名单 personas

信号类型

优先级信号层级来源成本
P0员工人数增长(90 天内超过 10%)公司数据差异免费
P0技术栈变化公司数据差异免费
P0融资轮次公司数据差异免费
P0发布相关职位的招聘信息公司Apify linkedin-job-search约 $0.001/职位
P1领导层职位变动人员Apify linkedin-profile-scraper约 $3/1k
P1LinkedIn 内容分析人员Apify linkedin-profile-posts + 大模型约 $2/1k + 大模型
P1LinkedIn 个人资料更新人员Apify linkedin-profile-scraper约 $3/1k
P2新任 C-suite 高管公司根据人员扫描得出免费

配置格式

完整架构请参阅 configs/example.json。主要部分:

  • client_name — 要扫描哪位客户的 TAM
  • signals.* — 根据阈值启用/禁用各类信号
  • scan_scope — 按 tier、status、lead_status 筛选

数据库写入策略

重要:未经用户明确批准,绝不要写入信号或更新潜在客户状态。

信号扫描器会写入多个表:signals(插入)、enrichment_log(插入)、companies(更新快照)和 people(更新 lead_status)。这些写入会影响后续外联决策——错误的信号会导致错误的外联时机。

必须遵循的流程:

  1. 始终先运行 --dry-run,检测信号但不写入数据库
  2. 向用户展示试运行结果:信号数量、类型、最重要的信号,以及受影响的公司/人员
  3. 运行不带 --dry-run 的命令前,先获得用户明确批准
  4. 只有获得批准后,才能运行会写入数据库的实际扫描

原因:

  • 信号会影响外联时机——错误的信号会触发过早外联
  • 将 lead_status 从 monitoring 更改为 signal_detected 后,很难跨大量记录撤销
  • 快照更新会影响未来的信号差异——错误的快照会连带影响后续扫描
  • enrichment log 条目会记录 Apify 积分消耗

Agent 首次运行时绝不能传入 --yes。 --yes 标志仅用于已获预先批准的定时扫描,且用户已验证信号检测逻辑。

用法

# Dry run first (ALWAYS DO THIS) — detect signals without writing to DB
python skills/capabilities/signal-scanner/scripts/signal_scanner.py \
  --config skills/capabilities/signal-scanner/configs/my-client.json --dry-run

# Full scan (only after user reviews dry-run results and approves)
python skills/capabilities/signal-scanner/scripts/signal_scanner.py \
  --config skills/capabilities/signal-scanner/configs/my-client.json

# Test mode (5 companies max)
python skills/capabilities/signal-scanner/scripts/signal_scanner.py \
  --config configs/example.json --test --dry-run

# Free signals only (skip Apify)
# Set all Apify signals to enabled: false in config
标志
标志效果
--config PATH配置 JSON 的路径(必需)
--test限制为 5 家公司、3 名人员
--yes自动确认 Apify 成本提示。仅用于已获预先批准的定时扫描。
--dry-run检测信号但不写入数据库。始终先运行此命令。
--max-runs N覆盖 Apify 运行次数上限(默认值为 50)

输出

写入 Signals 表

每个信号包含:client_name、company_id、person_id、signal_level(company 或 person)、signal_type、signal_source、strength、signal_data(JSON)、activation_score、detected_at、acted_on、run_id。

其他数据库写入
  • 当 activation_score >= 阈值时,将人员的 lead_status 更新为 signal_detected
  • 更新公司 metadata._signal_snapshot,供下一轮差异比较使用
  • 更新人员 raw_data._signal_snapshot,供下一轮差异比较使用
  • enrichment_log 条目包含 tool='apify'、action='search' 或 'enrich',以及 credits_used
控制台输出
  • 将摘要统计信息打印到 stdout

激活评分

activation_score = strength * recency_multiplier * account_fit

Recency:   <24h = 1.5, 1-3d = 1.2, 3-7d = 1.0, 1-2w = 0.8, 2-4w = 0.5
Account:   Tier 1 = 1.3, Tier 2 = 1.0, Tier 3 = 0.7

Connects To

  • Upstream: tam-builder (provides companies + people)
  • Downstream: cold-email-outreach (acts on signals)

File Structure

signal-scanner/
├── SKILL.md
├── configs/
│   └── example.json
└── scripts/
    └── signal_scanner.py

评论

支持 Markdown