# MediaPublishPlatform **Repository Path**: github-awesome/MediaPublishPlatform ## Basic Information - **Project Name**: MediaPublishPlatform - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-12 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 自媒体发布平台 (MPP - MediaPublishPlatform)
## 项目地址 [GitHub 仓库](https://github.com/funfan0517/MediaPublishPlatform.git) ## 项目介绍 MPP (MediaPublishPlatform) 是一个功能强大的自媒体发布平台,支持多个平台的图文和视频内容的批量上传与定时发布,帮助内容创作者实现多平台自动化运营。 > **项目起源**:本项目是基于 [dreammis/social-auto-upload](https://github.com/dreammis/social-auto-upload) 进行二次开发的项目,在原项目基础上进行了以下增强: > - 新增平台支持:扩展了 TikTok、Instagram、Facebook、B站、百家号等平台 > - 统一了各平台的登录和验证流程:简化了多平台账号管理,提高了系统的稳定性和可维护性 > - 统一各平台的发布流程:实现了新版通用基类架构的文件上传系统 > - 实现一键发布功能:支持一键发布多个媒体文件到多个平台 > - 增加发布记录管理功能:支持查看完整的发布记录,包括发布状态、时间和结果 > - 提高扩展性:新增平台时支持只需修改 `platform_configs.py` 配置文件即可 > - 完善了前端界面,优化了用户体验 > - 优化了代码结构和文档 ### 主要特点 - **多平台支持**:覆盖主流自媒体平台,包括小红书、腾讯视频号、抖音、快手、TikTok、Instagram、Facebook、B站、百家号等 - **一键发布**:支持一键发布多个媒体文件到多个平台,提高发布效率 - **自动化发布**:基于 Playwright 的浏览器自动化技术,实现无人值守发布 - **批量操作**:支持多文件批量上传和多账号轮换发布 - **定时发布**:灵活的定时发布功能,支持自定义发布时间和发布频率 - **发布记录**:支持查看完整的发布记录,包括发布状态、时间和结果 - **统一管理**:提供统一的Web界面,集中管理所有发布任务 - **统一登录与验证**:简化多平台账号管理,提高系统的稳定性和可维护性 - **易于扩展**:模块化设计,新增平台支持只需修改 `platform_configs.py` 配置文件即可 ## 核心功能 ### 1. 多平台支持 | 平台 | 新版支持 | 旧版支持 | |------|----------|----------| | 小红书 | ✅ | ✅ | | 腾讯视频号 | ✅ | ✅ | | 抖音 | ✅ | ✅ | | 快手 | ✅ | ✅ | | TikTok | ✅ | ✅ | | Instagram | ✅ | ❌ | | Facebook | ✅ | ❌ | | B站 | ✅ | ✅ | | 百家号 | ✅ | ✅ | ### 2. 平台示例展示 #### 小红书  #### 腾讯视频号  #### 抖音  #### 快手  #### TikTok  #### Instagram  #### Facebook  #### B站  #### 百家号  ### 3. 内容类型支持 - ✅ 视频文件上传 - ✅ 图文内容发布 - ✅ 封面设置(部分平台) ### 4. 发布功能 - ✅ 即时发布 - ✅ 定时发布,支持自定义发布时间 - ✅ 批量发布,支持多账号轮换 - ✅ 发布计划管理 ### 5. 管理功能 - ✅ 文件上传和管理 - ✅ 发布历史记录 - ✅ 账号管理(添加、编辑、删除) - ✅ Cookie 管理(上传、下载) - ✅ 平台统计数据 - ✅ 任务状态监控 ### 6. 系统功能 - ✅ 跨域支持 - ✅ 错误处理 - ✅ 日志记录 - ✅ 状态反馈 - ✅ 双版本上传系统 ## 安装指南 ### 环境要求 - **后端**:Python 3.10+, Chrome 浏览器 - **前端**:Node.js 18+, npm 9+ ### 快速开始 #### 首次启动项目 1. **克隆项目** ```bash git clone https://github.com/funfan0517/MediaPublishPlatform.git cd SAU ``` 2. **安装 Python 依赖** ```bash # 创建虚拟环境(推荐) python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # Linux/MacOS source venv/bin/activate # 安装依赖 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple ``` 3. **安装 Playwright 浏览器驱动** ```bash playwright install chromium ``` 4. **初始化数据库** ```bash # 运行数据库初始化脚本 python db/createTable.py ``` 5. **配置 Chrome 浏览器路径** 修改 `sau_backend/conf.py` 文件底部的 `LOCAL_CHROME_PATH` 为本地 Chrome 浏览器地址: ```python # Windows 示例 LOCAL_CHROME_PATH = "C:\Program Files\Google\Chrome\Application\chrome.exe" # Linux 示例 LOCAL_CHROME_PATH = "/usr/bin/google-chrome" # macOS 示例 LOCAL_CHROME_PATH = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" ``` 6. **启动后端服务** ```bash cd sau_backend python sau_backend.py ``` 后端服务将在 `http://localhost:5409` 启动。 7. **安装前端依赖并启动** ```bash cd ../sau_frontend npm install npm run dev ``` 前端项目将在 `http://localhost:5173` 启动,在浏览器中打开此链接即可访问。 #### Windows 快速启动(非首次启动) 对于 Windows 用户,您可以使用项目根目录下的 `start-win.bat` 脚本快速启动前后端服务: ```bash start-win.bat ``` 此脚本将自动激活虚拟环境(如果存在)并启动后端服务。 ## 项目架构 ### 后端架构 后端采用模块化设计,基于 Flask 框架构建 RESTful API 服务,结合 Playwright 实现浏览器自动化上传,核心组件包括: 1. **核心上传引擎** (`sau_backend/newFileUpload/baseFileUploader.py`) - 通用多平台上传器基类,定义了统一的上传接口和流程 - 支持多平台配置(小红书、腾讯、抖音、快手、TikTok、Instagram 等) - 使用 Playwright 实现浏览器自动化操作 - 支持图文和视频两种内容类型 - 提供定时发布、标签管理等核心功能 2. **多文件上传处理** (`sau_backend/newFileUpload/multiFileUploader.py`) - 批量文件处理,支持多账号轮换 - 自动生成发布计划时间 - 异步执行上传任务 - 提供完整的发布结果反馈 3. **Flask 后端服务** (`sau_backend/sau_backend.py`) - RESTful API 接口设计 - 文件上传、保存和查询功能 - 支持跨域请求 - 数据库集成,记录文件上传历史 - 提供用户认证和权限管理 4. **平台配置管理** (`sau_backend/newFileUpload/platform_configs.py`) - 集中管理各平台配置(类型、URL、选择器等) - 提供平台类型与标识的映射函数 - 便于添加新平台支持 6. **统一登录与验证系统** - **统一登录逻辑** (`sau_backend/myUtils/login.py`) - 支持多平台统一登录,自动生成并保存 Cookie - 基于 Playwright 的浏览器自动化登录 - 实时返回登录状态,支持可视化登录流程 - 自动将账号信息保存到数据库 - 支持账号删除功能,自动清理关联的 Cookie 文件 - **统一验证逻辑** (`sau_backend/myUtils/auth.py`) - 通用 Cookie 有效性验证方法 - 基于平台配置的智能验证策略 - 支持多平台账号状态检测 - 自动识别登录状态,确保发布任务的可靠性 - 详细的日志记录,便于问题排查 ### 前端架构 前端基于 Vue 3 + Element Plus 构建,提供直观易用的用户界面: - **响应式设计**:适配不同屏幕尺寸 - **现代化界面**:使用 Element Plus 组件库,提供美观的用户体验 - **实时状态反馈**:发布任务状态实时更新 - **文件管理**:可视化的文件上传和管理界面 - **账号管理**:集中管理所有平台账号 - **发布中心**:创建和管理发布任务 - **任务记录**:查看和管理发布任务记录 ## 技术栈 ### 后端技术 | 技术 | 版本 | 用途 | |------|------|------| | Flask | 2.0+ | Web 框架 | | Playwright | 1.30+ | 浏览器自动化 | | SQLite | 3 | 数据库 | | asyncio | - | 异步处理 | | pathlib | - | 文件管理 | ### 前端技术 | 技术 | 版本 | 用途 | |------|------|------| | Vue 3 | - | 前端框架 | | Vite | 6.4+ | 构建工具 | | Element Plus | - | UI 组件库 | | Vue Router | 4 | 路由管理 | | Pinia | - | 状态管理 | | Axios | - | HTTP 请求库 | | Sass | - | CSS 预处理器 | ## 项目结构 ``` sau/ ├── README.md # 项目说明文档 ├── start-win.bat # Windows 启动脚本 ├── requirements.txt # Python 依赖包 ├── sau_backend/ # 后端项目 │ ├── README.md # 后端说明文档 │ ├── conf.py # 配置文件 │ ├── sau_backend.py # 后端主入口文件 │ ├── myUtils/ # 核心工具模块 │ │ ├── auth.py # 认证相关功能 │ │ └── login.py # 登录相关功能 │ ├── newFileUpload/ # 新版文件上传实现(推荐) │ │ ├── baseFileUploader.py # 通用上传器基类 │ │ ├── multiFileUploader.py # 多文件上传处理 │ │ └── platform_configs.py # 平台配置 │ ├── oldFileUpload/ # 旧版文件上传实现(备用) │ │ ├── examples/ # 示例脚本 │ │ └── uploader/ # 各平台上传器实现 │ └── utils/ # 工具函数 │ ├── base_social_media.py # 社交媒体基础功能 │ ├── log.py # 日志管理 │ └── stealth.min.js # 浏览器隐藏脚本 ├── sau_frontend/ # 前端项目 │ ├── README.md # 前端说明文档 │ ├── src/ # 前端源代码 │ │ ├── api/ # API 接口 │ │ ├── components/ # 公共组件 │ │ ├── router/ # 路由配置 │ │ ├── stores/ # 状态管理 │ │ ├── styles/ # 样式文件 │ │ ├── utils/ # 工具函数 │ │ ├── views/ # 页面组件 │ │ ├── App.vue # 根组件 │ │ └── main.js # 入口文件 │ ├── public/ # 静态资源 │ ├── package.json # npm 配置 │ └── vite.config.js # Vite 配置 ├── db/ # 数据库相关 │ ├── database.db # SQLite 数据库文件 │ └── createTable.py # 数据库初始化脚本 ├── cookiesFile/ # 存储 Cookie 文件 ├── videoFile/ # 存储上传的视频文件 └── videos/ # 示例视频文件 ``` ## API 文档 ### 账号管理 | 接口 | 方法 | 描述 | 参数 | 返回 | |------|------|------|------|------| | `/getAccounts` | GET | 获取所有账号信息 | 无 | 账号列表 | | `/getValidAccounts` | GET | 获取有效的账号信息 | 无 | 有效账号列表 | | `/account` | POST | 添加账号 | JSON 数据 | 操作结果 | | `/updateUserinfo` | POST | 更新账号信息 | JSON 数据 | 操作结果 | | `/deleteAccount` | GET | 删除账号 | `id`:账号 ID | 操作结果 | | `/downloadCookie` | GET | 下载 Cookie 文件 | `filePath`:文件路径 | Cookie 文件 | | `/uploadCookie` | POST | 上传 Cookie 文件 | 文件数据 | 操作结果 | ### 文件管理 | 接口 | 方法 | 描述 | 参数 | 返回 | |------|------|------|------|------| | `/upload` | POST | 上传文件 | 文件数据 | 文件唯一 ID | | `/getFiles` | GET | 获取文件列表 | 无 | 文件列表 | ### 发布管理 | 接口 | 方法 | 描述 | 参数 | 返回 | |------|------|------|------|------| | `/postVideo` | POST | 发布视频到单个平台 | JSON 数据 | 操作结果 | | `/postVideosToMultiplePlatforms` | POST | **一键发布**:发布多个视频到多个平台 | JSON 数据 | 操作结果 | | `/getPublishTaskRecords` | GET | **发布记录**:获取发布任务记录 | `page`:页码