Skip to content

Repository files navigation

Mars Reader|火星阅读阅读器

中文 · English

基于 QMReader 演化的个人版 RSS 阅读与写作工作台。

Mars Reader 把筛选信息、深读文章、读中文改写、形成自己的判断,以及生成一版可继续编辑的社交媒体草稿,收进同一个本地优先的界面。它保留 QMReader 的 RSS 阅读、中文改写和文章上下文能力,在此基础上为个人阅读—写作流程加入了更轻量的 AI 写推文工作台与更收束的三栏界面。

Mars Reader v1.1 工作台:信息源、文章阅读与 AI 写推文

这是什么

这不是把文章自动变成一条看似合理的内容,而是一个让阅读和表达连在一起的个人工作台:

  1. 在左侧筛选信息源、未读、收藏、历史和文章;
  2. 在中间阅读原文、摘要和中文改写;
  3. 在右侧按需写下自己的判断、最想强调的点或希望略过的内容;
  4. 让 AI 结合文章重点与临时想法生成一版草稿,再继续编辑、复制或清空。草稿按文章保存,不会因为切换文章而丢失。

V1.1 的重点变化

AI 写推文:不选模式,只告诉它你想怎么讲

点击阅读器工具栏最前面的“AI 写推文”即可打开右侧 Writing Desk。v1.1 将原来的多种写作起点、篇幅、语气和三步确认流程收敛成一个简单任务:

  • 留空直接生成:从文章的公共信息中选择最值得分享的一条主线,不把原作者的私人经历写成你的经历。
  • 补充临时想法:写下自己的判断、希望强调或略过的内容;草稿优先按你的立场和取舍组织,文章只补充明确支持的事实、背景和机制。
  • 继续编辑:生成结果按文章自动保存,支持停止、重新生成、复制和清空。

输出更通俗、有趣、有情绪,可以适度加强表达力度,但不会夸大事实、数字或因果。通常每段 1–2 句、最多 3 句;默认使用自然段,确实需要并列多个独立观点时才局部使用真正的项目符号。旧版草稿仍可打开、编辑和重新生成。

Mars Reader v1.1 AI 写推文:文章重点、临时想法与可编辑草稿

中文改写:在阅读器里读懂,而不必离开文章

阅读区提供 原文中文改写中文改写(对照) 三个视图。对于有正文的文章,可以在同一处生成中文改写、查看生成状态、复制内容,并在需要时回到原文逐段核对。中文改写与 AI 写推文是两套能力:前者服务于阅读理解,后者服务于你的写作表达。

Mars Reader 中文改写:在文章阅读器中查看已生成的中文正文

更简洁的阅读—写作界面

当前桌面工作台把角色分开,而不是让所有工具同时争抢注意力:

  • 左侧:信息源导航、文章列表、搜索和个人阅读状态;
  • 中间:文章标题、原文、中文改写、摘要和正文;
  • 右侧:仅在写作时展开的 AI 写推文工作台,只保留文章引用、一个可选想法框、生成按钮和可编辑草稿;
  • 工具栏:AI 写推文优先放在最前;进入写作状态后,关闭控制移动到写作台标题行,减少重复标题与重复按钮。

功能地图

能力 用途
多源 RSS 阅读 聚合 RSSHub、直接 RSS、站点地图、Hacker News、Product Hunt、GitHub Trending、Hugging Face Papers 等信息源。
阅读工作台 在一页内完成信息源筛选、文章列表、深读和个人阅读状态管理。
中文改写 在文章阅读器中生成与查看中文改写,也可切换到对照视图。
AI 写推文 提炼文章重点,结合本次临时想法生成可编辑社交媒体草稿。
个人阅读状态 未读、收藏、历史和已保存的推文草稿按文章沉淀。
文章上下文工具 保留文章级 AI 对话、点评和划线等既有阅读能力。
自托管与本地优先 使用 Express 与 SQLite 运行;服务端密钥放在环境变量,浏览器自定义 AI 配置保留在本机。

