用途:在 ai-tech-rss-fetch 建立的同一 SQLite 数据库上做第二阶段处理,从各 RSS 条目 URL 抓取文章正文,并把提取状态与文本持久化到 entry_content 伴随表,避免重复行,支持增量运行与安全重试。
前提:entries 表必须已存在,需先运行 ai-tech-rss-fetch。多智能体环境用绝对路径固定数据库:export AI_RSS_DB_PATH="/absolute/path/to/workspace-rss-bot/ai_rss.db"。
主要命令:初始化 python3 scripts/fulltext_fetch.py init-db --db "$AI_RSS_DB_PATH";增量同步 python3 scripts/fulltext_fetch.py sync --db "$AI_RSS_DB_PATH" --limit 50 --timeout 20 --min-chars 300;单条抓取 python3 scripts/fulltext_fetch.py fetch-entry --db "$AI_RSS_DB_PATH" --entry-id 1234;查看状态 python3 scripts/fulltext_fetch.py list-content --db "$AI_RSS_DB_PATH" --status ready --limit 100。
数据契约:读 entries 的 id、canonical_url、url、title;写 entry_content 的 entry_id(唯一)、source_url、final_url、http_status、extractor(trafilatura、html-parser 或 none)、content_text、content_hash、content_length、status(ready 或 failed)、retry_count、last_error 及时间戳。URL 优先 canonical_url,回退 url;优先 trafilatura,不可用时回退内置 HTML 解析;按 entry_id upsert。
可配置参数包括 --db、--limit、--force、--only-failed、--refetch-days、--oldest-first、--timeout、--max-bytes、--min-chars、--max-retries、--retry-backoff-minutes、--user-agent、--disable-trafilatura、--fail-on-errors。
规则与限制:成功写正文并重置 retry_count;失败且已有 ready 内容则保留旧文本;无 ready 内容则置 failed 并增加重试计数、设 next_retry_at,重试受 --max-retries(默认 3)与退避分钟限制。缺失 entries 表时返回可操作错误并停止;网络、HTTP、解析错误记录失败并继续;PDF、图片、音频、视频、zip 等非文本类型标记失败;正文短于 --min-chars 视为失败。具体收费、平台与效果资料暂未提供。