← 返回博客

博客园自动发布:链接刚打开是404,先别急着重发

·博客园自动发布博客园 MetaWeblog技术博客一稿多发博客园图床

博客园自动发布:链接刚打开是404,先别急着重发

一句话回答:博客园自动发布的图片能原生转存到自己的图床,比 CSDN、掘金省心;但草稿会占用标题、公开链接偶尔有 CDN 索引延迟——判断发布是否成功只认后台 stats 里的状态,不看公开页打不打得开,公开页 404 不构成重发的理由。

有人自己调博客园官方开放的 MetaWeblog 接口写了个发布脚本,本地测试跑通,返回也是成功,点开链接一看却是 404。以为哪里没配对,又发了一次。第二天登录博客园后台,同一篇文章躺了两份,正文一字不差,标题一个原样、一个带着“(1)“的后缀。这不是接口的问题,是发布链接的公开页跟后台状态之间存在一段时差,脚本没等这段时差过去就下了结论。

博客园有官方接口这件事,反而容易让人漏看几个真坑

CSDN 没有对外开放的发布 API 不一样,博客园从很早就提供了标准的 MetaWeblog 协议接口和更完整的 Open API,网上能搜到不少用 Python、Node.js 甚至 VSCode 插件调用这套接口自动发博客园的教程。正因为“有官方接口”这件事被反复强调,很多人默认调通了接口就等于万事俱备,反而漏看了几个跟接口开不开放没关系的坑:草稿和正式发布共用标题命名空间、公开页有 CDN 传播延迟、图片转存失败时命令不会直接报错但正文会裂图。这几个坑不管走 MetaWeblog 官方协议还是别的自动化路径,都躲不开。

图片不用愁图床,这是博客园比 CSDN、掘金省心的一处

正文 Markdown 里直接写本机绝对路径的图片引用就行,发布时会自动上传到博客园自己的图片服务器,生成一个博客园域名下的可访问链接,不需要自己另外配七牛云、GitHub+jsdelivr 或者 PicGo 这类图床方案。这跟不少人自己折腾“免费图床”方案形成了对比,搜“博客园 图床”能看到大把博主在讲怎么用第三方图床,其实博客园自己的图片服务器就能直接用,速度也不差。

要留意的是转存这一步可能会部分失败:发布结果里如果 images_failed 大于 0,或者状态显示 partial,说明有图没转存成功,正文对应位置会裂图,这不算完整成功。常见原因是图片源本身不可达,比如引用了一个带防盗链或者已经失效的外部图片 URL。稳妥的做法是图片先落到本机(下载到本地或者直接用截图/导出文件),正文里引用本机路径,而不是赌一个外部链接博客园的服务器一定能拉得动。

草稿会占用标题,同名正式发布直接报错

想先存草稿给自己或者团队看一眼,再决定要不要正式发布,是很自然的想法。但博客园这条命令里,--draft 存下的草稿会占用这个标题:之后拿同一个标题走正式发布,服务端会直接拒绝,报“相同标题的博文已存在”。更麻烦的是,命令目前没有“把已存的草稿转成正式发布”这个能力,草稿和正式发布之间没有升级路径,只能重新走一遍。

想先过一遍草稿的话,草稿标题得跟正式标题完全不一样,比如加个占位后缀,确认内容没问题之后,用最终想要的标题重新发一次正式版,草稿留在后台不用管。这个坑在其他文章类平台不算典型,博客园这条命令的行为就是这样,提前知道能省一次踩坑。

发布链接刚打开是 404,先别急着重发

这是本文开头那个场景的根源。命令返回发布成功、后台 stats 也显示这篇文章已发布,但拿浏览器或者 curl 去访问公开链接,短时间内可能持续 404。这背后是 CDN 缓存和索引更新有一段传播延迟——后台状态和公开可见状态不是同一时刻生效的。

这段延迟没有固定上限:两周内的实测记录里,短则几秒钟自愈,长则有三次记录到十几分钟到数小时才恢复。我们不对这段延迟的时长做任何承诺,也不给“等多久还没恢复就该重发”这样的界限——因为这个界限本身不存在。唯一确定的判据是:发布是否成功,只看后台 stats 里的状态,不看公开页能不能打开stats 显示已发布,就不要因为公开页一时 404 去重发,不管已经等了多久。重发的结果不是“修复”了这次失败,是让同一篇内容变成两篇。如果当次任务时间线里等不到公开页恢复,如实告诉用户“后台已确认发布成功,公开页还没刷新出来”,把最终确认留到下一次回查,不要赌重发。

另外查证的时候工具也有讲究:用 WebFetch 这类抓取工具回查链接,有时候会因为 UA 或者反爬策略被拦下返回 404,这时候看到的“404”其实是工具被挡住了,不是页面真的不存在;用 curl 直接请求,能不能拿到 200 才是更可靠的判断依据。

