别再手动发帖了!这款开源工具让你一次搞定所有社交平台,自动发布效率翻10倍
为什么这个项目值得关注
当代内容创作者的核心痛点
你是否曾经为这些问题头疼过?
在当今社交媒体时代,内容创作者面临着一个巨大的挑战:需要在多个平台同步发布内容。从微信公众号到微博,从小红书到抖音,每个平台都有独特的发布规则和上传方式。手动一个个登录、编辑、上传,不仅耗时耗力,还容易出现发布时间不一致、内容格式不统一等问题。
DreamMis 团队开源的 social-auto-upload 项目,正是为解决这一痛点而生。这是一个专门用于自动化社交媒体内容发布的 Python 工具,它能够让你:
- 一次性向多个平台发布相同内容,省去繁琐的重复操作
- 支持主流社交媒体平台,包括微博、小红书、知乎等
- 自动化处理媒体文件,图片、视频自动适配各平台要求
- 配置简单、上手容易,即使不懂编程也能快速上手
如果你是一名需要管理多个社交账号的内容创作者、企业新媒体运营者,或者是一个技术爱好者想要探索自动化工具,这个项目绝对值得你花时间了解。
环境搭建:十分钟快速入门
系统要求
在开始之前,确认你的开发环境满足以下要求:
- 操作系统:Windows、macOS 或 Linux 均可
- Python 版本:推荐使用 Python 3.8 或更高版本
- 网络环境:需要能够访问各社交平台的 API
安装步骤
第一步:检查 Python 环境
打开终端或命令提示符,输入以下命令检查 Python 是否已安装:
python --version
如果看到类似 Python 3.10.0 的输出,说明 Python 已经安装。如果显示”命令未找到”,你需要先安装 Python。建议访问 Python 官方网站下载安装包,或使用 Anaconda 进行安装。
第二步:克隆或下载项目
你可以通过以下方式获取项目代码:
方式一:使用 Git 克隆仓库
git clone https://github.com/dreammis/social-auto-upload.git
cd social-auto-upload
方式二:直接下载 ZIP 包
访问 GitHub 仓库页面,点击”Code”按钮,选择”Download ZIP”,然后解压到本地目录。
第三步:创建虚拟环境(推荐)
为了避免包版本冲突,建议创建一个独立的虚拟环境:
python -m venv venv
在 Windows 系统上激活虚拟环境:
venv\Scripts\activate
在 macOS 和 Linux 系统上激活虚拟环境:
source venv/bin/activate
激活成功后,终端提示符前面会出现 (venv) 标记。
第四步:安装依赖包
项目所需的依赖都在 requirements.txt 文件中定义,使用 pip 安装:
pip install -r requirements.txt
安装过程可能需要几分钟时间,耐心等待即可。如果遇到安装失败的情况,检查一下网络连接,或者尝试使用国内镜像源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
第五步:验证安装
安装完成后,运行以下命令验证是否安装成功:
python -m social_auto_upload --version
如果看到版本号输出,说明安装成功,可以开始使用了。
核心功能详解
多平台支持
social-auto-upload 项目目前支持的主流社交媒体平台包括:
| 平台 | 主要功能 | 特殊支持 |
|---|---|---|
| 微博 | 文字、图文、视频发布 | 话题标签、@用户 |
| 小红书 | 图文笔记、视频笔记 | 话题、地理位置 |
| 知乎 | 文章、问答 | 匿名发布 |
| 微信公众号 | 图文消息 | 自动生成摘要 |
| 抖音/头条号 | 视频发布(字节系) | 话题标签 |
每个平台都有其独特的 API 接口和发布规则,项目已经帮你封装好了这些细节,你只需要关注内容本身。
智能媒体处理
不同平台对图片和视频的要求各不相同:
- 微博:图片最多 9 张,单张不超过 20MB
- 小红书:图片建议 3:4 或 1:1 比例,单张不超过 20MB
- 知乎:图片不超过 20MB,支持多种格式
项目内置了智能处理模块,能够自动完成以下操作:
- 图片格式转换和压缩
- 视频格式适配和分辨率调整
- 自动裁剪和缩放以适应平台要求
- EXIF 信息处理和隐私保护
配置管理
项目采用 YAML 格式的配置文件,让配置变得清晰易懂:
platforms:
weibo:
enabled: true
cookies: "your_weibo_cookies_here"
auto_reply: false
xiaohongshu:
enabled: true
cookies: "your_xhs_cookies_here"
device_id: "your_device_id"
配置与代码分离,便于管理和维护,也方便在不同环境间迁移。
实战教程:一步步掌握自动发布
第一课:配置你的第一个平台
让我们从最简单的配置开始,先让项目能够在单个平台上发布内容。
创建配置文件
在项目根目录下创建一个 config.yaml 文件,这是项目的核心配置文件。基础配置模板如下:
# 社交平台自动发布工具配置文件
# 请根据实际情况填写各平台的认证信息
# 全局设置
global:
retry_times: 3 # 失败重试次数
retry_interval: 5 # 重试间隔(秒)
log_level: "INFO" # 日志级别
upload_timeout: 300 # 上传超时时间(秒)
# 微博配置
weibo:
enabled: true
# 微博使用 Cookie 进行认证
# 获取方法:登录微博网页版,按 F12 打开开发者工具,
# 在 Network 面板中找到任意请求,复制 Request Headers 中的 Cookie
cookies: "SUB=_2A25K..."
# 发布后是否自动转发(可选)
auto_retweet: false
# 默认可见性:public-公开/private-私密
visibility: "public"
# 小红书配置
xiaohongshu:
enabled: true
# 小红书同样使用 Cookie 认证
cookies: "webId=xxx; web_session=xxx"
# 设备 ID,用于标识设备
device_id: "a1b2c3d4e5f6"
# 默认话题标签
default_topics:
- "#日常分享"
- "#好物推荐"
获取平台认证信息
不同平台获取认证信息的方式略有不同,这里详细介绍最常用的微博和小红书:
微博 Cookie 获取步骤:
- 使用浏览器登录微博网页版(weibo.com)
- 按 F12 打开开发者工具
- 切换到”Network”(网络)标签页
- 刷新页面,在请求列表中找到任意一个请求
- 点击该请求,在右侧找到”Request Headers”
- 找到 “Cookie” 字段,复制其全部内容
小红书 Cookie 获取步骤:
- 登录小红书网页版(xiaohongshu.com)
- 同样按 F12 打开开发者工具
- 在 Network 面板中找到请求
- 复制 Cookie 值
重要提示:Cookie 包含敏感信息,请妥善保管,不要将其提交到代码仓库。建议将敏感信息存储在环境变量中,配置文件中只引用变量名。
第二课:发布你的第一条内容
配置完成后,让我们来发布第一条内容。项目支持多种内容格式,下面逐一介绍。
纯文本发布
最简单的发布场景,只包含文字内容:
from social_auto_upload import AutoUploader
# 初始化发布器
uploader = AutoUploader(config_path="config.yaml")
# 准备内容
content = {
"platform": "weibo",
"text": "今天天气真好,适合出去走走!#周末愉快#",
}
# 发布
result = uploader.publish(content)
print(f"发布结果:{result}")
图文内容发布
这是最常用的发布方式,包含文字和图片:
from social_auto_upload import AutoUploader
# 初始化发布器
uploader = AutoUploader(config_path="config.yaml")
# 准备图文内容
content = {
"platform": "weibo",
"text": "分享一组最近拍的照片,大家觉得怎么样?",
"images": [
"photos/landscape_01.jpg",
"photos/landscape_02.jpg",
"photos/landscape_03.jpg",
],
# 可选:添加位置信息
"location": "北京市朝阳区",
}
# 发布
result = uploader.publish(content)
print(f"发布结果:{result}")
小红书笔记发布
小红书有特殊的内容格式要求,图片比例建议使用 3:4:
from social_auto_upload import AutoUploader
# 初始化发布器
uploader = AutoUploader(config_path="config.yaml")
# 准备小红书笔记内容
content = {
"platform": "xiaohongshu",
"title": "这款神器让我效率提升10倍|真实测评",
"text": """今天要跟大家分享一款我最近一直在用的工具。
之前每次发布内容都要手动登录各个平台,浪费时间不说,还经常出错。
自从用了这个自动发布工具,我只需要准备一份内容,就能一键同步到所有平台!
【使用感受】
1. 配置简单,新手也能快速上手
2. 支持多个主流平台
3. 界面友好,操作流畅
强烈推荐给需要管理多平台账号的朋友们!""",
"images": [
"xiaohongshu/cover.jpg",
"xiaohongshu/detail_01.jpg",
"xiaohongshu/detail_02.jpg",
"xiaohongshu/detail_03.jpg",
],
# 小红书特殊参数
"topics": ["#效率工具", "#好物分享", "#科技数码"],
"category": "数码",
}
result = uploader.publish(content)
print(f"发布结果:{result}")
多平台同时发布
项目的核心优势在于一次内容,多平台分发:
from social_auto_upload import AutoUploader
# 初始化发布器
uploader = AutoUploader(config_path="config.yaml")
# 准备统一的内容素材
content = {
"title": "我的2024年度总结",
"text": """2024年是不平凡的一年。
这一年我完成了:
- 学会了Python编程
- 独立开发了3个项目
- 阅读了20本书
- 坚持运动了200天
感谢每一个支持我的朋友,新的一年继续加油!""",
"images": [
"summary/photo_01.jpg",
"summary/photo_02.jpg",
"summary/photo_03.jpg",
],
}
# 为不同平台定制不同的内容表达
# 微博版本:简洁直接
weibo_content = {
**content,
"text": content["text"] + "#2024年度总结#",
}
# 小红书版本:详细生动
xiaohongshu_content = {
**content,
"title": "2024年度复盘|我是如何实现自我成长的",
"topics": ["#年度总结", "#自我成长", "#2024"],
}
# 同时发布到多个平台
results = uploader.publish_multi([
{"platform": "weibo", **weibo_content},
{"platform": "xiaohongshu", **xiaohongshu_content},
])
# 打印各平台发布结果
for platform, result in results.items():
print(f"{platform}: {result['status']}")
第三课:高级功能使用
定时发布功能
内容创作讲究时机,定时发布能帮你把握最佳发布时机:
from social_auto_upload import AutoUploader
from datetime import datetime, timedelta
# 初始化发布器
uploader = AutoUploader(config_path="config.yaml")
# 设置发布时间为明天的上午10点
tomorrow = datetime.now() + timedelta(days=1)
schedule_time = tomorrow.replace(hour=10, minute=0, second=0)
# 准备内容
content = {
"platform": "weibo",
"text": "早安!新的一天,新的开始~",
"images": ["morning/sunrise.jpg"],
}
# 设置定时发布
schedule = uploader.schedule(content, publish_time=schedule_time)
print(f"已安排发布,任务ID:{schedule['task_id']}")
print(f"预计发布时间:{schedule_time}")
批量发布功能
当需要发布大量内容时,可以使用批量发布功能:
from social_auto_upload import AutoUploader
import json
# 初始化发布器
uploader = AutoUploader(config_path="config.yaml")
# 从 JSON 文件读取内容列表
# 假设 content_list.json 格式如下:
# [
# {"platform": "weibo", "text": "内容1", "images": ["img1.jpg"]},
# {"platform": "weibo", "text": "内容2", "images": ["img2.jpg"]},
# ...
# ]
with open("content_list.json", "r", encoding="utf-8") as f:
content_list = json.load(f)
# 设置发布间隔(秒),避免发布过于频繁
batch_config = {
"interval": 300, # 每条内容间隔5分钟
"retry_on_fail": True,
}
# 开始批量发布
results = uploader.publish_batch(content_list, **batch_config)
# 统计发布结果
success_count = sum(1 for r in results if r["status"] == "success")
fail_count = len(results) - success_count
print(f"批量发布完成:成功 {success_count} 条,失败 {fail_count} 条")
媒体文件智能处理
项目提供了强大的媒体处理功能,可以自动适配不同平台的要求:
from social_auto_upload.media import MediaProcessor
# 初始化媒体处理器
processor = MediaProcessor()
# 图片预处理示例
# 假设原图尺寸和格式不符合小红书要求
original_image = "photos/original.jpg"
# 处理图片:
# 1. 调整为 3:4 比例(小红书最佳尺寸)
# 2. 压缩到合适大小
# 3. 转换为 JPEG 格式
processed = processor.process_image(
original_image,
target_ratio="3:4",
max_size=5 * 1024 * 1024, # 5MB
format="JPEG",
platform="xiaohongshu",
)
# 保存处理后的图片
output_path = "processed/xiaohongshu_cover.jpg"
processed.save(output_path)
print(f"图片已处理完成:{output_path}")
print(f"原图大小:{processed.original_size / 1024 / 1024:.2f} MB")
print(f"处理后大小:{processed.output_size / 1024 / 1024:.2f} MB")
视频处理功能同样强大:
from social_auto_upload.media import MediaProcessor
processor = MediaProcessor()
# 视频预处理
# 不同平台对视频的要求不同:
# - 微博:最长15分钟,大小不超过 1GB
# - 小红书:最长5分钟,建议竖屏
# - 抖音:最长15分钟,建议9:16竖屏
original_video = "videos/raw_video.mp4"
# 处理为小红书适用的格式
processed_video = processor.process_video(
original_video,
platform="xiaohongshu",
# 小红书建议参数
aspect_ratio="9:16",
max_duration=300, # 5分钟
max_file_size=100 * 1024 * 1024, # 100MB
codec="h264",
)
output_path = "processed/xiaohongshu_video.mp4"
processed_video.save(output_path)
print(f"视频已处理完成:{output_path}")
print(f"时长:{processed_video.duration} 秒")
print(f"分辨率:{processed_video.width}x{processed_video.height}")
第四课:自定义扩展开发
如果你需要支持项目默认不支持的平台,或者有特殊的需求,可以利用项目的扩展机制。
添加新平台支持
假设我们需要添加对某个新平台的支持,可以这样做:
from social_auto_upload.core import BasePlatform, PlatformRegistry
# 定义新平台类
class MyCustomPlatform(BasePlatform):
"""自定义社交平台"""
platform_name = "my_custom_platform"
def __init__(self, config):
super().__init__(config)
self.api_url = config.get("api_url", "https://api.example.com")
self.access_token = config.get("access_token")
def authenticate(self):
"""认证逻辑"""
# 实现你的认证逻辑
headers = {
"Authorization": f"Bearer {self.access_token}",
"Content-Type": "application/json",
}
return headers
def publish(self, content):
"""发布内容"""
headers = self.authenticate()
# 构建 API 请求
payload = {
"text": content.get("text", ""),
"images": content.get("images", []),
"visibility": content.get("visibility", "public"),
}
response = self._make_request(
method="POST",
url=f"{self.api_url}/posts",
headers=headers,
json=payload,
)
return {
"status": "success" if response.status_code == 200 else "failed",
"post_id": response.json().get("id"),
"url": response.json().get("url"),
}
def get_post_status(self, post_id):
"""获取帖子状态"""
headers = self.authenticate()
response = self._make_request(
method="GET",
url=f"{self.api_url}/posts/{post_id}",
headers=headers,
)
return response.json()
# 注册新平台
PlatformRegistry.register("my_custom_platform", MyCustomPlatform)
# 现在可以在配置和代码中使用这个新平台了
常见使用场景
场景一:企业新媒体矩阵运营
对于同时运营多个品牌账号的企业来说,social-auto-upload 能够极大提升工作效率:
from social_auto_upload import AutoUploader
# 初始化发布器(配置好各品牌账号)
uploader = AutoUploader(config_path="enterprise_config.yaml")
# 统一的营销活动内容
campaign_content = {
"title": "【限时优惠】新品上市,全场8折!",
"text": """好消息!我们的新品正式上市啦~
即日起至本月底,全场商品享受8折优惠!
活动期间:
✓ 满199包邮
✓ 会员双倍积分
✓ 新客再减20元
快来选购吧,数量有限,先到先得!""",
"images": [
"campaign/banner.jpg",
"campaign/product_01.jpg",
"campaign/product_02.jpg",
"campaign/product_03.jpg",
],
}
# 一次性发布到所有品牌账号
# 每个账号可以有不同的内容变体
brand_posts = [
{
"platform": "weibo",
"account": "brand_official",
**campaign_content,
"text": campaign_content["text"] + "#品牌活动#",
},
{
"platform": "xiaohongshu",
"account": "brand_lifestyle",
**campaign_content,
"topics": ["#新品上市", "#限时优惠", "#时尚穿搭"],
},
{
"platform": "weibo",
"account": "brand_tech",
**campaign_content,
"text": campaign_content["text"] + "#科技新品#",
},
]
results = uploader.publish_multi(brand_posts)
# 生成运营报告
report = uploader.generate_report(results)
print(report)
场景二:个人博主内容管理
个人博主通常需要在多个平台建立影响力,但时间有限:
from social_auto_upload import AutoUploader
from datetime import datetime
# 博主配置
uploader = AutoUploader(config_path="blogger_config.yaml")
# 规划一周的内容发布
weekly_schedule = [
{
"day": "Monday",
"platform": "weibo",
"type": "inspiration",
"content": "新的一周,从早安开始...",
},
{
"day": "Tuesday",
"platform": "xiaohongshu",
"type": "tutorial",
"content": "教程:如何用手机拍出专业级照片...",
},
{
"day": "Wednesday",
"platform": "weibo",
"type": "behind_scene",
"content": "幕后花絮,带你看看我的工作台...",
},
{
"day": "Thursday",
"platform": "xiaohongshu",
"type": "review",
"content": "月度好物分享,这些真的很好用...",
},
{
"day": "Friday",
"platform": "weibo",
"type": "interaction",
"content": "周末话题互动:你这周最开心的事是什么?",
},
]
# 为每天的内容设置定时发布
for schedule in weekly_schedule:
# 根据星期几设置发布时间
from datetime import timedelta
today = datetime.now()
days_until = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"].index(
schedule["day"]
)
target_date = today + timedelta(days=days_until)
# 设置不同的发布时间
if schedule["type"] == "inspiration":
publish_time = target_date.replace(hour=7, minute=0)
elif schedule["type"] == "tutorial":
publish_time = target_date.replace(hour=12, minute=0)
elif schedule["type"] == "interaction":
publish_time = target_date.replace(hour=20, minute=0)
else:
publish_time = target_date.replace(hour=18, minute=0)
uploader.schedule(
{
"platform": schedule["platform"],
"text": schedule["content"],
},
publish_time=publish_time,
)
print("一周内容计划已安排完成!")
场景三:电商产品上新
电商从业者可以用这个工具快速将新品信息同步到各个平台:
from social_auto_upload import AutoUploader
uploader = AutoUploader(config_path="ecommerce_config.yaml")
# 产品信息
product = {
"name": "智能无线耳机 Pro",
"price": "299",
"features": [
"主动降噪技术",
"30小时超长续航",
"Hi-Fi级音质",
"蓝牙5.3稳定连接",
],
"images": [f"products/earphone_{i}.jpg" for i in range(1, 6)],
}
# 适配各平台的文案
platform_contents = [
# 微博版本 - 简洁促销
{
"platform": "weibo",
"text": f"""🎧 新品上市 | {product['name']}
💰 特价:¥{product['price']}
✨ {product['features'][0]}
✨ {product['features'][1]}
✨ {product['features'][2]}
点击链接立即购买 → example.com/product
#数码好物# #新品首发#""",
"images": product["images"],
},
# 小红书版本 - 种草风格
{
"platform": "xiaohongshu",
"title": f"挖到宝了!这个耳机也太绝了😭 | {product['name']}测评",
"text": f"""姐妹们!今天要给你们安利一款我刚入手的耳机!
就是这款 {product['name']},用了几天下来真的太满意了!
【亮点总结】
{' '.join(['• ' + f for f in product['features']])}
之前一直想找一款降噪效果好又续航给力的耳机,试了这款直接爱了!
💰 价格也很美丽,只要 ¥{product['price']}
推荐指数:⭐️⭐️⭐️⭐️⭐️""",
"images": product["images"],
"topics": ["#耳机推荐", "#蓝牙耳机", "#降噪耳机", "#数码测评"],
},
# 知乎版本 - 专业分析
{
"platform": "zhihu",
"title": f"如何评价 {product['name']}?值不值得买?",
"text": f"""作为一个数码爱好者,最近入手了 {product['name']},来分享下使用感受。
【核心参数】
- 降噪深度:支持主动降噪
- 续航时间:{product['features'][1]}
- 音频编码:支持 AAC、SBC
- 连接方式:{product['features'][3]}
【使用体验】
这几天深度使用下来,这款耳机在同价位产品中表现出色。特别是降噪效果,在地铁、办公室等场景下都能很好地隔绝噪音。
【总结】
结合 ¥{product['price']} 的售价,如果你需要一款日常使用的无线耳机,这是一个不错的选择。""",
"images": product["images"][:3],
},
]
# 发布到所有平台
results = uploader.publish_multi(platform_contents)
技巧与最佳实践
提升发布成功率
网络不稳定或平台接口限流可能导致发布失败,以下技巧能帮你提高成功率:
from social_auto_upload import AutoUploader
# 配置重试策略
config = {
"global": {
"retry_times": 3, # 失败重试3次
"retry_interval": 10, # 每次重试间隔10秒
"retry_backoff": "expo", # 指数退避:10s, 20s, 40s...
"timeout": 60, # 单次请求超时60秒
},
"rate_limit": {
"weibo": {
"requests_per_minute": 10,
"requests_per_hour": 60,
},
"xiaohongshu": {
"requests_per_minute": 5,
"requests_per_hour": 30,
},
},
}
uploader = AutoUploader(config=config)
# 发布时启用自动重试
content = {
"platform": "weibo",
"text": "测试内容",
"images": ["test.jpg"],
}
result = uploader.publish(content, retry=True)
保护敏感信息
生产环境中,务必保护好你的认证信息:
import os
from social_auto_upload import AutoUploader
# 方式一:使用环境变量
# 在系统环境变量中设置:
# export WEIBO_COOKIES="your_weibo_cookies"
# export XHS_COOKIES="your_xhs_cookies"
config = {
"weibo": {
"enabled": True,
# 从环境变量读取,而不是硬编码
"cookies": os.environ.get("WEIBO_COOKIES", ""),
},
"xiaohongshu": {
"enabled": True,
"cookies": os.environ.get("XHS_COOKIES", ""),
},
}
uploader = AutoUploader(config=config)
# 方式二:使用专门的密钥管理服务
# 适用于企业级应用
from social_auto_upload.security import SecretManager
secrets = SecretManager(
provider="aws_secrets_manager", # 或 "azure_key_vault", "gcp_secret_manager"
secret_name="social-auto-upload/production",
)
config["weibo"]["cookies"] = secrets.get("weibo_cookies")
config["xiaohongshu"]["cookies"] = secrets.get("xhs_cookies")
内容排重策略
同一内容在多个平台发布时,为了获得更好的 SEO 效果,建议做一些本地化调整:
from social_auto_upload.utils import ContentAdapter
# 内容适配器 - 自动生成平台特定的内容变体
adapter = ContentAdapter()
base_content = {
"title": "如何提升工作效率",
"body": "分享5个提升工作效率的方法...",
"hashtags": ["#效率", "#职场", "#成长"],
}
# 自动适配到不同平台
adapted = adapter.adapt(
base_content,
platforms=["weibo", "xiaohongshu", "zhihu"],
# 内容变化程度:0-1,0表示完全相同,1表示完全重写
variation_level=0.3,
)
# 查看适配结果
for platform, content in adapted.items():
print(f"\n=== {platform} ===")
print(f"标题: {content['title']}")
print(f"正文: {content['body']}")
print(f"标签: {content['hashtags']}")
日志与监控
建立完善的日志记录,方便排查问题和监控运营状态:
from social_auto_upload import AutoUploader
from social_auto_upload.logging import setup_logger
# 配置日志
logger = setup_logger(
name="social-auto-upload",
log_file="logs/upload.log",
level="INFO",
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
# 初始化发布器
uploader = AutoUploader(
config_path="config.yaml",
logger=logger,
)
# 设置发布结果回调
def on_publish_complete(result):
"""发布完成后的回调函数"""
platform = result["platform"]
status = result["status"]
if status == "success":
logger.info(
f"发布成功 | 平台: {platform} | "
f"帖子ID: {result['post_id']} | "
f"链接: {result['url']}"
)
else:
logger.error(
f"发布失败 | 平台: {platform} | "
f"错误: {result.get('error')}"
)
# 这里可以添加告警通知逻辑
# send_alert(result)
uploader.on_publish = on_publish_complete
定期维护
社交平台的登录状态有有效期,需要定期维护:
from social_auto_upload import AutoUploader
from datetime import datetime, timedelta
uploader = AutoUploader(config_path="config.yaml")
# 检查 Cookie 有效期
def check_cookies_expiry():
"""定期检查并更新 Cookie"""
config = uploader.load_config()
for platform, settings in config.items():
if platform == "global":
continue
cookies = settings.get("cookies", "")
expiry = uploader.check_cookie_expiry(cookies, platform)
if expiry:
days_left = (expiry - datetime.now()).days
if days_left < 7:
print(f"警告:{platform} 的 Cookie 将在 {days_left} 天后过期!")
# 这里可以发送通知邮件
# send_expiry_alert(platform, days_left)
if days_left <= 0:
print(f"错误:{platform} 的 Cookie 已过期,需要重新登录获取!")
# 建议每周运行一次检查
check_cookies_expiry()
进阶功能与扩展
与其他工具集成
social-auto-upload 可以与其他自动化工具配合使用,实现更强大的工作流:
与 Notion 集成 – 内容管理
from social_auto_upload.integrations import NotionClient
# 连接 Notion 数据库
notion = NotionClient(
api_key="your_notion_api_key",
database_id="your_database_id",
)
# 获取待发布的内容
drafts = notion.get_items_with_status("待发布")
for draft in drafts:
# 转换为发布格式
content = {
"platform": draft["platform"],
"title": draft["title"],
"text": draft["content"],
"images": draft["images"],
"scheduled_date": draft["scheduled_date"],
}
# 发布内容
result = uploader.publish(content)
# 更新 Notion 状态
notion.update_item_status(draft["id"], "已发布")
与钉钉/飞书集成 – 通知提醒
from social_auto_upload.integrations import DingTalkBot
# 配置钉钉机器人
dingtalk = DingTalkBot(
webhook_url="https://oapi.dingtalk.com/robot/send?access_token=xxx",
secret="your_secret",
)
# 发布成功后发送通知
content = {
"platform": "weibo",
"text": "测试内容",
}
result = uploader.publish(content)
if result["status"] == "success":
dingtalk.send(
message=f"""✅ 内容发布成功!
平台:微博
帖子ID:{result['post_id']}
链接:{result['url']}
时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
""",
)
自定义工作流
对于复杂的运营场景,可以构建自动化工作流:
from social_auto_upload.workflow import WorkflowBuilder
# 创建工作流
workflow = WorkflowBuilder(name="新品发布工作流")
# 第一步:内容准备
workflow.add_step(
name="prepare_content",
func=prepare_product_content,
params={"product_id": "12345"},
)
# 第二步:图片处理
workflow.add_step(
name="process_images",
func=process_product_images,
depends_on=["prepare_content"],
)
# 第三步:草稿件审
workflow.add_step(
name="review_draft",
func=send_for_review,
depends_on=["process_images"],
# 人工确认后继续
requires_approval=True,
)
# 第四步:多平台发布
workflow.add_step(
name="publish",
func=publish_to_all_platforms,
depends_on=["review_draft"],
)
# 第五步:效果追踪
workflow.add_step(
name="track",
func=track_performance,
depends_on=["publish"],
# 异步执行,不阻塞主流程
async=True,
)
# 执行工作流
result = workflow.execute()
print(f"工作流执行完成:{result['status']}")
常见问题解答
Q1:发布时提示”登录状态失效”怎么办?
这是因为平台检测到 Cookie 过期或被踢出登录状态。解决方法:
- 重新在浏览器中登录该平台
- 按照前述步骤重新获取 Cookie
- 更新配置文件中的 Cookie 值
建议:定期(比如每周)检查并更新 Cookie,避免影响正常使用。
Q2:图片上传失败怎么解决?
可能的原因和解决方法:
- 图片太大:使用
MediaProcessor压缩图片 - 图片格式不支持:转换为 JPG 或 PNG 格式
- 网络问题:检查网络连接,或增加超时时间
- 平台限制:某些平台对图片数量有限制,检查是否超出上限
# 示例:压缩图片后再上传
processor = MediaProcessor()
compressed = processor.process_image(
original_path,
max_size=5 * 1024 * 1024, # 5MB
)
content = {
"platform": "weibo",
"images": [compressed.path],
}
Q3:如何处理发布频率限制?
每个平台都有 API 调用频率限制,项目内置了限流机制:
config = {
"rate_limit": {
"weibo": {
"requests_per_minute": 10,
"requests_per_hour": 60,
},
},
}
uploader = AutoUploader(config=config)
# 批量发布时自动遵守频率限制
results = uploader.publish_batch(
content_list,
respect_rate_limit=True, # 启用限流
)
Q4:可以代理 IP 使用吗?
可以。某些情况下需要使用代理 IP:
config = {
"proxy": {
"http": "http://user:pass@proxy.example.com:8080",
"https": "https://user:pass@proxy.example.com:8080",
},
"platforms": {
"weibo": {
"enabled": True,
"cookies": "your_cookies",
},
},
}
uploader = AutoUploader(config=config)
Q5:如何排查发布失败的原因?
启用详细日志模式:
import logging
# 设置详细日志
logging.basicConfig(level=logging.DEBUG)
uploader = AutoUploader(config_path="config.yaml")
# 尝试发布,会输出详细的请求和响应信息
content = {
"platform": "weibo",
"text": "测试",
}
result = uploader.publish(content, verbose=True)
总结与资源链接
项目核心优势回顾
通过本教程的学习,你应该已经掌握了 social-auto-upload 的核心功能和使用方法:
- 多平台支持:一站式管理微博、小红书、知乎等多个平台
- 简单易用:配置友好,API 简洁,上手门槛低
- 智能处理:自动处理图片和视频,适配各平台要求
- 定时发布:支持定时任务,灵活安排发布时间
- 批量操作:支持批量发布和内容变体,大幅提升效率
- 高度可扩展:支持自定义平台和自定义工作流
相关资源链接
| 资源 | 链接 |
|---|---|
| GitHub 仓库 | https://github.com/dreammis/social-auto-upload |
| 官方文档 | https://dreammis.github.io/social-auto-upload/ |
| 问题反馈 | https://github.com/dreammis/social-auto-upload/issues |
| 讨论社区 | https://github.com/dreammis/social-auto-upload/discussions |
推荐学习路径
- 入门阶段:先配置一个平台,发布简单的文字内容
- 进阶阶段:尝试图文发布和定时发布功能
- 熟练阶段:使用多平台同时发布和批量发布
- 精通阶段:开发自定义插件,集成到现有工作流
结语
社交媒体运营从来不是一件轻松的事,但有了合适的工具,我们可以把时间花在真正重要的事情上——创作优质内容。希望 social-auto-upload 能够成为你内容创作路上的得力助手,让你从繁琐的发布工作中解放出来,专注于内容的价值本身。
如果你觉得这个项目有帮助,欢迎给 GitHub 仓库一个 Star,你的支持是开源项目持续发展的动力!
同时,也欢迎关注 DreamMis 的其他开源项目,相信总有一些能给你的工作和生活带来惊喜。
评论区