详细介绍
一稿多发,
发到真账号上
在内容列表点一下「社媒分享」,勾选平台、改两句文案,文章就真的出现在微博、公众号、抖音、X、LinkedIn 上——不是打开一个分享对话框,是用你自己的账号发出去。失败的自动排队重试,成功的不会重复发。
- 版本 / 作者
- 1.4 · Sharehub
- 要求
- CMS 4.6+ / PHP 7.4–8.2
- 平台
- 9 个
- 一键授权
- 微博 / 抖音 / Reddit
- 默认重试
- 3 次 · 60/300/900s
- 任务状态
- 6 档
先分清:它不是分享按钮
同目录还有一个 HMShare 1.1.0,名字都跟分享有关,能力完全不同。这一节决定你该装哪个。
| 对比项 | Sharehub 1.4(本插件) | HMShare 1.1.0 |
|---|---|---|
| 谁在发 | 你 / 编辑,用自有平台账号 | 访客,点分享按钮 |
| 发到哪 | 真实 API,内容真的出现在平台上 | 打开平台分享对话框,访客自己点发送 |
| 要凭证吗 | 要:AppKey / Token / OAuth | 不要,装完就能用 |
| 适合谁 | 有内容运营、要一稿多发 | 想给页面加一条转发入口 |
一句话:HMShare 让别人帮你转,Sharehub 用你的账号自己发。两个可同装,互不依赖,也不同表。
左侧只有一个菜单,四个界面靠顶部页签
1.4 的界面改法:顶部改用后台原生 page-bar 胶囊页签,取消了原先占满首屏的渐变 hero。
首页 / 设置
仪表盘、平台授权状态、重试次数与间隔、文案模板、计划任务地址与 token 重置。授权失效会在这里弹红条。
平台账号
九个平台的密钥与 Token、OAuth 授权、连通测试、默认 Subreddit、默认配图、Graph 版本。
任务队列 / 日志
任务可立即执行、重试、取消;日志按平台、结果、标题筛选,能看完整文案与接口原始响应。
真正高频的入口不在后台菜单里:内容管理列表每行右侧的「社媒分享」按钮,由 Config/Clink.php 注入,点了自动带出标题、链接、摘要、封面。
九个平台,各自有硬限制
下面每一条都来自代码与厂商文档,不是"理论上支持"。
| 平台 | 要什么凭证 | 必须知道的限制 |
|---|---|---|
| 新浪微博 | App Key/Secret + OAuth | ≤140 字;必须带「安全域名」下的链接;不支持 #话题# |
| 微信公众号 | 认证服务号 AppID/Secret + IP 白名单 | 必须有封面 thumb_media_id;默认只存草稿,配置后才提交发布 |
| 企业微信 | 群机器人 Webhook | 只发文本 / Markdown,适合内部通知 |
| 抖音 | Client Key/Secret + 用户 OAuth | 图文至少 1 张图;发布后要平台审核,审核期仅自己可见 |
| X / Twitter | OAuth 2.0(tweet.write) | ≤280,中文按 2 计权;需在开发者后台配回调 |
| 公共主页 + Page Token | 需主页管理员授权;Graph 版本可按账号升级 | |
| OAuth(w_member_social) | 必须带 LinkedIn-Version 头;作者 URN 按账号填 | |
| Telegram | Bot Token + chat_id | Bot 要在目标群/频道里且能发言 |
| web app + OAuth(permanent) | 回调只接受 https;默认 Subreddit 必填;部分版块要 flair;不含图片上传 |
什么会重试,什么不重试
分不清这两类,会看到「一直在重试」或「该重试却不重试」,都以为是 bug。
网络与限流
HTTP 0(超时/DNS)、408、425、429、5xx;平台限流码(微博 10022 等、微信 45009/45011、抖音 2190005、Facebook 4/17/32/613、Reddit RATELIMIT)。
默认 60s / 300s / 900s 三次;平台明确要求等待时取「配置间隔」与 retry_after 的较大值,单次上限 24 小时。
授权与内容问题
401/403、Token 失效、参数错误、缺配图、权限不足、账号未配置或已停用。重试也不会好,只会白跑。
授权类错误写入账号 extra,首页与账号页弹红条「授权失效」,点「重新授权」;授权成功或连通测试通过后自动消失。
不会重复发
已成功的平台记在任务 result JSON 里,重试时跳过;所以不会出现同一篇文章在微博发两遍。
执行前原子抢占(status=0 → 1),超过 10 分钟仍在「执行中」的任务自动释放,避免两个 cron 同时跑同一条。
授权只一键三个,密钥全部加密入库
内置一键 OAuth 是微博、抖音、Reddit;其余手填 Token。凡是密钥都加密存,页面不回显明文。
| 机制 | 做法 | 为什么 |
|---|---|---|
| state 防伪造 | 每次授权生成「平台名.随机串」,写入 HttpOnly Cookie(15 分钟、SameSite=Lax),回调逐字比对 | 防伪造回调与 CSRF;成功后作废,不能重放 |
| 密钥加密 | client_secret / access_token / refresh_token 用 dr_authcode 加密入库 | 页面不回显明文;留空保存表示保持原值 |
| 自动续期 | X、微信、抖音过期前自动刷新;Reddit 用 refresh_token 永久续期 | Facebook / LinkedIn / Telegram 的 Token 过期需人工更新 |
| 两层权限 | 菜单级勾选 + 插件设置里的「允许分享的角色 ID」 | 留空则全部可发;超级管理员始终允许 |
不配这个定时地址,重试就不会自己跑
发布是即时执行的;失败后的"自动重试"完全依赖这条 cron。
上传并安装
dayrui/App/Sharehub 覆盖到站点,应用管理点安装:建 4 张表、生成 install.lock。
配账号与授权
账号页填密钥 → 填回调地址 → OAuth 授权 → 连通测试;未配的平台在发布页不可勾选。
挂 cron(每 1–5 分钟)
首页复制带 token 的地址挂计划任务;可加 &limit=20。token 泄露就在首页重置。
- 无定时排程
- 只有「立即发 + 失败重试」,没有「明早 9 点发」这类排程队列。
- 无视频
- 抖音走图文接口;YouTube、Instagram、TikTok 国际版未接入。
- Reddit 无图
- 图片上传三步流程未实现,封面不随帖发。
- 公众号存草稿
- 默认只在草稿箱,需配置后才提交发布,且必须认证服务号。
- 日志需手清
- 无自动清理,随发布量增长,建议按 90 天自行删除。
- 平台会变
- Graph 版本、LinkedIn-Version、开放平台规则调整,驱动需跟着升级。