让 AI 用你自己的账号接管这一步

PublishPort 的做法是让 AI 在你本机已经登录的博客园账号里执行这些操作,账号登录状态留在你自己的电脑,不上传到云端代管。装好客户端、在博客园后台登录一次,AI 起草内容之后按这几条规则走:图片给本机路径而不是赌一个外部链接,先用占位标题过一遍草稿,正式发布之后如果公开页一时打不开也不会急着重发,而是先回查后台状态再下结论。

下载 PublishPort之后,接管的不只是发布这一步本身。文章发出去以后同样有评论区,把评论和私信接住可以参考私信评论自动回复怎么做,跟发布走的是同一套本机账号体系,不是发完就撒手不管。

具体怎么做

  1. 装客户端并登录下载 PublishPort,在客户端里用真实浏览器登录一次博客园账号,账号密码不经过我们的服务器。
  2. 图片先落到本机:Markdown 正文里引用的图片用本机绝对路径,别直接贴一个不确定能不能被服务器拉取的外部链接。
  3. 想先过目就用占位标题存草稿ppcli cnblogs article "标题占位-draft" --file draft.md --draft,确认内容没问题后,换成最终标题重新走一遍正式发布,不要在正式发布时沿用草稿标题。
  4. 正式发布ppcli cnblogs article "最终标题" --file draft.md --execute,不加 --execute 会直接被拒绝,这是防误触发布的安全闸,不是参数校验用的预览模式。
  5. 发布完先查后台状态,判断成败不看公开页:命令返回的链接如果一时打不开,用 curl 而不是抓取工具直接确认,但真正的判据是后台 stats 里的发布状态——stats 显示已发布就不要重发,公开页刷新需要的时间从几秒到数小时都记录过,没有固定上限,等不到也不构成重发的理由。

具体参数以 ppcli cnblogs --help 为准,命令行版本会持续迭代。

边界与注意

博客园作为技术社区,对内容质量和转载标注的要求跟 CSDN、掘金是同一个方向——原创内容自己发布不涉及转载授权问题,但转载别人的文章要标注来源链接。按国家网信办等四部门联合发布的《人工智能生成合成内容标识办法》,AI 生成合成内容需要主动标识,这条规则自 2025 年 9 月 1 日起正式施行。用 AI 辅助起草、自己审核核实内容准确性、如实标注之后再发布,跟不加区分地批量甩内容完全是两回事。没有工具能保证博客园的公开页永远不出现传播延迟,也没有工具能替你判断内容本身值不值得发——这两件事都得留给发布之前的人工确认。

发布前检查清单

常见问题 / FAQ

博客园有官方开放的发布 API 吗?

有。博客园提供标准的 MetaWeblog 协议接口和更完整的 Open API,这跟 CSDN 没有对外开放接口不一样。但接口开放不代表自动化发布就没有坑,草稿标题占用、公开页 CDN 延迟这些问题走官方接口一样会遇到。

博客园新注册的博客审核要多久?

我们没有对博客开通审核的时长做过系统实测,不对具体时长做承诺,不同账号可能差异较大。这跟文章逐篇的机器审核是两回事,博客园对单篇文章的审核比 CSDN、头条号这类平台宽松,但首页推荐位是否展示有额外的编辑规则,不代表文章本身没发出去。

博客园发布成功但打开链接显示 404,是不是没发出去?

不是——只要后台 stats 显示已发布,就是发布成功了,公开页 404 不能作为判定失败的依据。这是公开页的 CDN 缓存和索引更新存在传播延迟,后台状态和公开可见状态不是同一时刻生效的。先用 curl 直接确认而不是靠抓取工具;这段延迟没有固定上限,实测记录过从几秒到数小时不等,不管等了多久,判断发布成败只认后台 stats 状态,不要重发,重发只会多出一篇重复文章。

博客园存的草稿之后能转成正式发布吗?

不能。草稿和正式发布之间没有“转正”路径,草稿标题一旦被正式发布沿用会直接报错。想先过草稿的话用一个跟正式标题不同的占位标题,确认无误后重新走一遍正式发布。

博客园的图片需要自己找图床吗?

不需要。正文里引用本机路径的图片,发布时会自动转存到博客园自己的图片服务器,这一点比 CSDN、掘金省心。但外部图片链接如果对方服务器拉不动,会导致转存部分失败,稳妥做法还是优先用本机路径。

博客园跟 CSDN、掘金一稿多发有什么共同的坑?

代码块高亮、图床转存、标签体系在这几个平台之间基本不通用,这部分通用坑点在技术博客一稿多发里讲过。博客园单独拎出来说,是因为草稿标题占用和公开页 CDN 延迟这两处是它自己特有的逻辑,跟 CSDN 的“提交成功不等于审核通过”不是同一类问题。