每天面对电脑打开百家号后台把前一天写好的文章一篇篇复制粘贴、上传封面、填标签、点发布……这种重复劳动我干了将近两年。直到有一天我算了一笔账一个号每天发5篇每篇从排版到发布平均要8分钟一个月就是20个小时一年就是整整10个工作日。而这10天时间完全可以用一套自动化流水线省下来。这篇文章要分享的就是我怎么用阿里云上免费的AI能力主要是阿里云百炼大模型平台的免费token资源官方对新用户有赠送具体以当期活动为准搭了一套“选题→生成→发布”全自动内容流水线让百家号每天定时自动发文章我只需要在手机上花10分钟做审核。整个过程不需要买服务器不需要写复杂的爬虫用的都是现成的开放接口和免费额度核心代码量不到300行。无论你是个人博主、新媒体运营还是小团队负责人这套思路和代码都可以直接抄作业。1. 先拆解需求自动发布到底在自动什么很多人一听“自动发布”就觉得是要做个机器人模拟人工点击浏览器按钮。真不是这样那样做既不稳定又容易触发平台风控。我理解的自动发布是把“发布一篇文章”这个动作拆成三个独立环节然后逐环自动化。1.1 三个环节内容生成、内容组装、调度发布内容生成是让大模型根据你给定的主题或关键词直接产出标题、正文、摘要、标签。这一步解决的是“写什么”的问题。日常运营中最耗精力的其实是这一步找选题、搭框架、写初稿、改标题一套下来一两个小时很正常。大模型虽然不能完全替代人工创作但用来生产“及格线以上”的初稿完全够用尤其是在热点资讯、产品测评、知识科普这类结构化比较强的领域。内容组装是把大模型产出的文本转成百家号接口需要的数据格式。比如正文是Markdown还是HTML封面图用哪张标签怎么填分类选什么原创声明开不开这些都需要按百家号开放接口的规范拼装。这个环节最容易出问题因为每个平台的字段要求都不一样少传一个参数或者格式不对接口就会报错。调度发布是让整个流程定时触发。你可以设定每天早上8点自动跑一遍当天的内容任务生成3到5篇文章然后自动提交发布。这一步用APScheduler或者系统的crontab就能解决。整套架构下来我要做的只剩两件事提前准备好主题列表第二天花几分钟审核生成的文章是否合规。1.2 为什么选阿里云百炼作为AI能力来源市面上能做内容生成的大模型接口很多我最终选择阿里云百炼主要是看中三点。一是接入成本低。阿里云百炼提供了OpenAI兼容的接口也就是说你之前写过的任何调用OpenAI的代码只要改一下base_url和API Key就能无缝切换过来。哪怕你完全没用过大模型接口照着官方文档十分钟也能跑通第一个请求。二是模型性价比高。百炼平台上有多个档位的模型从轻量的qwen-turbo到能力更强的qwen-plus、qwen-max日常写文章用qwen-turbo就足够价格非常低而且新用户有免费token额度前期测试基本不花钱。三是生态配套省心。如果你后续想把流水线部署到云端阿里云有函数计算、定时任务等产品和百炼是同一套账号体系联动起来非常方便。另外多说一句我为什么不用本地部署的开源模型。原因很简单本地跑大模型需要一张像样的显卡显存至少12G才能流畅跑7B参数级别的模型还要处理环境配置、模型下载这些问题。对于内容运营来说这不是最优解把精力放在内容本身才是正事。对比项阿里云百炼本地部署开源模型其他云厂商大模型接口前期成本有免费额度几乎为零需要显卡成本高部分有免费额度但可能有绑卡要求接入难度OpenAI兼容接口十分钟搞定需配置推理环境学习成本高各厂商SDK不同需单独适配稳定性云服务免运维受本地硬件影响取决于厂商服务质量与国内平台联动与阿里云生态无缝集成需自己打通需自己打通2. 准备阶段开发者权限、密钥和环境搭建写代码之前得先把账号和权限准备好。这块看起来琐碎但漏掉任何一步后面都要花双倍时间排查。我把自己踩过的坑都标出来。2.1 开通阿里云百炼领取免费资源首先你需要一个阿里云账号用支付宝或者手机号就能注册。登录后进入阿里云百炼控制台在控制台搜索“百炼”即可首次进入会让你开通服务。这里有个容易被忽略的地方百炼平台上的模型是分“免费额度”和“付费额度”的新用户开通后系统会自动在账户里发放一定量的免费token额度有效期通常从开通之日算起。你开通后一定要去控制台的“费用与成本”或“资源管理”里看一眼额度是否到账。然后创建API-KEY。在百炼控制台左侧菜单找到“API-KEY管理”点创建系统会生成一串以“sk-”开头的密钥。这个密钥就是你调用大模型的凭证务必复制保存到本地关掉页面后就看不到了。我把密钥放在环境变量里代码中通过os.getenv()读取而不是硬编码在代码文件中。这样即使代码要分享给同事也不会泄露密钥。还有一步确认你要用的模型名称。目前常写文章用这几个模型qwen-turbo快速便宜适合批量初稿、qwen-plus质量更均衡适合成稿要求高的场景、qwen-max能力最强但价格更高。我默认用qwen-turbo跑不通再升级。2.2 申请百家号的内容发布接口权限百家号这边要说明一下百家号的开放平台确实提供了内容发布类接口但权限不是默认开放的。你需要用你的百家号账号登录百度智能云或百家号开放平台找到“内容接入”或“开放接口”相关的申请入口提交应用审核。审核会看你账号的运营状况、内容质量、是否有违规记录一般需要几天时间。如果你的账号还没拿到接口权限也有过渡方案先用“存草稿”的方式半自动发布。意思是大模型自动生成内容后代码帮你把标题、正文、摘要、标签都填好保存为草稿你每天去后台看一眼点一下发布按钮就行。这一步省掉的是排版和填表的时间虽然还没做到全自动但已经能节省一大半精力。另外提醒一句自动发布被平台判定为“机器批量内容”的风险是存在的。所以接入接口后建议控制发布频率和单日数量新号一天1到2篇权重稳定后再慢慢加。别想着一天发几十篇薅流量那是拿账号寿命做赌注。2.3 本地开发环境配置代码我用Python写因为生态最全相关SDK示例最多。你需要准备Python 3.9以上版本openai库用来调用百炼的OpenAI兼容接口requests库用来调百家号HTTP接口APScheduler库用来做定时调度python-dotenv库方便加载环境变量安装命令一条搞定pip install openai requests apscheduler python-dotenv在项目根目录创建.env文件写入你的密钥DASHSCOPE_API_KEYsk-你的密钥 BAIJIA_APP_ID你的应用ID BAIJIA_APP_SECRET你的应用密钥然后写一个公共模块统一加载这些配置。这里有一个小建议.env文件一定加入.gitignore实测下来很多人就是在这个细节上翻车的密钥传到公开仓库几分钟就会被爬虫扫到。3. 核心代码实战从生成到发布的完整链路下面进入正题。我会按模块拆解代码你可以直接复制到自己的项目里改一改就跑。整体链路是给定一个主题列表→循环调用大模型生成文章→组装发布数据→调用发布接口→记录发布结果。3.1 第一步用大模型生成结构化文章内容调用百炼接口的方式和调用OpenAI几乎一样。我封装了一个ArticleGenerator类输入主题输出包含标题、摘要、正文、标签的字典。import os import json from openai import OpenAI class ArticleGenerator: def __init__(self): self.client OpenAI( api_keyos.getenv(DASHSCOPE_API_KEY), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1 ) self.model qwen-turbo def generate(self, topic: str) - dict: prompt f 你是一位资深自媒体作者请围绕主题《{topic}》写一篇适合发布在内容平台的原创文章。 要求 1. 标题有吸引力不超过30个字。 2. 摘要100字左右概括文章核心观点。 3. 正文800到1200字分3到5个小段落每段有小标题语言通俗易懂。 4. 标签3到5个用逗号分隔。 5. 内容必须客观真实不能编造数据不能违反法律法规。 请以JSON格式输出字段包括title, summary, content, tags。 resp self.client.chat.completions.create( modelself.model, messages[{role: user, content: prompt}], temperature0.7, response_format{type: json_object} ) content resp.choices[0].message.content return json.loads(content)这里有两个细节值得注意。第一response_format参数指定为json_object可以强制大模型输出合法JSON省去自己解析文本的麻烦。不过要记住这个参数不是所有模型都支持qwen-turbo目前是可以的但以后换模型时需要再确认。第二提示词里我明确要求“不能编造数据”因为大模型生成的内容里偶尔会出现“据某某机构统计”这类虚构信息这对内容创作者是有风险的。实测下来qwen-turbo生成一篇1000字左右的文章大约需要10到20秒消耗的token大约在1500到2500之间。我后面会专门算一笔账看看免费额度到底能撑多久。3.2 第二步把文章内容组装成百家号可识别的格式拿到大模型输出的JSON后接下来要把它转成百家号发布接口需要的数据。不同平台的接口文档差异较大但基本原理一样把Markdown格式的正文转成接口支持的格式然后按字段名拼装。我这里以“内容发布接口”为例接口地址以百家号开放平台文档为准。import requests import time import hashlib import hmac class BaijiaPublisher: def __init__(self): self.app_id os.getenv(BAIJIA_APP_ID) self.app_secret os.getenv(BAIJIA_APP_SECRET) self.base_url https://baijiahao.baidu.com/api def _sign(self, params: dict) - str: # 按百家号开放平台要求的签名算法生成签名 # 实际实现以文档为准这里给出常见思路 sorted_keys sorted(params.keys()) query .join(f{k}{params[k]} for k in sorted_keys) return hmac.new( self.app_secret.encode(utf-8), query.encode(utf-8), hashlib.sha256 ).hexdigest() def publish(self, article: dict) - dict: # 组装接口数据 data { app_id: self.app_id, title: article[title], summary: article[summary], content: article[content], # 内部为Markdown或HTML取决于接口要求 tags: article[tags], timestamp: int(time.time()), } data[sign] self._sign(data) resp requests.post(f{self.base_url}/content/publish, jsondata) return resp.json()这里我要特别说明一下签名逻辑。平台接口为了防止数据被篡改一般都会要求调用方在请求里附带一个签名。签名算法一般是把业务参数按字典序排序、拼接字符串再使用应用密钥做HMAC加密。我代码里给了核心思路但实际上你还是要以百家号开放平台官方文档的签名说明为准不同平台的参数编码规则多少有点区别。千万别拿我的签名代码直接上线可能过不了验证。另外一个坑是正文格式。有些接口要求传HTML有些要求传Markdown。如果你的接口要求HTML可以利用markdown库把大模型输出的Markdown一键转换import markdown html_content markdown.markdown( article[content], extensions[extra, sane_lists, nl2br] )小段标题、列表、加粗这些格式都会自动转成HTML标签实测转换效果不错。封面图如果你是个人号不一定有免费的图库API可用最简单的方式就是不放封面图或者用占位图服务生成一张纯色图。等账号有了一定收益再考虑接付费图库。3.3 第三步定时调度实现无人值守发布模块写好了最后一步是让流程每天自动跑。我用APScheduler的cron触发器来实现“每天8点生成并发布”的效果。下面这段代码是我本地一直跑着的调度脚本。import logging from datetime import datetime from apscheduler.schedulers.blocking import BlockingScheduler from article_generator import ArticleGenerator from baijia_publisher import BaijiaPublisher logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s, handlers[ logging.FileHandler(auto_publish.log, encodingutf-8), logging.StreamHandler() ] ) def job(): topics [2025年智能家居选购指南, Python自动化办公实战技巧, 新手如何运营内容平台账号] generator ArticleGenerator() publisher BaijiaPublisher() for topic in topics: try: article generator.generate(topic) result publisher.publish(article) logging.info(f主题《{topic}》发布成功{result}) except Exception as e: logging.error(f主题《{topic}》发布失败{e}) if __name__ __main__: scheduler BlockingScheduler(timezoneAsia/Shanghai) scheduler.add_job(job, cron, hour8, minute0) scheduler.start()运行这个脚本的前提是把它放在后台持续运行。本地电脑的话可以用nohup或者进程守护工具后续想长期跑我建议直接部署到阿里云函数计算上用定时触发器代替本地调度这个后面细说。日志模块我是认认真真做的。每一篇文章发布成功还是失败都会写进日志文件。没有日志出了问题你根本不知道是token用完了还是百家号接口风控了还是网络超时了。日志就是机器发布系统的“眼睛”这一步千万别省。4. 跑通之后才算真的开始成本核算、问题排查和避坑经验代码写完、脚本能跑之后这个项目才完成一半。剩下的关键是免费额度到底够不够用上线后会不会遇到各种奇怪的问题以及怎么规避平台风险。这部分才是真正决定这套方案能跑多久的核心。4.1 免费资源能用多久我算了一笔账以qwen-turbo为例它是百炼平台上最便宜的模型之一。生成一篇1000字左右的文章加上提示词和系统指令我实测下来input和output合计大约消耗1500到2500个token。取个平均值2000个token一篇。假设每天发布3篇那就是6000个token。阿里云新用户赠送的免费token额度不同的活动周期会有变化但从我拿到的额度来看支撑几千篇的量级是足够的相当于持续运行好几个月甚至更久。这还不算其它有免费额度的模型。如果说额度用完了怎么办qwen-turbo本身的价格也便宜拿运营角度看一篇成品内容的大模型生成成本折算下来也就几分钱。哪怕你一天发20篇一天的成本也不到一包辣条钱这个投入产出比是完全划算的。所以不用担心免费额度用完就要停摆真正的成本大头还是你的时间。4.2 常见问题与排查速查表我把这段时间跑系统遇到的高频问题整理成了表格按“症状→原因→解决方式”的格式列出故障现象常见原因排查思路与解决办法调用百炼接口返回401API Key错误或已失效先检查.env里密钥是否带上sk-前缀再到百炼控制台确认密钥状态如果失效就新建一个返回429或限流提示免费额度QPS较低短时间请求过多请求之间加sleep随机延时例如每次请求间隔5到15秒大模型输出不是合法JSON模型偶尔会“话痨”在JSON前后加注释代码里加一个“提取JSON块”的兜底函数遇到无法解析时重试一次百家号接口提示签名错误参数编码或排序方式不对对照开放平台文档检查签名串拼接规则注意timestamp是否和服务端差太多正文HTML格式错乱Markdown转换时table或代码块不兼容发布前先存草稿预览一遍把不支持的复杂格式去掉文章发布成功但阅读量为0账号权重低或标题不够吸引人把标题改成疑问句或数字型标题坚持稳定更新权重慢慢会起来4.3 几个真实的坑说多了都是泪第一别把发布频率拉满。我最初测试的时候一天发了10篇第二天账号直接被平台判定为疑似营销号流量断崖式下跌。后来老老实实降回一天2到3篇持续了一周才恢复。自动发布的核心价值是解放时间不是想办法刷量稳定输出才是长期主义的打法。第二大模型生成的文章里偶尔会有“看起来像真的、其实是编的”内容特别是引用数据、名人名言、政策条款的时候。我做过一次统计生成20篇文章里面大概会有2到3篇出现虚构引用的现象。这些内容一旦发出去轻则被读者指出不严谨重则触碰平台规则。所以我坚持每篇文章发布前人工过目一遍重点看数据和引用的部分这个环节省不得。第三如果你的目标是利用AI写作的流量收益建议在发布时手动标注“内容由AI辅助生成”这既是平台规则的要求也是对读者负责。实测下来标注AI辅助生成并不会对流量造成特别明显的压制反而能避免后续被平台认定是“批量低质内容”账户风险更小。第四还有个小操作值得安利把大模型生成的每篇文章都留底稿。我会在发布前自动保存一份到本地按日期分类的文件夹里万一平台那边数据异常或者文章被误删本地还能找回原文重新发布。这属于一个非常便宜的备份操作但真遇到事的时候能救命。4.4 后续还能怎么扩展这套流水线不只是能给百家号用。我目前已经把它扩展到了其他内容平台原理是一模一样的换一个发布接口换一套字段映射生成文章那部分完全复用。如果你有多个平台的运营需求建议把“内容生成”和“内容发布”彻底解耦生成出来的文章先存到数据库再分别推给不同平台。这样就算某个平台接口改版了也只要改对应的发布模块其他部分不受影响。还有一个升级方向是把“选题”也自动化。现在我的方案还在手动维护主题列表下一步可以每天自动抓取热点关键词丢给大模型做选题建议再自动生成文章。这个链路一旦打通就真的是从选题到发布全流程闭环了。最后说一点我的真实感受。这套系统跑通之后最大收获不是省了多少时间而是让我想明白了一件事自媒体运营里真正值钱的不是“动手发布”这个动作而是“判断什么内容值得发”这个决策。把机器能做的重复劳动交给机器把自己省下来的精力花在选题判断、内容审核和用户互动上这才是自动化的意义所在。希望这套方案也能帮你从重复劳动里解放出来。