Skip to content

feat: web collection — crawl URLs to markdown via Jina Reader #1

Description

@ethan-huo

背景

很多技术文档站(火山引擎、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" 指定抽取区域

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions