基于RPA+浏览器自动化,实现小红书、X/Twitter、即梦AI的全流程自动化发布

一、前言:内容创作者的效率困境

作为独立开发者或小型内容团队,你是否遇到过这些场景:

  • 日更博主:每天花2小时手动发布图文,重复劳动消耗创作热情
  • 多平台运营:同一内容需要分别登录小红书、Twitter、公众号,逐个上传图片、填写文案
  • AI绘图工作流:在即梦生成图片后,还要手动下载、整理、再发布到各平台
  • 小团队协作:1个人运营5-10个账号,人力成本居高不下

CDS(Content Distribution System) 正是为解决这些问题而生。它是一个基于Python + DrissionPage的开源自动化发布系统,通过模拟浏览器操作,实现”生成-管理-发布”全流程自动化。


二、系统架构与技术选型

2.1 核心架构

┌─────────────────────────────────────────────────────────────┐
│                    CDS 内容分发系统                          │
├─────────────────────────────────────────────────────────────┤
│  即梦AI模块        小红书模块        X/Twitter模块          │
│  ├─ 图片生成       ├─ 图文发布       ├─ 推文发布            │
│  ├─ 参考图上传     ├─ 多图支持       ├─ 图片附件            │
│  ├─ 批量下载       ├─ 话题标签       └─ Cookie管理          │
│  └─ Cookie注入     └─ Cookie注入                            │
├─────────────────────────────────────────────────────────────┤
│              飞书多维表格(可选扩展)                         │
│              ├─ 图片上传                                      │
│              ├─ 数据记录                                      │
│              └─ 内容归档                                      │
└─────────────────────────────────────────────────────────────┘

2.2 技术栈

技术

用途

选型理由

DrissionPage

浏览器自动化

比Selenium更轻量,支持同步/异步模式,元素定位更精准

Python 3.8+

核心语言

生态丰富,适合快速开发

JSON Cookie

身份认证

跨平台兼容,易于管理和迁移

CSS/XPath

元素定位

灵活应对页面结构变化

2.3 为什么选择DrissionPage而非Selenium?

# Selenium 写法(繁琐)
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "button")))
element.click()

# DrissionPage 写法(简洁)
from DrissionPage import ChromiumPage

page = ChromiumPage()
page('css:button').click()  # 一行搞定

DrissionPage的优势: - ✅ 内置智能等待,无需显式sleep - ✅ 链式操作,代码更简洁 - ✅ 支持直接执行JavaScript - ✅ 内存占用更低


三、核心模块详解

3.1 即梦AI图片生成模块

功能特性: - 自动注入Cookie登录 - 支持参考图上传(最多4张) - 提示词从Markdown文件读取,便于管理 - 智能检测生成完成,自动下载4张图片 - 支持自定义输出前缀和时间戳命名

核心代码片段:

class JimengTest:
    def __init__(self):
        self.page = None
        
    def start_browser(self):
        """启动浏览器"""
        co = ChromiumOptions()
        co.headless(False)  # 可视化模式便于调试
        co.set_argument('--window-size=1920,1080')
        self.page = ChromiumPage(co)
    
    def inject_cookies(self):
        """注入Cookie实现免登录"""
        self.page.get("https://jimeng.jianying.com")
        
        # 从多个路径自动搜索Cookie文件
        cookie_files = self.find_cookie_files()
        for cookie_file in cookie_files:
            with open(cookie_file, "r", encoding="utf-8") as f:
                cookies = json.load(f)
                for cookie in cookies:
                    self.page.set.cookies({
                        'name': cookie.get('name'),
                        'value': cookie.get('value'),
                        'domain': cookie.get('domain', '.jianying.com'),
                        'path': cookie.get('path', '/'),
                    })
    
    def wait_for_generation(self, timeout=600):
        """智能等待生成完成"""
        # 记录生成前的图片URL
        old_urls = set(self.page.run_js('''
            const imgs = document.querySelectorAll('img[src*="tos-cn"]');
            return Array.from(imgs).map(img => img.src);
        '''))
        
        start_time = time.time()
        while time.time() - start_time < timeout:
            # 检测新图片
            result = self.page.run_js('''
                const imgs = document.querySelectorAll('img[src*="tos-cn"]');
                const imageData = [];
                for (const img of imgs) {
                    const rect = img.getBoundingClientRect();
                    imageData.push({
                        url: img.src,
                        width: rect.width,
                        height: rect.height
                    });
                }
                return imageData;
            ''')
            
            # 筛选出新图片(尺寸大于100x100排除缩略图)
            new_images = [
                img for img in result
                if img['url'] not in old_urls
                and img['width'] > 100 and img['height'] > 100
            ]
            
            if len(new_images) >= 4:
                return True
                
            time.sleep(3)
        
        return False

