内容
# 编辑发布器 for ChatGPT
编辑发布器 for ChatGPT 是一个开源的 ChatGPT 应用,用于安全的 WordPress 编辑工作。它可以搜索和检索内容,创建和修订草稿,管理图片、分类法和 SEO 元数据,预览更改,并明确确认调度或发布。
> 无需 OpenAI API 密钥。该项目不调用 LLM 或 OpenAI API,因此不会产生单独的按令牌计费的 OpenAI API 账单。正常的 ChatGPT 计划限制仍然适用。
## 功能
- 站点侧连接审批,无需共享主要 WordPress 密码
- 紧凑的搜索,字段选择的检索,干净的 Markdown,分页和修订
- 基于补丁的草稿编写,具有幂等性和乐观并发
- 验证的图片上传,元数据,媒体搜索和特色图片
- 分类,标签,REST启用的自定义分类法和规范的SEO适配器
- ChatGPT 中的结构化审查,错误,元数据,结果和确认卡
- 短期,动作绑定,单次确认后调度/发布
- WordPress 端撤销,诊断,连接管理和篡改证据审计元数据
## 架构
```mermaid
flowchart LR
U["ChatGPT 中的用户"] -->|"OAuth 2.1 + MCP over HTTPS"| M["开源 MCP 服务"]
M -->|"范围加密连接 over HTTPS"| P["编辑发布器 WordPress 插件"]
P -->|"原生功能和 WordPress API"| W["WordPress"]
U -->|"在自己的站点上登录和审批"| W
```
该服务验证 OAuth 签名,听众,资源,客户端,连接和范围。插件独立检查连接范围,切换到批准的 WordPress 用户,重新检查该用户的当前原生功能,并应用路由特定的安全策略。丰富的卡片是可选的;每个工具还返回有用的结构化/文本输出。
## 快速入门
要求:Node.js 24 LTS,npm 11,带有 Compose 的 Docker,以及用于 ChatGPT 测试的 HTTPS。
```sh
cp .env.example .env
# 用独立的 base64 编码的 32 字节值填充 WPCP_ENCRYPTION_KEY 和 WPCP_TOKEN_SIGNING_KEY。
# 在开发过程中仅使用本地 URL。
npm ci
docker compose up -d --build
```
默认本地端口是 WordPress `8080` 和 MCP `8787`;`MCP_HOST_PORT` 可以移动主机侧的 MCP 端口。使用 [docs/test-harness.md](docs/test-harness.md) 中的完整种子测试环境进行真正的 OAuth/E2E 测试。
## 安装 WordPress 插件
生成可上传的发布 ZIP:
```sh
npm run package:wordpress
```
通过 **插件 > 添加插件 > 上传插件** 上传 `artifacts/editorial-publisher-for-chatgpt-1.0.2.zip`,激活它,然后打开 **编辑发布器 > 诊断**。生产环境连接需要 HTTPS。使用编辑器进行正常的编辑工作,并在打算调度/发布的地方授予发布者。
## 部署 MCP 服务
该服务需要 PostgreSQL 和两个独立的 32 字节秘密。支持的路径:
- 已发布的跨平台镜像:`ghcr.io/asimons81/wp-chatgpt-publisher:1.0.2`
- 使用附带的 `Dockerfile` 从本地构建 OCI 镜像
- 用于完整本地拓扑的 Docker Compose
- 标准 Node 主机:`npm ci && npm run build && node apps/mcp-server/dist/index.js`
- 通过 `api/index.ts` 和 `vercel.json` 的 Vercel Node 函数
参见 [self-hosting](docs/self-hosting.md) 以获取环境变量,PostgreSQL,Vercel,备份,轮换,扩展,升级和回滚的信息。不需要专有中继。
## 从 ChatGPT 连接
在公共 HTTPS 上部署服务,然后按照 [ChatGPT 设置](docs/chatgpt-setup.md) 进行操作。OAuth 流重定向到用户自己的 WordPress 登录和审批屏幕;正常的 WordPress 密码从不通过 MCP 服务或 ChatGPT 传递。
| 配置文件 | 权限 |
| ----------------------- | --------------------------------------------------------------------------------------- |
| 只读 | 站点,内容,草稿,媒体,分类法和 SEO 读取 |
| 编辑(推荐) | 只读加上草稿,媒体,分类法分配和 SEO 编写 |
| 发布者 | 编辑加上已发布的编辑,调度和发布;仍然需要确认 |
v1 工具不管理用户,插件,主题,设置,原始数据库,原始文件系统,代码或永久删除。
## 安全性和隐私
- 带有 S256 PKCE,资源指示器,短期 JWT 访问令牌和旋转的不透明刷新令牌的 OAuth 授权代码流
- 基于 AES-256-GCM 的服务端凭证加密,带有连接绑定的关联数据;用于 WordPress 审批信封的 Sodium XChaCha20-Poly1305
- 两层连接和范围交叉,加上实时 WordPress 功能检查
- DNS 解析/固定,私有/保留地址拒绝,限制端口,无重定向,超时和响应上限
- 图片 MIME/解码器/大小验证和安全的 WordPress 边加载
- 静态工具定义;检索的 WordPress 内容是未受信任的数据,从不是指令
- 审计元数据仅:无文章正文,提示,对话,二进制文件,主要密码或授权头
- 默认关闭遥测和失败的生产配置
阅读 [SECURITY.md](SECURITY.md),[威胁模型](docs/threat-model.md) 和 [隐私模板](docs/privacy-policy-template.md)。
## 开发和验证
```sh
npm run format:check
npm run lint
npm run typecheck
npm test
npm run test:integration
npm run test:e2e
npm run test:security
npm run build
npm run package:wordpress
npm run sbom
npm run release:reproducible
npm run release:artifacts
npm run release:check
```
在 Windows 上,Composer 是可选的;`php:*` 脚本使用官方 Composer 容器。CI 运行 Node/PHP 质量门,PHP 8.1-8.4,最小/最新的 WordPress 实时堆栈,CodeQL,依赖项审查,秘密扫描,包装和草稿发布生成。
## 兼容性和限制
支持 WordPress 6.9+,PHP 8.1-8.4,Node 24,PostgreSQL 15-17 和标准单站点 REST 设置。参见 [verified matrix](docs/compatibility.md)。
多站点,WordPress.com 托管计划,头less 站点,禁用的 REST API,生产 HTTP,AIOSEO 编写,永久删除,广泛管理,自动发布和内置 LLM 调用在 v1 中被排除。
## 发布状态
所有本地实现,包装,安全,全栈,生命周期和浏览器门都已通过。公共 Vercel 服务在持久的 PostgreSQL 上报告版本 `1.0.2`,并且签署的 `1.0.2` 容器镜像公开可用于 AMD64 和 ARM64。公共 WordPress 和源 ZIP 与本地确定性构建的字节匹配。ChatGPT 桌面开发模式 OAuth/读取/草稿/发布审查接受度已通过。目前 OpenAI 指南表示 MCP 应用仅限于网络,因此移动客户端接受度不适用。扩展的桌面通道和目录提交由 OpenAI 开发人员身份验证和所有者的最终法律/联系信息进行帐户门控;参见 [项目状态](docs/status.md) 和 [发布检查清单](docs/release-checklist.md)。
## 许可证
完整的存储库使用 GPL-2.0-or-later 许可证。参见 [许可](docs/licensing.md) 和 [第三方通知](THIRD_PARTY_NOTICES.md)。