一个一文多发的发布小工具
一个一文多发的发布小工具,作为练手的项目。
概述:
如果有将文章分享到多个平台的需求,可以借助程序来简化这一过程,节省时间并提高效率。
实现思路:
大多数平台支持markdown格式的文本内容,将.md文件作为入口文件读取,发布到各个平台;
- 由于markdown格式的图片为本地/外链地址,为统一路径且支持平台获取图片,需将本地文章的图片地址设置为图床的外链地址;
- 程序会将外链图片地址转成对应的平台图片地址,避免图床图片链接的不稳定和不必要的流量消耗;
发布方式主要使用:平台提供支持的开放API、浏览器自动化模拟发布操作、平台发布接口的请求;
- 由于部分平台涉及加密参数/csrf防御认证等反爬手段,导致功能不稳定及难以维护,如平台涉及请求参数认证,尽量使用自动化的方式实现发布;
- 自动化发布默认使用谷歌浏览器,使用dp读取本地浏览器用户文件信息,运行程序前需关闭已经运行的本地浏览器,否则会造成冲突;
使用python语言实现,异步方式进行多平台的文章发布,可以节省发布的时间,用AI辅助写了一个简单的前端页面,通过页面操作上传本地md格式文件的方式实现文章发布。
各平台发布方式:
csdn:使用自动化发布方式,浏览器平台页面js自动读取外链图片地址转为平台图片地址,模拟用户发布文章操作;
掘金:草稿请求不需要参数认证,发布请求使用自动化发布方式,浏览器平台页面js自动读取外链图片地址转为平台图片地址,完成发布操作;
博客园:平台提供metaweblog的开放api接口支持(需开启并配置自己账号的api权限),支持图片素材的上传,直接请求接口发布即可;
微信公众号:平台提供开发者的开放api接口支持(需开启并配置自己账号的api权限),支持图片素材的上传,直接请求接口发布即可;
自建博客网站:以halo为例,一般建站软件都提供个人令牌的用户认证,可直接请求文章发布接口,或读取浏览器的用户cookie作为认证进行发布;
发布一篇文章的操作示例:
将程序打包成.exe或在开发的ide上运行,程序会自动打开谷歌浏览器(必须关闭本地已经运行的谷歌浏览器),访问http://127.0.0.1:8000/,页面如下:
默认开启所有的发布源,点击页面的”选择文件“进行本地.md文件的上传,然后点击上传;
默认未设置无头浏览器,点击上传后会弹出对应网站的自动化操作(如果介意可以开启无头设置);
等待文章发布完,在页面发布结果中会更新发布文章的状态,比如下面的发布结果:
接下来就可以在各发布源平台上看到自己发布的文章了。
相关资源收集:
这里在网络收集了一些发布工具,可供参考:
openWrite:一款收费的一文多发软件,通过添加浏览器插件在网站页面上完成文章的发布,支持多个平台,使用较为简便,缺点是部分功能收费,用户cookie会被上传;
blog-auto-publishing-tools:使用selenium浏览器自动化模拟用户发布操作,支持的平台挺多,自动化方式可以保证功能上的长期稳定,维护起来也较为方便,项目地址:https://github.com/ddean2009/blog-auto-publishing-tools/tree/main
siyuan-plugin-publisher:思源笔记的一文多发插件,需要使用思源笔记导入/写文章,通过该插件进行文章的发布,使用较为简便,支持的平台也很多,发布时需要注意文章的书写格式,项目地址:https://github.com/terwer/siyuan-plugin-publisher/tree/main
artipub:一款开源的一文多发平台,后端使用自动化工具Puppeteer模拟发布,功能较为丰富,但是项目已长时间未更新,项目地址:https://github.com/crawlab-team/artipub
项目仓库地址:Cyanty/one-article-submission: 一个一文多发的发布小工具