使用方式:

# 1. 编辑提示词文件
vim ~/.openclaw/CDS/jimeng/提示词.md

# 2. 准备参考图(放入参考图/目录)
ls 参考图/
# front.jpg side.jpg full.jpg

# 3. 执行生成
python3 test_full_flow.py --prefix 角色名

# 输出:图集/角色名_20250311_143022_1.png

3.2 小红书发布模块

功能特性: - 支持最多18张图片 - 自动截断超过1000字的正文 - 话题标签自动解析 - 自动注入Cookie

使用方式:

cd ~/.openclaw/CDS/xiaohongshu
python3 main_script.py \
    --images photo1.jpg photo2.jpg \
    --title "自动化发布测试" \
    --content "这是由CDS系统自动发布的内容..." \
    --topics "技术分享 Python 自动化"

3.3 X/Twitter发布模块

python3 ~/.openclaw/CDS/x/post.py \
    --text "CDS内容分发系统 - 让内容发布自动化 ��" \
    --image "/path/to/screenshot.png"


四、完整工作流实战

4.1 场景:虚拟偶像日更运营

需求: - 每天生成4张角色图 - 同步发布到小红书、Twitter - 记录到飞书表格便于管理

自动化脚本:

#!/bin/bash
# daily_workflow.sh

PREFIX="角色A_$(date +%Y%m%d)"

# 1. 生成图片
cd ~/.openclaw/CDS/jimeng
python3 test_full_flow.py --prefix $PREFIX

# 2. 发布到小红书
cd ~/.openclaw/CDS/xiaohongshu
python3 main_script.py \
    --images ../../jimeng/图集/${PREFIX}_*.png \
    --title "今日角色展示 - $(date +%m月%d日)" \
    --content "由AI生成的角色图,喜欢请点赞关注~" \
    --topics "虚拟偶像 AI绘画 角色设计"

# 3. 发布到Twitter
python3 ~/.openclaw/CDS/x/post.py \
    --text "Daily character showcase generated by AI �� #AIArt #VirtualIdol" \
    --image ~/.openclaw/CDS/jimeng/图集/${PREFIX}_1.png

echo "$(date): 工作流执行完成" >> workflow.log

配合crontab实现定时任务:

# 每天早上9点自动执行
0 9 * * * /bin/bash /home/user/daily_workflow.sh

4.2 场景:游戏买量素材批量生成

需求: - 批量生成100张不同风格的广告素材 - 支持A/B测试

实现思路:

# batch_generate.py
import subprocess
import time

styles = ["赛博朋克", "二次元", "写实风格", "像素风"]
prompts = [
    "游戏角色战斗场景",
    "游戏装备展示",
    "游戏界面截图",
    "角色立绘"
]

for i, style in enumerate(styles):
    for j, prompt in enumerate(prompts):
        # 写入提示词文件
        with open("提示词.md", "w") as f:
            f.write(f"## 当前提示词\n\n{style}风格的{prompt}")
        
        # 执行生成
        prefix = f"ad_{style}_{j}"
        subprocess.run([
            "python3", "test_full_flow.py",
            "--prefix", prefix
        ])
        
        time.sleep(30)  # 避免请求过于频繁


五、快速部署指南

