距离上一篇开发日记已经过去了一周多,这段时间一直在打磨营销板块的核心功能——多渠道内容发布系统。今天重点聊聊公众号自动发布这个"大坑"。
为什么做公众号自动发布?
联创圈的营销板块支持AI生成文章,但生成之后还要手动复制到各个平台发布,效率太低。运营同学的需求很直接:"一键发到公众号、WordPress、网站,不要再让我手动复制粘贴了"。
听起来简单,实际做起来全是坑。
踩坑一:Unicode编码导致草稿乱码
第一个坑就卡了很久。调用微信公众号创建草稿接口,传过去的中文全部变成了 \uXXXX 转义序列,草稿里全是乱码。
排查后发现是 json.dumps(ensure_ascii=True) 的锅——Python默认会把中文转成ASCII转义序列。微信API收到这种编码后不会自动解码,直接原样存储了。
修复方案:
- 使用
json.dumps(ensure_ascii=False).encode('utf-8') - 请求头设置
Content-Type: application/json; charset=utf-8
改完之后中文终于正常了,但这种编码问题真的很容易忽略。
踩坑二:标题被截断只有十几个字
第二个坑是标题显示不全。运营反馈"公众号同步的标题太短,标题不全",一看日志发现微信API对标题有限制。
一开始我按32个字截断,后来运营说"标题最大为64个字",又改了一遍。最终实现按字节计算长度并智能截断,保证不超限的同时尽量保留完整标题。
踩坑三:标题重复出现两次
这个是最诡异的问题——文章在网站和公众号里都出现了两次标题。排查后发现三个原因叠加:
- 模板渲染时自动加了标题,但文章内容本身已经包含标题
- 发布到公众号时,title字段和content里的标题同时发了
- 标题剥离逻辑不完整,只处理了h1标签,没处理h2/h3
解决方案是加了一层标题检测:_remove_title_from_content() 函数会先清理标题文本,再用正则匹配移除内容中已存在的标题标签,确保不会重复。
踩坑四:配图全是绿色
最后一个是视觉问题。运营反馈"配图为什么只是绿色",查看后发现所有文章配图都用了默认的青绿色主题。
原因是一个变量引用错误导致颜色方案没有正确切换。修复后扩展到了12套配色方案,包括深蓝、紫色、橙红、墨黑、翠绿、玫红等,每篇文章随机或按主题选择不同配色,视觉效果丰富多了。
今天还做了什么?
除了修Bug,今天还完成了文章模板的全面升级:
- 参考微信公众号优秀排版,重新设计了5套模板主题
- Markdown标题转换问题修复(
####四级标题之前不渲染) - 封面图和统计卡片支持多样化配色
小结
一天下来最大的感触:看似简单的"一键发布"功能,背后要处理的细节远比想象中多。编码、截断、去重、配色,每一个环节出问题都会影响用户体验。
好在这些坑都填完了,明天继续推进社媒内容板块的开发。
登录后才能发表评论
立即登录