跳到正文

原文:gitroomhq/postiz-docs · 2026-06-28

用 Postiz 排期发布内容

Postiz 是一个开源社交媒体排期工具,主项目截至 2026-07-18 为 33.4k Star。下面按官方文档完成一条可复现的路径:启动 Postiz、从界面连接渠道、创建内容、排期发布,再核对结果。

这次会完成什么

  1. 准备一台能运行 Docker 的电脑或服务器。
  2. 用官方 Docker Compose 仓库启动 Postiz。
  3. 打开 Postiz,完成首次登录。
  4. 先用无需额外环境变量的 Bluesky 跑通;需要服务器频道时,再按图接入 Discord。
  5. 用 Postiz CLI 创建一条草稿,检查后转为排期发布。
  6. 到 Discord 查看结果,再安排下一条内容。

1. 准备 Docker 环境

先安装 Docker 与 Docker Compose。官方文档验证过的最低参考环境是:

  • Ubuntu 24.04
  • 2 GB 内存
  • 2 vCPU

本地体验可以直接使用 http://localhost:4007。正式部署需要 HTTPS,可在 Caddy 或 Nginx 后面运行 Postiz。

容器内部只需要把 5000/tcp 接给反向代理。前端 4200、API 3000、PostgreSQL 5432 和 Redis 6379 不要直接暴露到公网。

如果只是本地测试且没有 HTTPS,可临时设置 NOT_SECURED=true;它会关闭安全 Cookie 要求,不要用于正式环境。

2. 用 Docker Compose 启动 Postiz

官方文档要求从专用仓库取得最新 Compose 文件,不要从教程复制一份可能过期的快照。

bash
git clone https://github.com/gitroomhq/postiz-docker-compose
cd postiz-docker-compose

打开仓库里的 docker-compose.yaml,按文件注释检查环境变量,并把示例 JWT_SECRET 换成自己的随机长字符串。后面连接 Discord 时,还会回到这里加入三个 Discord 变量。

启动全部服务:

bash
docker compose up

第一次启动要拉取镜像并初始化数据库。终端没有继续报错后,打开:

  • Postiz:http://localhost:4007
  • Temporal 工作流界面:http://localhost:8080

如果页面打不开,先看 docker compose up 的终端日志。修改环境变量后必须重建容器:

bash
docker compose down
docker compose up

3. 打开界面并登录

浏览器进入 http://localhost:4007,按页面提示完成首次账号创建并登录。接下来会同时用到两个页面:

  • Postiz:连接频道、生成 API Key。
  • 渠道账号:最快可直接连接 Bluesky;连接 Discord 时才需要打开 Discord Developer Portal。

不要把社交账号密码、Discord Client Secret、Bot Token 或 Postiz API Key 发给任何人,也不要放进公开仓库。

4. 连接第一个发布渠道

4.1 最快跑通:Bluesky

Bluesky 不需要给 Postiz 增加环境变量。回到 Postiz,点击 Add Channel,选择 Bluesky,然后填写服务地址、账号标识和密码。

在 Postiz 中连接 Bluesky

提交后应直接回到 Postiz,并能开始发布。只想先完成一次排期发布时,可以跳到第 5 步。

4.2 需要服务器频道:Discord

你需要拥有目标 Discord 服务器的 Manage Server 权限。

4.2.1 创建 Discord 应用

登录 Discord Developer Portal,点击 New Application,填写名称并创建。

在 Discord Developer Portal 创建应用

4.2.2 添加应用图标

进入应用设置,上传一个不超过 1024 × 1024 px 的图标并保存。官方文档特别说明:没有图标时,在 Postiz 添加 Discord 频道可能出现 404。

为 Discord 应用添加图标

4.2.3 复制 OAuth2 凭据

进入 OAuth2,复制 Client ID 与 Client Secret。

复制 Discord Client ID 和 Client Secret

docker-compose.yaml 的 Postiz 环境变量中加入:

bash
DISCORD_CLIENT_ID="your_client_id"
DISCORD_CLIENT_SECRET="your_client_secret"

把两个占位值换成刚复制的真实值。

4.2.4 添加 OAuth2 回调地址

Discord 回调地址必须等于:

