
后端前端社交人工智能【免费下载链接】NewsBlurNewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.项目地址https://gitcode.com/gh_mirrors/ne/NewsBlur点击查看免费下载本文基于 NewsBlur 开源仓库Django Backbone.js 的个人新闻阅读器编写系统讲解如何在本地自托管一套完整实例包括 Docker Compose 一键启动、Makefile 常用运维命令、local_settings.py配置体系、Git worktree 多分支并行开发以及通过内置 MCP Server 让 Claude 等 AI 智能体读取订阅、管理故事、训练分类器。读完本文你可以独立完成 NewsBlur 的安装、配置、数据访问与 AI 化扩展。一、NewsBlur 是什么技术架构速览NewsBlur 是一个带智能的个人新闻阅读器它既是 RSS 订阅器又是一个社交新闻网络在展示原始网站内容的同时提供强大的过滤工具。你可以训练它学习你的喜好与厌恶之后它会自动高亮或隐藏故事。免费版可在 newsblur.com 使用最多订阅 64 个站点也支持付费高级计划或者使用本仓库自托管。从技术栈看见 README.md 的 Technology 一节NewsBlur 是一个 Python 3.7 的 Django 应用前端使用 Backbone.js并依赖一组精心分工的存储与计算组件组件职责PostgreSQL关系型数据订阅源feeds、订阅关系、账户MongoDB故事内容与已读状态stories and read statesRedis故事组装story assembly与缓存Elasticsearch全文搜索可选Celery后台任务如订阅源抓取Node.js 服务正文提取original text与图片处理核心功能一览详见 README.md Features 一节实时 RSS 推送、原始站点视图Original Site View、训练Training、分享故事到公开的 blurblog、全文搜索、故事打标签、Blurblog 隐私控制、保存搜索Saved Searches常用搜索自动变成独立订阅源、截断 RSS 全文无缝展开、故事变更追踪Track Changes、邮件通讯稿Email Newsletters阅读、多布局Grid / List / Split / Magazine、深色模式、YouTube 频道订阅、第三方 App 支持Reeder、ReadKit、Unread 等、IFTTT 集成以及内置的 MCP Server 供 AI 智能体接入。二、自托管安装Docker 化一键部署2.1 前置条件与三步启动自托管唯一的前置条件是 Docker 与 Docker Compose。安装过程极为简洁git clone https://github.com/samuelclay/NewsBlur.git cd NewsBlur make访问https://localhost即可。由于使用自签名证书浏览器会弹出警告——在 Chrome 中键入thisisunsafe即可绕过。make这个默认目标见 Makefile其实是一个智能安装器它会自动判断当前所处的状态若检测到是首次安装docker/volumes/postgres或docker/volumes/db_mongo目录不存在则执行完整的rebuildpull 镜像 → bounce 重建容器 → migrate 迁移 → bootstrap 导入初始数据 → collectstatic若容器未运行则执行nb-fast快速拉起容器后迁移、导入、收集静态文件若容器已在运行则仅执行docker exec -t newsblur_web ./manage.py migrate应用新迁移这正是git pull之后必须重新make的原因。2.2 常用 Make 命令速查命令作用make启动/更新并应用迁移git pull后运行make log查看 web 与 node 容器日志make logall查看所有容器日志make shellDjango shell自动导入模型的 shell_plusmake bash进入 web 容器 bashmake test运行测试支持SCOPEapps.reader等范围参数make lint格式化代码isort、black、flake8make down停止所有容器此外还有数据库入口make mongo进入 MongoDB shellmongo --port 29019make redis进入 Redis CLIredis-cli -p 6579make postgres进入 PostgreSQL shellpsql -U newsblur从 docker-compose.yml 可以看到本地的端口规划Django web 容器对外映射 8000 端口、Node 服务 8008、nginx 81、PostgreSQL 宿主机侧 5434、Redis 6579、Elasticsearch 9200、MongoDB 29019而 HAProxy 负责 80/443 入口并承担 1936 端口的统计页。这些端口编号在后续排查容器时非常有用。2.3 引导热门订阅源数据生产环境的 Discover 页面需要PopularFeed数据支撑。仓库提供了一个管理命令用于从精选的 fixtures 文件apps/discover/fixtures/popular_feeds.json批量生成记录docker exec -t newsblur_web python manage.py bootstrap_popular_feeds --skip-fetch--skip-fetch表示只创建PopularFeed记录而不实际抓取任何订阅内容。也可以按类型过滤--type youtube、--type reddit、--type podcast、--type newsletter或--type rss。该命令的实现位于 apps/discover/management/commands/bootstrap_popular_feeds.py它默认读取apps/discover/fixtures/popular_feeds.json支持--dry-run只预览不落库、--force-update强制重新抓取已有 Feed、--workers并行抓取线程数默认 10、--offset/--limit断点续跑、--retry-unlinked绕过 feedfinder 直接建 Feed 对象重连未关联记录等参数。它背后写入的数据模型在 apps/discover/models.py 定义PopularFeed支持rss/youtube/reddit/newsletter/podcast五种类型按feed_type/category/subcategory/sort_order/subscriber_count排序并通过unique_together (feed_url, feed_type)保证同一 URL 每种类型只出现一次。三、配置体系local_settings.py 详解3.1 覆盖机制NewsBlur 的自托管配置非常灵活在newsblur_web/目录下创建local_settings.py即可覆盖 docker_local_settings.py 中的默认值。注意local_settings.py不会出现在仓库中需要自行创建。3.2 自托管核心配置项配置项说明默认值NEWSBLUR_URL你的域名也用于 Archive 浏览器扩展的 OAuthhttps://localhostSESSION_COOKIE_DOMAIN认证用的 Cookie 域名localhostAUTO_PREMIUM是否给新用户开通高级功能TrueAUTO_ENABLE_NEW_USERS是否自动激活新注册账户TrueENFORCE_SIGNUP_CAPTCHA注册时是否强制验证码FalseOPENAI_API_KEYAI 功能与 Discover 相关故事推荐空DAYS_OF_UNREAD高级用户故事保留天数30DAYS_OF_UNREAD_FREE免费用户故事保留天数14HOMEPAGE_USERNAME未登录用户首页展示的示例用户名popular从 docker_local_settings.py 源码看AUTO_PREMIUM还联动三个更细粒度的开关AUTO_PREMIUM_NEW_USERS、AUTO_PREMIUM_ARCHIVE_NEW_USERS开通归档、AUTO_PREMIUM_PRO_NEW_USERS开通 Pro当AUTO_PREMIUM False时三者会被一并关闭。NEWSBLUR_URL在文件末尾还会读取环境变量NEWSBLUR_URL os.getenv(NEWSBLUR_URL, https://localhost)并且当 URL 恰为https://localhost时自动把SESSION_COOKIE_DOMAIN锁定为localhost——这是自托管最省心的默认行为。3.3 运行完整 newsblur.com 的进阶设置以下配置主要用于部署与官方完全一致的生产环境EMAIL_BACKEND邮件发送方式默认开发环境输出到控制台STRIPE_SECRET/STRIPE_PUBLISHABLEStripe 支付处理PAYPAL_API_CLIENTID/PAYPAL_API_SECRETPayPal 支付处理S3_*AWS S3 桶配置备份、图标、头像包括S3_BACKUP_BUCKET、S3_PAGES_BUCKET_NAME、S3_ICONS_BUCKET_NAME、S3_AVATARS_BUCKET_NAMEFACEBOOK_APP_ID/TWITTER_CONSUMER_KEY/YOUTUBE_API_KEY社交平台 API 密钥完整配置清单见 docker_local_settings.py 与 settings.py。3.4 底层存储接线AI 与数据服务配置对于想要启用 AI 能力的自托管用户docker_local_settings.py 中有一段专门的 AI Provider 配置区支持 Anthropic、OpenAI、Google Gemini、xAI Grok 四家模型OPENAI_API_KEY sk-svcacct-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ANTHROPIC_API_KEY sk-ant-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX GOOGLE_GEMINI_API_KEY XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XAI_GROK_API_KEY xai-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ASK_AI_MODEL anthropic # Options: anthropic, openai, google, xai BRIEFING_MODEL openai # Options: anthropic, openai, google, xai WEBFEED_MODEL openai # Options: anthropic, openai, google, xai源码注释特别指出AI 分类器内容 图片过滤只要配置了真实的 Anthropic 密钥就会自动生效无需额外的计费配置。ASK_AI_MODEL/BRIEFING_MODEL/WEBFEED_MODEL分别控制问答、每日简报、网页订阅源webfeed三个功能使用的模型供应商可在anthropic、openai、google、xai之间切换。同一文件中还定义了完整的存储接线帮助理解容器间数据流这些主机名都对应 docker-compose.yml 中的服务名缓存redis://newsblur_db_redis:6579/6Django Redis 缓存数据库PostgreSQL主机newsblur_db_postgres:5432库名newsblur用户/密码newsblur、MongoDBnewsblur_db_mongo:29019库名newsblur与分析库nbanalyticsCeleryBroker 与结果后端均为redis://newsblur_db_redis:6579/0并发度默认 1Redis 业务分区用户数据 / pubsub / 故事 / 会话分别指向 6579 端口的同一实例其中 Celery 用 DB 4、会话用 DB 5四、Git Worktree 并行开发多特性同时跑4.1 创建与启动NewsBlur 官方支持 Git worktree 开发模式让你可以在多个特性分支上并行工作每个 worktree 占用独立端口——这与 Claude Code 等 AI 编码助手的配合是官方明示的使用场景。git worktree add .worktree/feature-name cd .worktree/feature-name make worktree每个 worktree 会依据目录名自动获得唯一端口主仓库使用https://localhost80/443 端口而 worktree 使用https://localhost:XXXX的独立端口。4.2 端口分配原理端口分配的底层逻辑在 worktree-dev.sh 中实现对 worktree 目录名取 MD5 哈希的前 4 位换算为 100~999 的偏移量再与各服务基准端口叠加web 8000、node 8008、nginx 8100、HAProxy HTTP 8200、HAProxy HTTPS 8443、统计页 1936并通过lsof检测端口占用、自动顺延以避开冲突。生成的具体配置写入.worktree/docker-compose.workspace.yml模板见 docker/compose/worktree.yml.j2与.worktree/haproxy/haproxy.workspace.cfg。4.3 常用 Worktree 命令make worktree创建/启动 worktree 并打印访问 URLmake worktree-log跟踪该 worktree 的 web、node、celery、mcp 容器日志make worktree-close停止容器并在无未提交改动时删除 worktree4.4 共享数据服务所有 worktree 共享同一套数据库服务PostgreSQL、MongoDB、Redis、Elasticsearch意味着你可以在不复制数据的情况下并行测试多个特性。从模板可见 worktree 的 web/node/nginx/haproxy 容器通过external: true的newsblur_default网络与主仓库数据库容器互联Celery worker 则以COMPOSE_PROJECT_NAMEworkspace隔离运行使用独立的队列名workspace_work_queue、workspace_new_feeds等和独立的 celerybeat 调度文件。五、MCP Server让 AI 智能体接入你的订阅5.1 什么是 NewsBlur MCPNewsBlur 内置了基于 Model Context Protocol 的 MCP Server让 AI 智能体Claude Desktop、Claude Code、Cursor 或任意兼容 MCP 的客户端能够读取你的订阅源、故事与分类器。托管版服务需要高级订阅Premium。5.2 连接方式Claude Codeclaude mcp add --transport http newsblur https://newsblur.com/mcp/Codex在~/.codex/config.toml中添加[mcp_servers.newsblur] url https://newsblur.com/mcp首次使用时会弹出浏览器窗口登录 NewsBlur 并授权访问。5.3 智能体能力全景接入后AI 智能体可以做三类事情读你的订阅从任意订阅源或文件夹获取未读故事、跨全部订阅全文搜索、按标签检索已保存故事执行操作标记故事已读、用标签和备注保存故事、按 URL 订阅新订阅源、分享故事到你的 blurblog训练智能查看和更新分类器对作者、标签、标题、订阅源进行喜欢/不喜欢训练甚至让 AI 分析你的阅读模式并给出训练规则建议发现按主题寻找新订阅源、查看热门趋势、查找与你已订阅内容相似的订阅源。5.4 工具清单工具描述newsblur_list_feeds所有已订阅订阅源含文件夹与未读计数newsblur_get_stories从订阅源、文件夹或全部订阅加载故事newsblur_get_saved_stories按标签筛选已保存故事newsblur_search_stories跨订阅源全文搜索newsblur_get_original_text从源站抓取完整文章newsblur_get_feed_info订阅源元数据与统计newsblur_get_account_info用户资料与订阅等级newsblur_mark_stories_read按 hash、订阅源或文件夹标记已读newsblur_save_story保存故事标签、备注、高亮newsblur_unsave_story取消保存newsblur_subscribe按 URL 订阅订阅源newsblur_unsubscribe取消订阅newsblur_organize_feed在文件夹间移动订阅源、重命名订阅源/文件夹newsblur_share_story带评论分享到 blurblognewsblur_train_classifier对标题、作者、标签或订阅源进行喜欢/不喜欢训练newsblur_get_classifiers查看所有已训练的分类器newsblur_discover_feeds搜索、相似或热门订阅源发现newsblur_manage_notifications查看/配置按订阅源的通知这些工具并非空壳。以newsblur_list_feeds为例newsblur_mcp/newsblur_mcp/tools/feeds.py它支持flat扁平化文件夹结构默认 true与include_favicons返回 base64 图标两个参数内部调用 NewsBlur 的/reader/feedsAPI返回按文件夹组织的订阅结构、starred 计数与订阅总数。5.5 内置 Prompt 模板MCP Server 附带一组针对常见工作流的提示词模板实现见 newsblur_mcp/newsblur_mcp/prompts/prompts.pyDaily Briefing每日简报按文件夹汇总今日未读故事可只保留被分类器判定为 focus 的高关注度条目Triage Inbox收件箱分诊逐条审阅未读故事并分类——值得收藏的用newsblur_save_story保存其余用newsblur_mark_stories_read标记已读Research Topic主题研究跨订阅源、阅读历史与已保存故事检索某主题信息并输出结构化摘要Train from Reading从阅读中训练分析你的保存与阅读模式产出新的分类器规则建议以表格呈现并先征询同意再应用Feed Health Check订阅源健康检查审计死订阅源抓取报错、长时间无更新30 天无新故事与从不阅读0 次打开的订阅源并给出清理建议Discover New Feeds发现新订阅源基于你的兴趣与现有订阅推荐新订阅源。5.6 自托管 MCP Server如果你自托管 NewsBlurMCP Server 会作为独立容器运行在 8099 端口docker compose up newsblur_mcp然后把 MCP 客户端指向https://your-newsblur-domain/mcp/。从 docker-compose.yml 中newsblur_mcp服务的环境变量可以看到其内部架构NEWSBLUR_BASE_URLhttp://newsblur_web:8000指向 Django 后端MCP_PORT8099/MCP_HOST0.0.0.0控制监听MCP_OAUTH_*一组变量负责 OAuth 授权链路客户端 ID、密钥、外部回调地址http://localhost/mcp、内部转发地址而MCP_REDIS_URLredis://newsblur_db_redis:6579/5用于跨 MCP 实例共享 OAuth 客户端与令牌存储。实现层面newsblur_mcp/newsblur_mcp/server.py服务基于 FastMCP采用streamable-http传输get_client()从请求上下文中提取 OAuth 持有令牌并校验is_archive高级身份随后创建NewsBlurClient每个工具调用都会被包装器记录请求日志用户名、高级标识、耗时并写入 MCP 用量指标ArchiveRequiredError会被转换成结构化错误返回Django API 的 HTTP 错误也会被转换成newsblur_api_error载荷方便智能体理解失败原因。相关阈值配置在 newsblur_mcp/newsblur_mcp/settings.py单条故事内容上限 2000 字符、默认每页 12 条、最大 50 条、HTTP 超时 30 秒——这些参数保证了 AI 友好型响应的长度与稳定性。六、开发与贡献流程开发模式的核心体验是改完即生效webDjango与 node 服务会在代码变更后自动重启。其余约定git pull之后运行make以应用数据库迁移用make test运行测试支持指定范围如make test SCOPEapps.reader与额外参数如ARGS--noinput -v 2用make lint统一代码风格isort --profile black、black --line-length 110、flake8 关键错误检查 E9/F63/F7/F82详细的开发规范见 AGENTS.md。七、结语从一条make命令拉起整套容器到用local_settings.py细调留存天数与 AI 模型供应商再到通过 worktree 并行开发多个特性、最后用内置 MCP Server 把订阅源交给 AI 智能体打理——NewsBlur 的开源仓库把个人新闻阅读器从单一 Web 应用扩展成了可完全掌控、可编程、可被智能体操作的完整平台。无论你是想搭建私人阅读服务、研究 Django 多存储架构还是构建AI 读新闻工作流README.md 及其配套的 docker-compose.yml、Makefile、docker_local_settings.py 都是最直接的起点。赞分享后端前端社交人工智能【免费下载链接】NewsBlurNewsBlur is a personal news reader that brings people together to talk about the world. A new sound of an old instrument.项目地址https://gitcode.com/gh_mirrors/ne/NewsBlur点击查看免费下载相关推荐Cap Standalone 自托管部署完整指南从 docker-compose 到 siteverify 的全链路实战Cap Standalone 自托管部署完整指南从 docker compose 到 siteverify 的全链路实战 Cap 是一个免费、开源、可自托管的网络安全应用安全后端SciPhi-Triplex-4bit安装避坑指南从环境配置到首次推理的完整教程SciPhi Triplex 4bit安装避坑指南从环境配置到首次推理的完整教程 如果你是第一次接触 SciPhi Triplex 4bit 本地推理这篇文Readest 自托管部署完全指南基于 Docker/Podman Compose 的私有阅读云搭建与运维Readest 自托管部署完全指南基于 Docker/Podman Compose 的私有阅读云搭建与运维 导读 本文以 Readest 仓库中的 docke桌面应用跨平台前端上一篇自托管的Pi-Hole风格DNS解析器serverless-dns下一篇终极UGATIT图像转换指南10分钟从自拍到动漫的完整教程 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考