# Firecrawl Change Tracking 教程：区分首次、未变与内容变更

## 本轮实际范围

已真实运行原创网页文本的本地行级 diff 与响应结构负例；没有调用 Firecrawl 云 API，离线 diff 不冒充其 changeTracking 结果。

## 起步

```bash
python3 verify.py
```

## 1. 准备可公开访问的自有页面

source-v1.md 与 source-v2.md 只改变开课日期，其他事实不变。Firecrawl 云服务不能访问 localhost；使用自己拥有且可公开读取的测试 URL，不提交内部站点。

## 2. 配置 Firecrawl 自己的 Key

run.py 使用 FIRECRAWL_API_KEY 与 FIRECRAWL_TEST_URL，访问官方 /v2/scrape。apizt Key 不能代替 Firecrawl Key；本题没有发送任何云请求。

## 3. 首次抓取记录 new

formats 同时包含 markdown 和 changeTracking，git-diff 用于行级差异。首次同 URL/团队/tag 没有历史快照，changeStatus 应为 new，previousScrapeAt 为 null。

```bash
python3 run.py --label first
```

## 4. 保持不变再抓一次

不改网页再次抓，预期 same。将每次完整响应保存在不同 output 文件，先看 HTTP 和 success，不只挑出你希望的字段。

```bash
python3 run.py --label same
```

## 5. 修改日期后检查 changed

将自有网页内容改成 source-v2.md，再抓取，核对 diff 仅改变 10 月 20 日为 22 日。不要把本地 difflib 教材当云端 Firecrawl 返回。

```bash
python3 run.py --label changed
```

## 6. 检查状态与抓取时间

用 verify.py --actual output/changed.json 验证 changed、previousScrapeAt 和 diff。JSON 字段模式另涉及 LLM，不在这个 git-diff 基础任务混讲。

## 7. 区分差异原语与持续监控

本题是手动三次抓取的差异比较，不创建长期定时或外发通知。offline-diff.txt 是本地真实运行结果，cloud-observations.json 是待填写，不能混用。

```bash
python3 verify.py
```

## 官方来源

https://docs.firecrawl.dev/features/change-tracking

## 提醒

参考文档、卡片、JSON和图片都明确标注人工或离线范围；没有实际调用的模型不提供假成功结果。占位配置不是可用凭据。
