SuperAPI AI 工具集

watch-for-changes

通用与其它

查看项目

更新于 10-16 06:00

技能介绍

watch-for-changes 用于按周期检查网络上的某些内容,与上次所见进行对比,仅在确实发生变化时报告。它本身是编排逻辑,而非 Tavily 平台的内置功能——Tavily 的 API 是无状态的,没有内置的调度、告警或“监测此内容”端点。该技能将 Tavily(tvly extract 或 tvly search)与实际检查步骤结合,再配合某种周期性任务机制完成调度。

用途

适用于监测特定 URL 或页面的内容变化,例如定价、条款、更新日志、申报状态。若需求是对广泛主题的新增报道进行周期性摘要(而非针对某一固定页面的变化检测),则属于另一种模式,不在本技能范围内——本技能用于检测变化,而非聚合新内容。

主要能力

  • 建立基线:提取目标页面(或运行目标搜索),保存内容及其哈希/指纹至本地快照文件。
  • 调度:按用户期望的周期设置重复检查,使用可用的周期任务机制。
  • 每次运行:重新提取并与已保存的快照比较。无实质差异则保持安静,更新快照的“上次检查”时间戳;有真实差异则总结变化并通知。每次检查后无论是否变化都更新快照内容。

使用方式

运行前若 PATH 中找不到 tvly,请参考 https://github.com/tavily-ai/tavily-cli 的安装说明。

快速开始步骤:

  1. 建立基线快照:
python3 << 'PYEOF'
import json, subprocess, hashlib, os

url = "https://example.com/pricing"
raw = subprocess.check_output(['tvly', 'extract', url, '--json'], stderr=subprocess.DEVNULL)
data = json.loads(raw)
content = data['results'][0]['raw_content']

os.makedirs('.tavily', exist_ok=True)
snapshot = {
    "url": url,
    "content": content,
    "hash": hashlib.sha256(content.encode()).hexdigest(),
}
with open('.tavily/monitor_pricing.json', 'w') as f:
    json.dump(snapshot, f)

print("Baseline saved.")
PYEOF
  1. 设置重复检查——将可用的周期任务机制指向下方的差异脚本:Claude Code 中的 schedule 技能或 /loop <interval>,或其他智能体中类似的调度原语,或独立运行时使用普通 cron 条目 / 定时 CI 任务。

  2. 每次调度运行——与已保存的快照进行差异对比:

python3 << 'PYEOF'
import json, subprocess, hashlib

url = "https://example.com/pricing"
path = ".tavily/monitor_pricing.json"

with open(path) as f:
    prev = json.load(f)

raw = subprocess.check_output(['tvly', 'extract', url, '--json'], stderr=subprocess.DEVNULL)
data = json.loads(raw)
content = data['results'][0]['raw_content']
new_hash = hashlib.sha256(content.encode()).hexdigest()

if new_hash != prev['hash']:
    print(f"CHANGED: {url}")
    # Optionally diff prev['content'] vs content and summarize the change in plain English
    # (e.g. via a quick tavily-research call or a direct text diff) before alerting the user.
else:
    print(f"No change: {url}")

with open(path, 'w') as f:
    json.dump({"url": url, "content": content, "hash": new_hash}, f)
PYEOF

注意事项

  • 周期:检查频率应与内容实际变化频率匹配——定价页不需要每小时检查,而实时申报跟踪可能需要。
  • 快照存储:每个监测目标在 .tavily/ 下保留一个 JSON 文件,以监测对象命名。
  • 噪声页面:若页面每次加载都有琐碎变化(时间戳、广告位),应哈希特定区块的内容,而非整页——可先通过 --query/--chunks-per-source 提取以缩小到相关区块。
  • 变化内容:若需人类可读的变化摘要(而不仅是“已变化”),可对比新旧文本,并可选地通过 tvly research 生成通俗摘要。
  • 不要过度调度。每次检查都消耗一次 API 调用——选择与目标实际变化频率相符的周期。
  • 缩小哈希范围。整页哈希会将所有外观变化(广告、时间戳、浏览量)视为“变化”——尽可能只提取关键区块。
  • 说明变化类型,而不仅是“发生了变化”。“已变化”是弱告警,“Pro 方案价格从 $49 变为 $59”才是有用的。
  • 明确告知用户是外部机制在进行调度,而非 Tavily 后台服务——若会话关闭、循环停止,或 cron/CI 任务未实际接通,监测就会停止。

适用场景

  • 监测特定 URL/页面的内容变化(定价、条款、更新日志、申报状态)。
  • 需要周期性重复检查并在实质变化时得到通知的场景。

限制

  • Tavily API 无状态,不提供内置调度、告警或监测端点,必须依赖外部周期任务机制。
  • 若外部调度未接通或会话关闭,监测会停止。
  • 整页哈希容易将无关紧要的变化误报为变化,需缩小哈希范围。
  • 文档未提供收费、价格或平台支持的具体信息。