不买订阅、不交账号:这款开源工具把53平台分发做成了本地软件(github封神项目:自由发)
一个“反SaaS”的自媒体分发工具:为什么有人把53个平台的发布权,塞回了你自己的电脑里
#开源工具#本地运行#自媒体分发#数据主权#浏览器自动化#Electron应用
如果你同时运营三个以上的内容平台,大概率经历过同一种疲惫:一篇文章在小红书写完,改格式搬到知乎,再调字号贴进公众号,视频还要单独传抖音和B站。于是“一键分发”工具成了刚需。但市面上的选择,几乎都指向同一个方向——把你的账号授权给云端,让第三方服务器替你“发”。
xingguangYan/freeflow(中文名“自由发”)选了一条完全相反的路。它不连接任何第三方服务器,不用你的账号密码换取API token,而是在你自己的电脑上开一个浏览器,像一个真人一样,依次打开每个平台的编辑页,把内容填进去。所有登录态、素材、发布记录,全部留在本机。用作者的话说:不破解任何软件,不经过任何第三方服务器。
这个定位听起来朴素,但它撬动的是一组非常具体的取舍。下面从它解决什么、怎么解决、边界在哪里三个层面拆开看。
它真正在解决的问题,不是“快”,是“信任”
#反SaaS#账号安全#零后端
云端一键分发工具的逻辑是:你把账号权限交给我,我用官方API或逆向接口替你发。好处是干净、快、有数据看板;代价是你必须信任一个第三方长期持有你的账号凭据,并且接受“工具跑路或停服,历史内容与排期就一起消失”的风险。
Freeflow的逻辑是把“信任”从产品中抽掉。你不需要信任任何人,因为工具本身没有后端。每一次发布,都是你本机的一个Chromium实例在访问平台的公开网页界面,用你刚刚扫码登录的会话,完成一次“人肉操作”的自动化。平台看到的行为模式,和一个真人在浏览器里逐项填写标题、正文、封面的过程高度接近,而不是一个来自陌生IP的API调用。
这种模式并不新鲜,浏览器自动化早已成熟。Freeflow的差异在于,它把这件事产品化到了“普通人不用配环境也能用”的程度:自带Electron窗口,双击即开;扫码登录即保存登录态;平台改版也不会整盘失效,因为有三级容灾兜底。换句话说,它用工程手段把“自己搭一套自动化脚本”的门槛,压到了接近一个桌面软件的水平。
平台覆盖:53个的数字背后,是一套“不追求完美”的工程哲学
#多平台发布#一键多发#内容创作
README列出的覆盖清单很长:国内图文24个、国内视频13个、海外15个,合计53个平台。从微信公众号、小红书、知乎、B站,到Medium、Dev.to、LinkedIn、Reddit、Substack,再到YouTube、TikTok、Instagram,主流内容阵地基本被圈了进来。
但这个数字需要被正确理解。Freeflow不是为每个平台逐一签订官方合作协议、获得稳定API的“深度集成”,而是靠浏览器界面去适配。界面会变,选择器会失效,这是浏览器自动化原生的脆弱性。作者的处理方式很务实:给每个平台写专属选择器作为第一优先级;专属失效时,退到一套通用启发式规则去“猜”输入框和按钮;再不行,自动打开编辑页,把内容复制到剪贴板,降级为手动粘贴模式。
这就是README里“三级容灾”的实际含义。它不承诺100%自动成功,但它承诺失败时你不会丢失内容,不会卡死在半路。对于“实验性”平台,页面结构变动频繁,这种降级设计几乎是唯一可行的策略。
同样的务实主义也体现在微信公众号的处理上。公众号的群发涉及扫码确认,Freeflow没有试图绕过这道安全机制,而是把它标为“半自动”:内容自动填入,最后一步“发表”留给人来完成。它没有为了追求“全自动”的标签,去触碰平台明确设置的人机边界。
三个被低估的细节:登录态、图片、登录墙
#账号安全#浏览器自动化#Electron应用
在一键分发这个场景里,最容易让工具“看起来能用、实际不能用”的,往往不是发布动作本身,而是发布之前的准备状态。Freeflow在这几个细节上做了值得注意的处理。
登录态双通道检测。很多自动化工具会误判“你已经登录了”,结果发布到一半撞上登录墙。Freeflow同时检查URL特征和登录cookie,两个通道都通过才认为会话有效;如果发布过程中真的撞到登录页,它会自动停下来打开登录窗口,等你扫码完成后从断点继续,而不是把这次任务判死。这个设计把“登录过期”从一个致命错误降级成了一个可恢复的中断。
正文插图走base64内联。从素材库插入图片时,图片被转成base64直接嵌入内容,而不是上传到某个图床再引用链接。这意味着发布出去的内容不依赖任何外部图床的存活,也不会因为图床防盗链而在平台上显示裂图。对于需要长期存档的内容来说,这是一个安静但重要的保障。
每个账号独立浏览器配置目录。多账号运营者最怕的是A平台的cookie污染B平台的会话。Freeflow为每个平台/账号隔离独立的浏览器profile,扫码登录后本地持久化保存。这既是为了稳定性,也是一种基础的账号卫生——不同账号之间不共享任何浏览器层面的状态。
它不适合谁,以及它明确不做什么
任何工具的价值,一半由它做什么定义,另一半由它不做什么定义。Freeflow在README末尾用一小段“法律与边界”划出了后者的范围:只操作你自己拥有或有权操作的账号;部分平台的服务条款限制自动化,风险由使用者自担;不包含、不破解任何商业软件的代码或授权。
这段话翻译成使用场景就是:它适合你为自己运营的账号提升分发效率,不适合用来批量注册、养号、或对不属于你的账号进行任何操作。浏览器自动化在平台侧的识别能力面前并不是隐形的,尤其是高频、机械化的操作模式。Freeflow没有内置任何对抗平台风控的机制,它默认你以接近真人的节奏使用它。
另一个需要诚实指出的限制是平台原生功能的缺失。通过网页界面发布,意味着你只能用该平台网页编辑器提供的字段。定时发布、违禁词检测、素材库这些Freeflow自带的能力可以补上一部分,但平台特有的API级功能不在覆盖范围内。它是一个“把内容送到”的工具,不是一个“把内容运营到极致”的工具。
获取与上手:目前没有“一键安装”,但路径是清晰的
#Windows桌面#Node.js#免费开源
回到最实际的问题。目前Freeflow没有在Releases中提供预编译的.exe,GitHub Releases页面显示为空。README里出现的D:\探索\...路径是作者本地环境的示例,不是公开下载地址。要运行它,需要走源码构建:
- 确保本机有**Node.js 20+**环境。
- 克隆仓库后,在项目根目录执行
npm install安装依赖,再执行npm run pack进行打包,输出目录为release\自由发-win32-x64。 - 运行该目录下的
自由发.exe即可启动。数据目录位于同级的resources\app\data下,可以整体迁移,但必须放在可写目录,不能放在Program Files。 - 如果只是想快速试用而不打包,也可以用
npm start以Electron调试模式运行,或者node server.js后在浏览器访问http://127.0.0.1:8917。
对于不熟悉Node.js的用户,这道门槛是真实存在的。但这也正是“本地优先、开源免费”这个定位的必然代价:没有中心化服务器替你承担构建和分发,你就需要自己完成最后一步。一旦跨过这一步,你得到的是一个不需要注册、不需要订阅、不需要把账号交给任何人的分发工具,数据目录可以拷在U盘里带走。
结语:它代表的是“工具归还控制权”的那条路
Freeflow不太可能取代融媒宝、蚁小二这类成熟的云端矩阵工具。后者在平台覆盖的稳定性、数据看板、团队协作上积累的工程厚度,不是一个个人开源项目短期内能追上的。但它提出了一个值得认真对待的问题:当你每个月为“一键分发”付费的时候,你买的到底是分发能力,还是把账号控制权托管出去所支付的安全溢价?
对于内容量不大、平台数不多、但对账号主权和数据位置敏感的个人创作者来说,Freeflow提供的是另一种答案:慢一点,手动一点,偶尔需要降级处理,但每一份登录态、每一张图片、每一条发布记录,都在你自己的硬盘里。它不试图成为你内容运营的中心,它只是把你本来就要做的重复劳动,自动化到“双击一个窗口,勾选账号,点发布”的程度,然后退到后台,不向你要任何东西。
项目地址:github.com/xingguangYan/freeflow。如果你手边有Node.js环境,克隆下来跑一次npm run pack,是理解它最好的方式。