5.1 一键安装

# 方式1:curl
curl -fsSL https://raw.githubusercontent.com/xixiluo95/CDS/main/install.sh | bash

# 方式2:wget
wget -qO- https://raw.githubusercontent.com/xixiluo95/CDS/main/install.sh | bash

安装脚本会自动完成: 1. 克隆仓库到 ~/.openclaw/CDS/ 2. 创建Skill链接 3. 配置Cookie目录 4. 检测依赖(Python、DrissionPage)

5.2 Cookie配置

获取Cookie的方法:

  1. 使用Chrome浏览器登录目标平台
  2. 打开开发者工具(F12)→ Application → Cookies
  3. 导出为JSON格式,或使用EditThisCookie插件

放置Cookie文件:

# 小红书
cp xiaohongshu_cookies.json ~/.openclaw/CDS/xiaohongshu/cookies/

# X/Twitter
cp twitter_cookies.json ~/.openclaw/CDS/x/cookies/

# 即梦AI
cp jimeng_cookies.json ~/.openclaw/CDS/jimeng/cookies/

5.3 项目结构

CDS/
├── install.sh            # 一键安装脚本
├── uninstall.sh          # 卸载脚本
├── xiaohongshu/          # 小红书发布模块
│   ├── main_script.py    # 主入口
│   ├── core_module.py    # 核心逻辑
│   └── cookies/          # Cookie存储
├── x/                    # X/Twitter模块
│   ├── post.py
│   └── cookies/
├── jimeng/               # 即梦AI模块
│   ├── test_full_flow.py # 完整流程
│   ├── 提示词.md         # 提示词管理
│   ├── 参考图/           # 参考图目录
│   ├── 图集/             # 输出目录
│   └── cookies/
└── feishu-bitable/       # 飞书扩展
    └── feishu_bitable.py


六、常见问题与解决方案

Q1: 页面元素定位失败怎么办?

原因: 目标平台更新了页面结构

解决:

# 使用更稳健的选择器策略
# 方法1:多备选方案
elements = page.eles('css:button')  # 先获取所有按钮
for btn in elements:
    if '发布' in btn.text:
        btn.click()
        break

# 方法2:XPath模糊匹配
page.ele('xpath://*[contains(text(), "发布")]').click()

Q2: 高峰期生成超时?

解决: 调整超时参数

# 高峰期可能需要600秒(10分钟)
DEFAULT_GENERATION_TIMEOUT = 600

Q3: 如何防止被检测为机器人?

建议: - 设置合理的操作间隔(time.sleep(2-5)) - 使用headless=False模式模拟真实用户 - 定期更新Cookie - 避免短时间内大量请求


七、适用场景总结

用户类型

痛点

CDS解决方案

独立博主

日更耗时

定时任务自动发布

MCN机构

多账号管理

批量发布+Cookie隔离

虚拟偶像

物料产出慢

批量生成+自动分发

游戏买量

素材需求大

批量抽卡+A/B测试

跨境电商

多平台运营

一键同步多平台


八、开源与扩展

GitHub地址: https://github.com/xixiluo95/CDS

欢迎贡献: - 新增平台支持(抖音、B站、Instagram等) - 优化元素定位策略 - 添加更多AI绘图平台支持

相关项目: - xiaohongshu-mcp - Golang + go-rod实现 - xhs-toolkit - Python + Selenium实现


九、结语

CDS的核心价值在于将重复性的内容发布工作自动化,让创作者把精力集中在内容创作本身。它不是要替代人类的创意,而是消除那些机械、重复的操作。

对于小型团队和个人创作者来说,这意味着: - 时间解放:从每天2小时的手动发布,变成5分钟的脚本配置 - 人力解放:1个人可以运营过去需要3-5人的账号矩阵 - 产能跃迁:日更10条变成日更100条成为可能

如果你也在为内容分发的效率问题困扰,不妨试试CDS,让你的内容生产进入工业化时代。


许可证: MIT License
作者: xixiluo95
最后更新: 2026年3月

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