text
FRONTEND_URL + /integrations/social/discord

按本教程的默认地址填写:

text
http://localhost:4007/integrations/social/discord

正式部署时,把前半段换成自己的 HTTPS 域名,并确保与 Postiz 的 FRONTEND_URL 完全一致。

在 Discord OAuth2 中添加回调地址

4.2.5 创建 Bot

在 Discord 应用左侧进入 Bot,填写机器人信息,点击 Reset Token 生成 Bot Token。

把 Token 加到同一个 docker-compose.yaml

bash
DISCORD_BOT_TOKEN_ID="your_bot_token"

然后重建容器,让三个 Discord 变量生效:

bash
docker compose down
docker compose up

4.2.6 在 Postiz 添加频道

回到 Postiz,点击 Add Channel,选择 Discord。浏览器会跳到 Discord 登录与授权页;选择你有管理权限的服务器并完成授权。

授权完成后,Discord 会出现在 Postiz 的频道列表里。

5. 安装 CLI 并连接自建 Postiz

官方 CLI 能把“创建草稿—检查—转为排期—查看状态”完整跑通。

bash
npm install -g postiz
postiz --help

在 Postiz 的 Settings 页面创建 API Key,然后只在当前终端设置:

bash
export POSTIZ_API_KEY="your_api_key_here"
export POSTIZ_API_URL="http://localhost:4007"

列出已连接的渠道:

bash
postiz integrations:list

命令会返回 JSON。找到刚才接入的渠道,复制它的 id。如果先用 Bluesky 跑通,可以直接取出:

bash
PUBLISH_ID=$(postiz integrations:list | jq -r '.[] | select(.identifier=="bluesky") | .id')
postiz integrations:settings "$PUBLISH_ID"

如果选择 Discord,把筛选值改成 discord。第二条命令会列出当前渠道可用的发布设置;Bluesky 不需要额外设置,Discord 需要记下 channel-id

6. 创建第一条排期内容

先创建草稿,避免未经检查就进入发布队列。把时间改成未来的 UTC 时间:

bash
postiz posts:create \
  -c "本周产品更新:新版本已经上线。" \
  -s "YYYY-MM-DDTHH:mm:ssZ" \
  -t draft \
  -i "$PUBLISH_ID"

发布到 Discord 时,用完整命令带上频道设置:

bash
postiz posts:create \
  -c "本周产品更新:新版本已经上线。" \
  -s "YYYY-MM-DDTHH:mm:ssZ" \
  -t draft \
  --settings '{"channel":"channel-id"}' \
  -i "$PUBLISH_ID"

-s 必须是 ISO 8601 时间,例如 2026-07-21T10:00:00Z。命令返回 JSON 后,保存其中的帖子 ID。

查看草稿是否已经进入 Postiz:

bash
postiz posts:list

确认内容、时间和频道都正确后,把草稿转入排期队列:

bash
postiz posts:status <post-id> --status schedule

如果发布前要暂停,再改回草稿:

bash
postiz posts:status <post-id> --status draft

官方文档说明,转回 draft 会终止正在运行的发布工作流,帖子不会按原计划发布。

7. 查看结果并继续排期

先用下面的命令核对 Postiz 里的记录:

bash
postiz posts:list

到排期时间后,再打开目标 Bluesky 账号或 Discord 频道,确认内容已经出现。这一步才是发布成功的最终核对。

继续排期时,重复 posts:create,换一段内容与下一个未来时间即可。要同时安排多条内容,就为每条内容分别设置不同的 -s 时间,再用 posts:list 统一核对。

出错时检查这 6 项

  1. docker compose up 日志里是否有启动错误。
  2. 修改变量后是否执行了 docker compose downup
  3. integrations:list 返回的渠道 ID 是否与 -i 一致。
  4. 使用 Discord 时,回调地址是否与 FRONTEND_URL 完全一致。
  5. Discord 应用是否已经上传图标,三个凭据是否都已填写。
  6. 当前 Discord 账号是否有目标服务器的 Manage Server 权限。

本文所用文档和截图按 MIT License 收录。

返回一人公司实战,或继续看营销自动化

智维 API 接入、配置与排查指南。