# content-harbor **Repository Path**: badhope/content-harbor ## Basic Information - **Project Name**: content-harbor - **Description**: 内容港 Harbor —— 多平台内容发布中枢:AI 写稿(程序内写作风格档案)、AIGC 合规门禁(安全扫描+双模型二审+显式标识)、10 个平台一键分发与原地更新。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-20 - **Last Updated**: 2026-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 内容港 Harbor > [English](README.en.md) · 中文 > **内容进港,全网分发。** 文章存在你自己的库里,AI 通过 API / MCP 全权管理:写、改、发、更新、看账号全部内容。 > 自带内置浏览器,扫码登录一次就长期在线,不依赖你日常的 Chrome / Edge 开着。

license python fastapi mcp platforms GitCode 国内模型

![内容港 · 主界面(晴空主题)](docs/screenshots/01-home.png)
编辑器
Markdown 编辑 / 分屏 / 预览三态,写完直接选平台发
发布向导
一键多发,发布实例落库,可原地更新已发文章
## 30 秒看懂它能干什么 - **多平台一键分发**:一篇文章,勾选平台,同时发到 **10 个平台**(掘金 / CSDN / 博客园 / 知乎 / 思否 / B站专栏 / 头条号 / 开源中国 / 51CTO / 自建博客)。 - **原地更新,不是重发**:改了文章,它去打开各平台的**编辑页**改原文,URL 不变、评论点赞都在。 - **AI 全权接管**:内置 MCP Server + REST API,Claude 或任何脚本都能直接建文章、发布、抓取账号里的文章。 - **完全自托管**:文章库、登录态、浏览器 profile 全在你自己的机器上,不依赖任何第三方 SaaS。 - **免扫码通道**:博客园 / 51CTO / 自建博客走 MetaWeblog 协议,账号密码直发,一次配置长期免登录。 - **自带 Web 管理界面**:明亮清爽的「晴空」主题,响应式适配桌面 / 平板 / 手机。 ## 快速开始 ```bash git clone https://gitcode.com/badhope/content-harbor.git cd content-harbor pip install -r requirements.txt python3 -m patchright install chromium # 反检测浏览器;国内网络失败时自动复用预装 playwright chromium cp config.example.json config.json # 填 AI key(可选,不填不影响发布功能) # 扫码登录(有桌面的机器上跑一次,登录态长期有效) python cli.py --headed login --platform juejin # 起服务,打开 http://127.0.0.1:8800 python cli.py serve ``` ## 支持平台(10 个) | 平台 | 方式 | 发布 | 原地更新 | 抓取列表 | 备注 | |---|---|---|---|---|---| | 掘金 | 浏览器 + 页面 API | ✅ | ✅ | ✅ | **实测真发成功** | | CSDN | 浏览器 | ✅ | ✅ | ✅ | 验证码登录 | | 博客园 | MetaWeblog 协议 | ✅ | ✅ | ✅ | **免浏览器、零验证码** | | 51CTO | MetaWeblog 账密 | ✅ | ✅ | ✅ | 免扫码,账号密码直发 | | 自建博客 | MetaWeblog 账密 | ✅ | ✅ | ✅ | WordPress/Typecho,免扫码 | | 知乎 | 浏览器 UI 注入 | ✅ | ✅ | — | 扫码登录;发布后自动抓文章 ID | | 思否 SegmentFault | API 建稿 + UI 发布 | ✅ | ✅ | — | | | B站专栏 | 创作 API(FormData) | ✅ 草稿 | ✅ 草稿 | — | 发表需到编辑页二次选分区 | | 头条号 | 浏览器 UI 注入 | ✅ | — | — | 标题限 30 字 | | 开源中国 | 浏览器 UI 注入 | ✅ | — | — | UEditor 富文本 | > 知乎 / 头条 / 开源中国的发布选择器参考社区实测(MultiPost-Extension 等),平台改版后跑 > `python cli.py dump-dom --platform xxx` 重抓结构即可。扩一个新平台照着任一适配器抄 150 行。 ## 这是什么 / 不是什么 - ✅ 是:**自托管**的多平台内容分发中台。文章库、发布、原地更新、AI 写稿,全部在你自己机器上。 - ✅ 是:给 AI 程序用的**内容 API**。MCP Server + REST API 双入口,Claude / 任意脚本都能直接调用。 - ❌ 不是:群发垃圾内容的工具。发布内置限速(平台间隔 8-20s、文章间隔 30-90s),请在平台规则内使用。 --- ## 一、为什么不用浏览器插件方案 | | 插件方案(Wechatsync 等) | 本方案(内置浏览器) | |---|---|---| | 登录态 | 寄生在你日常浏览器里 | 独立 profile 存本地,程序自己管 | | 浏览器关了 | 断,跑不了 | 后台常驻,定时任务照跑 | | 编辑已发布文章 | ❌ 接口层面就没有 | ✅ 打开编辑页原地改 | | AI 全权管理 | 只能"发" | 增删改查 + 列表 + 状态 | | 做成独立程序 | 做不到,必须寄生 | 天然独立,能打包分发 | 代价:平台适配要自己写。目前 10 个平台已实现(见上方平台矩阵), 扩平台照着 150 行抄一个即可。文章可以由 AI 直接写(`core/ai.py`),接任何 OpenAI 兼容模型(DeepSeek / 豆包 / 通义 / Kimi / 智谱 / Ollama)。 --- ## 二、架构 ``` AI(Claude / 你的脚本) │ MCP 协议 或 REST API ▼ ┌──────────────────────┐ │ 业务层 service │ ├──────────────────────┤ │ 文章库 articles │ 唯一真源,AI 写/改都在这儿 │ 发布实例 publications │ 文章×平台,存 post_id / edit_url │ 任务流水 jobs │ 谁什么时候发了什么,失败原因可查 └──────────┬───────────┘ │ 内置 Chromium(每平台一个持久化 profile) │ 适配器:掘金 / CSDN / 知乎 / 思否 / B站 / 头条 / 开源中国 / 博客园 / 51CTO / 自建博客(WordPress/Typecho) │ 发布 列表 原地更新 ``` **原地更新靠三件事**:发布时把 `post_id` 和 `edit_url` 存进 `publications`;列表时从 DOM 抓 `edit_url`(不猜 URL);改文章时自动把已发布实例标成 `pending`,`sync` 一把推平。 --- ## 三、命令行用法 ```bash # 1) 扫码登录(会弹出浏览器窗口,扫一次就存住了) python cli.py login --platform juejin python cli.py login --platform csdn # 2) 确认登录态 python cli.py check --platform juejin # 3) 导入一篇文章 python cli.py import --path ./my-post.md # 4) 发布 python cli.py publish --id 1 --platforms juejin,csdn # 5) 改文章 → 自动同步到所有已发平台(原地更新,不是新发一篇) python cli.py update --id 1 # 或者一把推平所有改动 python cli.py sync # 看看账号里已有什么 python cli.py refresh --platform juejin python cli.py status ``` ## 四、Web 管理界面 启动服务后浏览器打开 `http://127.0.0.1:8800`。左边文章列表,中间编辑区,右边发布面板。 界面走「**晴空**」主题——明亮现代 SaaS 风:浅灰底 + 纯白卡片 + 飞书蓝主色, 圆角适中、无衬线字体、全链路 0 外部请求(离线可用),顶栏是分组工具条 (品牌 / 统计 / AI 状态 / 主操作),编辑器为绝对主角。 **前端技术栈**(`web/` 目录,独立工程): | 项 | 选型 | 为什么 | |---|---|---| | 框架 | Vue 3 `