CDS内容分发系统:一人团队的内容工业化解决方案
基于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的方法:
- 使用Chrome浏览器登录目标平台
- 打开开发者工具(F12)→ Application → Cookies
- 导出为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月
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)