# hacknews-rss-cn **Repository Path**: coderzhouyu/hacknews ## Basic Information - **Project Name**: hacknews-rss-cn - **Description**: 把 Hacker News 变成一份中文日报:自动抓榜单、提正文、译评论,输出标准 RSS。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-10-02 - **Last Updated**: 2026-10-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hacker News 中文 RSS > 把 Hacker News 变成一份中文日报:自动抓榜单、翻标题,输出标准 RSS。 ![Go](docs/badges/go.svg) ![License](docs/badges/license.svg) ![RSS](docs/badges/rss.svg) ![界面预览](docs/screenshot.png) ## 一键部署 服务器上执行,跟着向导走即可(自动下载预编译包,无需 Go 环境): ```bash curl -fsSL https://gitee.com/coderzhouyu/hacknews/releases/download/v0.1.0/install.sh | sudo bash ``` 向导会依次询问:**翻译服务商**(DeepSeek / OpenAI / 硅基流动 / Ollama …)→ **API Key** → **端口**,确认后自动安装并启动。 升级只需重复执行(默认保留现有配置);加 `DRY_RUN=1` 可先预览不改系统。 > Gitee 对匿名下载大文件有限制,安装器已内置多路获取(Release → git 浅克隆)。 > 若上面的命令不可用,改用 git 方式: ```bash # 无需 Release,直接取仓库中已编译好的二进制(arm64 将 hnrss-linux-amd64 换成 hnrss-linux-arm64) git clone --depth 1 https://gitee.com/coderzhouyu/hacknews.git /tmp/hnrss sudo bash /tmp/hnrss/deploy/install.sh /tmp/hnrss/bin/hnrss-linux-amd64 ``` 不想被提问?给任意一个环境变量即可静默安装: ```bash URL=https://gitee.com/coderzhouyu/hacknews/releases/download/v0.1.0/install.sh curl -fsSL $URL | sudo TRANSLATE_API_KEY=sk-xxx bash -s # DeepSeek curl -fsSL $URL | sudo TRANSLATE_PROVIDER=ollama bash -s # 本地 Ollama(免密钥) curl -fsSL $URL | sudo PORT=8080 TRANSLATE_API_KEY=sk-xxx bash -s # 换端口 curl -fsSL $URL | sudo bash -s # 升级(配置保留) ``` 装好后订阅:`http://<服务器IP>/rss/all.xml`(综合:头条、最佳、最新合并去重) > 密钥获取:(默认服务商)。 > 常用管理:`systemctl status hnrss` · `journalctl -u hnrss -f` ## 本地运行 ```powershell $env:TRANSLATE_API_KEY="sk-xxx" go run . -once # 跑一轮 go run . # 启动服务 → http://127.0.0.1:8787/ ``` 不想装 Go?`bin/` 目录有编译好的 Windows / Linux 包,解压即用。 ## 特性 - **中文标题**:标题交给 LLM 翻译,一眼扫完当日要闻 - **译文终身缓存**:按内容哈希去重,同一内容永不重复翻译 - **任意模型**:内置 DeepSeek / OpenAI / 硅基流动 / OpenRouter / Ollama / LM Studio 预设,一个变量随换 - **极轻**:Go 单二进制 + SQLite,无容器、无外部数据库,常驻内存约 30MB ## 换翻译服务(一个变量) | `TRANSLATE_PROVIDER` | 默认模型 | 说明 | | --- | --- | --- | | `deepseek`(默认) | `deepseek-flash` | 性价比之选 | | `openai` | `gpt-4o-mini` | | | `siliconflow` | `Qwen/Qwen3-8B` | 国内直连 | | `openrouter` | `deepseek/deepseek-chat` | 一个 Key 通百模 | | `ollama` | `qwen3:8b` | **本地免费**、可离线 | | `lmstudio` | `qwen3-8b` | 本地图形界面 | 不会用预设也没有关系——任何 OpenAI 兼容端点都可直接指定: ```bash TRANSLATE_BASE_URL=https://my-gateway.example.com/v1 TRANSLATE_MODEL=my-model ``` ## 订阅源 | 路径 | 内容 | | --- | --- | | `/rss/all.xml` | 综合(头条、最佳、最新三榜合一,去重) | 支持 `?limit=10~100`;带 `ETag`/`304`,阅读器轮询不费流量。 ## 配置速查 全部配置走环境变量,完整样例见 `deploy/env.example`。 | 变量 | 默认 | 说明 | | --- | --- | --- | | `TRANSLATE_API_KEY` | — | **必填**,翻译密钥 | | `TRANSLATE_PROVIDER` | `deepseek` | 服务商预设(见上) | | `LISTEN_ADDR` / `PORT` | `:8787` | 监听地址(服务器脚本默认 `:80`) | | `RUN_INTERVAL` | `30m` | 抓取轮询间隔 | | `MAX_TRANSLATE_PER_RUN` | `20` | 每轮最多翻译篇数(成本闸门) | | `DB_PATH` | `data/hnrss.db` | 数据文件位置 | | `LOG_LEVEL` | `info` | `debug/info/warn/error` | ## 设计 ``` HN 榜单 ──▶ 标题翻译 ──▶ SQLite 缓存 ──▶ RSS 渲染 (HN API) (OpenAI 兼容) (WAL 终身) (ETag/304) ``` - **只抓一次,只译一次**:内容寻址缓存 `(story_id, "title", 内容哈希)` - **失败隔离**:翻译失败不影响榜单抓取;网络抖动自动重试,服务不崩 - **配置即接口**:所有行为由环境变量驱动;部署脚本幂等,升级=重跑一条命令 ## 常见问题 | 现象 | 处置 | | --- | --- | | 译文为空 / 401 | 检查 `TRANSLATE_API_KEY` 与 `TRANSLATE_PROVIDER`,`journalctl -u hnrss -f` 有重试日志 | | 非 80 端口访问不了 | 放行云安全组/防火墙 | | 一键命令下载受限 | Gitee 匿名下载大文件需登录,安装器会自动改用 git 方式;也可直接用上方「git 方式」或本机 `deploy\deploy.ps1` 上传 | ## License [MIT](LICENSE) © 2026 coderzhouyu --- 若它帮你省下了时间或订阅费,点个 **Star** ⭐ 或 **Fork** 改成你自己的版本。