背景
很多技术文档站(火山引擎、Cloudflare 等)是 SPA,传统 fetch 拿不到渲染后的内容。测试发现 Jina Reader 对 SPA 支持很好,免费、零配置,https://r.jina.ai/{url} 直接返回 markdown。
Cloudflare Browser Rendering 的 /crawl endpoint 虽然功能更强(异步批量爬、JSON 结构化提取),但目前 API Token 权限在 Dashboard 上无法配置(beta 未完全开放),暂不可用。
需求
新增 web collection 类型,支持将网页抓取为 markdown 并纳入 seek 索引。
CLI 接口设想
# 添加单个 URL
seek add --url https://www.volcengine.com/docs/6348/2123348?lang=zh --name volc-rtc
# 添加多个 URL(从文件读取)
seek add --url-list urls.txt --name volc-docs
# 同步时重新抓取(根据 TTL 或 --force)
seek sync
实现要点
- 抓取层:优先用 Jina Reader(
https://r.jina.ai/{url}),免 API key,支持 SPA
- 请求头
X-Wait-For-Selector 可等待特定元素渲染
- 失败时 fallback 到普通 HTTP fetch
- 存储:抓取的 markdown 存入现有 chunk + FTS5 + embedding 流程,与 markdown collection 共享搜索路径
- 增量更新:按 URL 维度记录 content hash + 上次抓取时间,sync 时根据 TTL(默认 24h)决定是否重新抓取
- Collection 表新增字段:
type=web,url list,TTL 配置
后续可选
- 支持 sitemap 发现,批量抓取整站文档
- 接入 Cloudflare Browser Rendering
/crawl(等权限开放后)
- 支持
seek add --url ... --selector "article" 指定抽取区域
背景
很多技术文档站(火山引擎、Cloudflare 等)是 SPA,传统 fetch 拿不到渲染后的内容。测试发现 Jina Reader 对 SPA 支持很好,免费、零配置,
https://r.jina.ai/{url}直接返回 markdown。Cloudflare Browser Rendering 的
/crawlendpoint 虽然功能更强(异步批量爬、JSON 结构化提取),但目前 API Token 权限在 Dashboard 上无法配置(beta 未完全开放),暂不可用。需求
新增
webcollection 类型,支持将网页抓取为 markdown 并纳入 seek 索引。CLI 接口设想
实现要点
https://r.jina.ai/{url}),免 API key,支持 SPAX-Wait-For-Selector可等待特定元素渲染type=web,url list,TTL 配置后续可选
/crawl(等权限开放后)seek add --url ... --selector "article"指定抽取区域