大家好,我是何三,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)

关键点解析与避坑指南

  1. 登录状态保持:实际应用中应该使用playwrightstorage_state保存登录状态,避免每次都需要登录:
context = browser.new_context(storage_state="auth.json")
page = context.new_page()
  1. 内容适配优化:通过调整prompt可以让AI更好地适应平台风格。比如对小红书可以添加:
prompt += "请使用更多emoji和分段,添加1-2个相关话题标签"
  1. 异步处理提升速度:如果发布平台较多,可以使用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分钟。

你可能遇到的现实问题

在实际运行中,我发现小红书的反爬机制比较严格。解决方案是:

  1. 降低操作速度,关键步骤间添加延迟
  2. 使用真人操作模式的鼠标移动轨迹
  3. 随机化操作间隔时间
from time import sleep
import random

def human_delay():
    sleep(random.uniform(0.5, 2.0))

# 在关键操作前调用
page.click("button")
human_delay()

现在你只需要把精力完全放在内容创作上,发布的事情就交给Python小弟了。 对了,上述代码只是通过deepseek结合playwright的一种思路,代码仅供参考

本篇文章所有内容只对技术进行探讨,请大家自觉遵纪守法,如违规违法与作者无关。