本地启动

1. 准备环境

需要已安装当前 Node.js LTS 与 npm。

git clone https://github.com/archerthegoat/MarsReader.git
cd MarsReader
npm install
cp .env.example .env

.env 不应提交到 Git。只阅读 RSS 内容时可以先保持 AI Key 为空;要使用服务端中文改写等能力时,再填入自己的 DeepSeek 或兼容配置。

2. 正常启动

npm start

默认访问地址:http://localhost:8080

这是正常服务模式,遵循 .env 中的认证、Host、端口与 Cookie 配置,适合本地常驻或部署前验证。

3. macOS 本机常驻服务

macOS 用户可以使用原生用户级 LaunchAgent,让 Mars Reader 在登录后自动启动、异常退出后自动恢复,并把日志保存在 ~/Library/Logs/MarsReader/

npm run service:install
npm run service:status

常用管理命令:

npm run service:start
npm run service:stop
npm run service:restart
npm run service:logs
npm run service:uninstall

LaunchAgent 固定运行稳定服务并监听 http://127.0.0.1:8080。它会覆盖 .env 中的 HOSTPORTCOOKIE_SECUREMARSREADER_LOCAL_AUTH_BYPASS:只允许本机访问、使用本机 HTTP Cookie,并保留正常登录认证;其他 AI、管理员和刷新配置仍从 .env 读取。

service:stop 只停止当前登录会话中的服务,下次登录仍会自动启动;service:uninstall 会移除自动启动配置,但保留日志和 data/。如果移动项目目录或升级后 Node 路径失效,请重新运行 service:install

本地修改不会由 LaunchAgent 自动同步或部署。使用下面的命令先运行测试和语法检查,全部通过后才重启服务并验证 HTTP:

npm run local:deploy

实际 plist、日志、绝对路径、.env、密钥和运行数据都只留在本机,不应提交到 Git。

4. 本地热更新开发

npm run dev:hot

默认访问地址:http://marsreader.localhost:18081/

这个命令监听后端与前端关键文件,改动后自动重启本地服务;它默认仅绑定 127.0.0.1,并启用本地调试用的认证绕过。它只适合自己的电脑,不应暴露到局域网或公网。

5. 在页面内配置 AI

.env 的服务端配置外,也可以在界面内维护自己的浏览器 AI 配置:点击左下角的设置图标,选择我的后台,再进入AI 设置

  • 在这里添加或切换 AI 配置,可填写 API Key、Base URL、模型、Temperature 与 Max Tokens,并可测试连接或设为默认;
  • 同一页的“推文改写规则”只保留一个可编辑的推文改写系统提示词;它只影响“AI 写推文”,不影响中文改写和 AI 伴读;
  • 页面内 AI 配置与推文规则都保存在当前浏览器,可随时点“恢复默认”还原系统提示词;不会写入 SQLite 或提交到 Git。

6. 验证

npm test
node --check server.js
node --check public/app.js

配置速览

.env.example 复制后,最常用的是:

变量 说明
DEEPSEEK_API_KEY / DEEPSEEK_MODEL / DEEPSEEK_BASE_URL 服务端中文改写等 AI 能力的默认配置。
AI_PROVIDER / AI_API_KEY / AI_BASE_URL / AI_MODEL 兼容 AI Provider 的服务端配置。
ADMIN_EMAIL / ADMIN_PASSWORD / ADMIN_NAME 管理员初始配置。
HOST / PORT 正常服务模式的监听地址与端口。
MARSREADER_LOCAL_AUTH_BYPASS 仅用于本机热更新调试;正常启动应保持关闭。
AUTO_REWRITE_ENABLED / AUTO_REWRITE_SOURCE_IDS 可选的后台自动改写范围。

运行时 SQLite 数据和 favicon 缓存保存在 data/,默认不纳入 Git。

