No description
- Go 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .env.example | ||
| .gitignore | ||
| admin.go | ||
| admin_test.go | ||
| classify.go | ||
| classify_test.go | ||
| config.go | ||
| config.yaml | ||
| config_test.go | ||
| DEPLOYMENT.md | ||
| file_cache.go | ||
| go.mod | ||
| go.sum | ||
| jev.go | ||
| jev_test.go | ||
| main.go | ||
| openai.go | ||
| openai_test.go | ||
| prompts.yaml | ||
| QUICKSTART.md | ||
| README.md | ||
| rss-summarizer.service | ||
| rss.go | ||
| summarizer.go | ||
| summarizer_test.go | ||
| title.go | ||
| translator.go | ||
| tui.go | ||
| tui_test.go | ||
RSS AI Summarizer
用 Go 编写的 RSS/Atom 二次加工工具:抓取上游订阅源,通过 OpenAI 兼容接口翻译标题、生成中文摘要,再输出标准 RSS 2.0。
默认按单次任务运行,适合 cron 或 systemd timer。也提供带 Token 的管理页和终端配置。
功能
- 多个 RSS/Atom 源,可单独启用或停用。
- 每篇新文章两次 AI 请求:标题翻译、正文摘要。
- 可选:用 TypeSafe Jev 给源文打分并打标签(主题 + 地区),写入 RSS 的
<category>。Jev 不可用时自动跳过,不影响发布;缺标签的缓存会在下次运行补打。 - 提示词(Prompt)独立保存在
prompts.yaml,源通过prompt_profile选择配置档。 - 改提示词后旧缓存自动失效(
PromptHash)。 - 文件缓存,避免重复消耗 API。
- 管理页:
go run . serve,可改源、选配置档、手动处理。 - 终端配置:
go run . tui或add-source。
快速开始
cp .env.example .env
go mod download
go run .
.env 需要 OPENAI_API_KEY。可选 OPENAI_BASE_URL、OPENAI_MODEL、TYPESAFE_API_KEY、ADMIN_TOKEN、ADMIN_ADDR。
配置
config.yaml 管订阅源、模型和并发;prompts.yaml 管提示词配置档。
rss_sources:
- id: scmp
url: https://example.com/feed.xml
name: Example News
output_file: feed/scmp.xml
enabled: true
prompt_profile: news
prompts_file: prompts.yaml
jev:
enabled: true
base_url: https://api.typesafe.ai
model: jev-latest
timeout: 10
min_confidence: 0.6
jev 段可选。主题词表:政治、冲突、财经、科技、环境、法治、灾害、体育、社会、其他;地区词表:中国、香港、亚洲、美国、欧洲、中东、其他。每篇最多各取一个;置信度低于 min_confidence 时降级为「其他」,不猜。
可用配置档见 prompts.yaml 的 profiles:news、blog、standard-news、short-brief、deep-context、finance-market、blog-translation。
命令
go run . # 处理所有启用源
go run . classify # 只跑 Jev 打分打标签,不调用 OpenAI
go run . serve # 管理页,默认 http://127.0.0.1:8080/admin
go run . tui # 终端增删启停源
go run . add-source --id example --name "Example" --url "https://example.com/rss.xml" --profile news
开发
go test ./...