大家好,我是何三,80后老猿,独立开发者
每次发布内容到多个平台时,你是不是也厌倦了重复的复制粘贴?调整格式到眼花,检查发布状态到手软。作为一名内容创作者,我深知这种痛苦——上周就因为手动同步时漏了一个平台,错过了最佳流量时段。
但你知道吗?用Python搭建一个自动化发布工作流,其实只需要5分钟。用deepseek的AI能力结合playwright浏览器自动化,实现了小红书、知乎等平台的一键发布不是不可能。更棒的是,系统会自动记录发布日志,第二天我只需要查看成功率报表,再也不用一个个平台检查了。
当然本篇文章所有内容只对技术进行探讨,请大家自觉遵纪守法,如违规违法与作者无关。
为什么选择这个技术组合?
传统API对接总让人头疼——每个平台的接口文档都不一样,认证流程复杂,还要处理各种限流。而playwright直接模拟浏览器操作,完美绕过这些麻烦。配合deepseek的AI能力,可以自动将内容适配不同平台的风格要求。
先看看核心模块的安装,打开你的终端运行:
pip install playwright deepseek-api loguru
playwright install
从内容生成到自动发布的全流程
假设我们已经用deepseek生成了一篇关于"Python自动化技巧"的文章,现在要发布到小红书和知乎。这是完整的自动化脚本:
import os
from loguru import logger
from playwright.sync_api import sync_playwright
from deepseek_api import DeepSeek
# 初始化日志和AI
logger.add("publish.log", rotation="1 day")
deepseek = DeepSeek(api_key=os.getenv("DEEPSEEK_KEY"))
def adapt_content(platform, original_content):
"""使用AI适配不同平台的内容风格"""
prompt = f"将以下内容转换为适合{platform}风格的文案,保持核心信息不变:\n{original_content}"
return deepseek.generate(prompt)
def publish_xiaohongshu(title, content, images=None):
"""小红书发布逻辑"""
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
try:
page.goto("https://creator.xiaohongshu.com")
# 这里简化了登录流程,实际应使用存储的cookies
page.click("button.publish-btn")
page.fill("textarea.title", title)
page.fill("div.editor", content)
if images:
for img in images:
page.click("input.upload-btn")
page.set_input_files("input.upload-btn", img)
page.click("button.submit-btn")
logger.success("小红书发布成功")
return True
except Exception as e:
logger.error(f"小红书发布失败: {str(e)}")
return False
finally:
browser.close()
def publish_zhihu(question, answer):
"""知乎发布逻辑"""
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
try:
page.goto("https://www.zhihu.com")
page.click("button.WriteButton")
page.fill("input.QuestionInput", question)
page.fill("div.RichText-editor", answer)
page.click("button.SubmitButton")
logger.success("知乎发布成功")
return True
except Exception as e:
logger.error(f"知乎发布失败: {str(e)}")
return False
finally:
browser.close()
if __name__ == "__main__":
original_content = """Python自动化可以大幅提升工作效率。
本文介绍了5个实用技巧,包括文件处理、邮件自动发送等..."""
# 平台特定内容适配
xhs_content = adapt_content("小红书", original_content)
zh_content = adapt_content("知乎", original_content)
# 执行发布
publish_xiaohongshu("Python自动化5大技巧", xhs_content, ["pic1.png"])
publish_zhihu("如何用Python提高工作效率?", zh_content)
关键点解析与避坑指南
- 登录状态保持:实际应用中应该使用
playwright
的storage_state
保存登录状态,避免每次都需要登录:
context = browser.new_context(storage_state="auth.json")
page = context.new_page()
- 内容适配优化:通过调整prompt可以让AI更好地适应平台风格。比如对小红书可以添加:
prompt += "请使用更多emoji和分段,添加1-2个相关话题标签"
- 异步处理提升速度:如果发布平台较多,可以使用
asyncio
并行执行:
import asyncio
async def publish_all():
await asyncio.gather(
async_publish_xiaohongshu(),
async_publish_zhihu()
)
日志系统带来的改变
自从加入loguru
模块后,我的发布流程变得透明多了。每天早上的第一件事就是查看publish.log
:
2024-03-20 09:00:12 | SUCCESS | 小红书发布成功
2024-03-20 09:01:05 | SUCCESS | 知乎发布成功
2024-03-20 09:01:23 | WARNING | 微博发布超时,已重试
更强大的是可以添加错误自动通知,当连续出现失败时发送警报到我的飞书:
logger.add(
lambda msg: send_lark_alert(msg) if "ERROR" in msg else None,
level="ERROR"
)
进阶:添加自动重试机制
网络波动是发布失败的主要原因之一,这个改进版本添加了智能重试:
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=1, min=4, max=10))
def publish_xiaohongshu(title, content):
# 原有逻辑不变
现在系统会在失败后等待4秒重试,第二次等待8秒,最多尝试3次。这个简单的改进让我的发布成功率从92%提升到了99.7%。
完整项目结构建议
当你要管理多个平台时,建议这样组织项目:
ai_publisher/
├── platforms/
│ ├── xiaohongshu.py
│ ├── zhihu.py
│ └── __init__.py
├── adapters/
│ ├── content_ai.py
│ └── image_processor.py
├── logs/
│ └── publish.log
├── config.py
└── main.py
每个平台的发布逻辑单独维护,通过main.py
统一调度。这种结构在新增平台时特别方便,我上周加入B站发布只用了15分钟。
你可能遇到的现实问题
在实际运行中,我发现小红书的反爬机制比较严格。解决方案是:
- 降低操作速度,关键步骤间添加延迟
- 使用真人操作模式的鼠标移动轨迹
- 随机化操作间隔时间
from time import sleep
import random
def human_delay():
sleep(random.uniform(0.5, 2.0))
# 在关键操作前调用
page.click("button")
human_delay()
现在你只需要把精力完全放在内容创作上,发布的事情就交给Python小弟了。 对了,上述代码只是通过deepseek结合playwright的一种思路,代码仅供参考
本篇文章所有内容只对技术进行探讨,请大家自觉遵纪守法,如违规违法与作者无关。