隐私与边界

  • 服务端 API Key 只从环境变量或 .env 读取,不写入仓库;
  • 浏览器中自行配置的 AI Key 保存在该浏览器的 localStorage,不存入 SQLite;
  • AI 输出依赖所选 Provider、模型和额度,生成前应自行确认事实与表达;
  • 社交草稿会移除文章来源链接,但这不代替你对公开表达、素材使用和发布平台规则的判断;
  • SQLite 适用于个人或小团队自托管,不是高并发多租户方案。

来源、贡献者与许可证

Mars Reader 基于 joeseesun/qmreader 开发,现作为独立仓库维护。原项目来源、版权与 MIT License 必须保留;本项目并不把上游代码叙述为从零创作。

Contributors

  • @archerthegoat — 产品方向、需求与验收
  • Codex — 开发协作

MIT License. See LICENSE.


English

A personal RSS reading and writing workbench built on QMReader.

Mars Reader keeps feed aggregation, article reading, Chinese rewrites, and article-context tools from QMReader, then adapts them to a personal workflow: filter information, read deeply, keep your own judgment, and turn it into an editable social-media draft.

What changed in V1.1

  • One clear social-draft flow — generate directly from an article, or add a temporary viewpoint, emphasis, disagreement, or omission. The draft prioritizes your input, stays editable, and is saved per article.
  • Lighter writing controls — the former modes, length and tone selectors, extra instruction field, and three-step workflow have been removed. Stop, regenerate, copy, clear, and autosave remain available.
  • More readable default writing — concise mobile-friendly paragraphs, natural prose with lists only when useful, and a more conversational and lively voice without exaggerating facts.
  • Chinese rewrites in the reader — switch among original text, Chinese rewrite, and a comparison view without leaving the article.
  • A more focused desktop surface — source navigation and article list on the left, deep reading in the middle, and an on-demand writing desk on the right.
  • Local-first self-hosting — Express and SQLite power the app; server keys stay in environment variables and browser AI profiles stay in local storage.

Local quick start

git clone https://github.com/archerthegoat/MarsReader.git
cd MarsReader
npm install
cp .env.example .env
npm start

Open http://localhost:8080.

Persistent macOS service

On macOS, install the native per-user LaunchAgent to start Mars Reader at login, restart it after unexpected exits, and keep local logs:

npm run service:install
npm run service:status

Use service:start, service:stop, service:restart, service:logs, or service:uninstall for lifecycle management. The service is fixed to http://127.0.0.1:8080, keeps normal login authentication enabled, and stores generated configuration and logs only on the current Mac. service:uninstall preserves application data and logs.

After local code changes, run the validation gate before restarting:

npm run local:deploy

The LaunchAgent does not pull from Git or deploy GitHub changes automatically.

For local hot reload only:

npm run dev:hot

Open http://marsreader.localhost:18081/. This mode binds to localhost and enables a local-only auth bypass; never expose it to a LAN or the public internet.

Configure AI in the app

In addition to .env server settings, you can manage browser-local AI settings from the interface: click the settings icon at the lower-left, choose My Dashboard, then open AI Settings.

  • Add or switch AI profiles with an API key, base URL, model, temperature, and max tokens; test the connection or make a profile the default.
  • The Tweet rewrite rules section on the same page contains one editable Tweet rewrite system prompt. It affects only AI tweet writing, not Chinese rewrites or the article AI companion.
  • Browser AI profiles and the tweet-writing prompt stay in the current browser. Use Restore defaults to reset the prompt; nothing is written to SQLite or Git.

Credits and license

Mars Reader is independently maintained from QMReader while retaining its upstream attribution and MIT license.

  • @archerthegoat — product direction, requirements, and acceptance
  • Codex — development collaboration

MIT License. See LICENSE.

About

中文 RSS 阅读工作台:订阅源、双语翻译、乔木风格改写与公开阅读资产 | Chinese RSS workbench for feeds, translation, rewrites, and public reading assets.

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages