系统全景
SafeSell AI 监控的 14,650 起 TRO 案件,覆盖 N.D. Ill. 联邦法院 2020-2026 全部跨境电商相关诉讼。这套系统的技术栈和我们踩过的坑,写下来供同行参考。
`` [PACER 联邦法院公开档案] ←──┐ [USPTO 商标公开 API] ←──┤ [律所网站监控 (8 家)] ←──┼── [4 个数据采集器 cron] [Justia / CourtListener] ←──┘ │ ▼ ┌─────────────────────┐ │ 数据清洗 + 关联 │ │ (Node.js + tsx) │ └──────────┬──────────┘ ▼ ┌─────────────────────┐ │ SQLite (better-sqlite3)│ │ - tro_cases (14K) │ │ - tro_articles (21) │ │ - bot_crawl_log │ └──────────┬──────────┘ ▼ ┌─────────────────────┐ │ Express + React SPA │ │ + IndexNow + 头条/百度 │ │ 主动推送 │ └─────────────────────┘ ``
4 个有意思的技术点
1. PACER 增量爬取:从「整库扫描」到「按律所追案件」
最早我们试图按案件号顺序爬 PACER(美国联邦法院电子档案系统),效率极低 —— TRO 案件号在所有案件中占比不到 0.5%,95% 的请求都在拉无关数据。
后来切换成「按律所代理人姓名 + IP 类型筛选」的爬取策略:
``typescript // 伪代码:按律所 + 案件年份增量抓取 const TARGET_LAW_FIRMS = ['Greer Burns', 'Keith Vogt', 'Hughes Socol', ...]; for (const firm of TARGET_LAW_FIRMS) { const cases = await pacer.searchCases({ attorney: firm, nature_of_suit: '840', // 840 = Trademark filing_date_from: lastSync, }); await insertCases(cases); } ``
成本从每天 \$80+ 降到 \$3 以下(PACER 按页面计费,每页 \$0.10)。
2. USPTO 商标图实时抓取:绕过 403
USPTO 的官方商标图 API 有反爬:
`` GET https://tsdr.uspto.gov/img/{serial}/large → 403 Forbidden (默认 UA) ``
但加一个完整的浏览器 User-Agent 就能通过:
``typescript const resp = await fetch(https://tsdr.uspto.gov/img/${serial}/large, { headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' + 'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0 Safari/537.36', 'Accept': 'image/,/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.9', }, }); ``
8.5M 条 USPTO 商标记录里,约 60% 是带 logo 图的(其余是纯文字商标)。我们用 lazy fetch 模式:用户访问案件页时按需下载并缓存到本地。
3. AI 二轮润色去 AI 痕迹
我们用 DeepSeek 生成案件分析文章,但第一轮输出有明显 AI 味("经验上、综上所述、显而易见")。加了第二轮 polish prompt:
``` 你是一位资深跨境电商卖家兼自媒体作者。请重写下面这篇文章:
- 保留所有真实数据(律所案件数、品牌被诉次数、案件号)
- 替换 AI 套话为人话节奏
- 短句优先,多用动词开头
- 一段不超过 4 句
- 引用真实数据时用具体数字
```
二轮润色让文章在阅读体验上接近人类创作。在 Bing / Claude 等 AI 引擎中,深度内容的索引价值是浅 SEO 文的 5-10 倍。
4. GEO 优化:让 AI 而不是 Google 收录你
传统 SEO 是为 Google 优化。但 2025 年起,AI 引擎(豆包/DeepSeek/Claude/ChatGPT)成为新的流量入口。我们做了几件事让 AI 优先抓我们:
`` ✓ robots.txt 显式允许 30+ AI 爬虫(含豆包/DeepSeek/百度/通义/Kimi) ✓ llms.txt 给 AI 一个清晰的站点 manifest(Anthropic 提出的新标准) ✓ JSON-LD 结构化数据(Article + BreadcrumbList + Organization) ✓ 头条搜索 JS 自动收录(豆包优先抓取通道) ✓ IndexNow 协议推送(免 token,覆盖 Bing/Yandex/Seznam/Naver) ✓ 主动 sitemap 推百度 / 神马 / 头条 / 360 ✓ 关闭 Cloudflare 默认的「Block AI Bots」(这一项被忽略的话所有AI爬虫返回 403) ``
效果:上线 48 小时累计被 11 个 AI 引擎抓取 595 次,其中 Bingbot 单独抓了 379 次(371 个独立 URL)。
一些坑
- Cloudflare 默认屏蔽 AI Bots:CF 在 2024 年新增了
Block AI Scrapers开关,免费版默认开启。如果你想让 GPTBot / ClaudeBot 抓到你,必须先到 CF 控制台关掉。我们花了 6 小时才发现这个坑。
- server-side 电商图片搜索基本无解:Amazon / eBay / Walmart 都会拒绝服务端 IP。如果一定要做,要么用商业 scraping API,要么用前端 OG image 解析。
- SQLite 14M+ 案件查询的索引:单表
tro_cases14,650 行不是问题,但加上brands表 8.5M 行做 JOIN 需要在brand_lower字段上加 索引,否则单次查询 30s+。
- TSX/PM2 模块热重载缓存:
pm2 reload不一定重新加载所有模块。一些情况下需要pm2 restart全 kill 再起。
结尾
我们把这套监控做成了 SaaS 工具开放给跨境卖家用:safesellai.com。
如果你也在做跨境电商或者类似的数据监控系统,欢迎交流。代码层面有共同感兴趣的话题(PACER 爬取细节、USPTO 数据建模、GEO 实战)可以评论区或私信。