mirror of
https://github.com/zhouxiaoka/autoclip.git
synced 2026-05-06 14:04:32 +08:00
ea3945409f9992ebbcdf38ea2d6e702e117216d0
- 添加完整的项目介绍和功能特性 - 详细的安装和使用指南 - 系统架构图和技术栈说明 - API文档和故障排除指南 - 开发指南和部署说明 - 贡献指南和路线图 提供全面的项目文档,方便用户快速上手和开发者参与贡献
AutoClip - AI视频智能切片系统
🎯 项目简介
AutoClip是一个基于AI的智能视频切片处理系统,能够自动从YouTube、B站等平台下载视频,通过AI分析提取精彩片段,并智能生成合集。系统采用现代化的前后端分离架构,提供直观的Web界面和强大的后端处理能力。
✨ 核心特性
- 🎬 多平台支持: YouTube、B站视频一键下载
- 🤖 AI智能分析: 基于大语言模型的视频内容理解
- ✂️ 自动切片: 智能识别精彩片段并自动切割
- 📚 智能合集: AI推荐和手动创建视频合集
- 🚀 实时处理: 异步任务队列,实时进度反馈
- 🎨 现代界面: React + TypeScript + Ant Design
- 📱 响应式设计: 支持桌面和移动端
🏗️ 系统架构
graph TB
A[用户界面] --> B[FastAPI后端]
B --> C[Celery任务队列]
B --> D[Redis缓存]
B --> E[SQLite数据库]
C --> F[AI处理引擎]
F --> G[视频处理]
F --> H[字幕分析]
F --> I[内容理解]
B --> J[文件存储]
K[YouTube API] --> B
L[B站API] --> B
技术栈
后端技术
- FastAPI: 现代化Python Web框架
- Celery: 分布式任务队列
- Redis: 消息代理和缓存
- SQLite: 轻量级数据库
- yt-dlp: YouTube视频下载
- 通义千问: AI内容分析
前端技术
- React 18: 用户界面框架
- TypeScript: 类型安全
- Ant Design: UI组件库
- Vite: 构建工具
- Zustand: 状态管理
🚀 快速开始
环境要求
- 操作系统: macOS / Linux
- Python: 3.8+
- Node.js: 16+
- Redis: 6.0+
一键启动
# 克隆项目
git clone <repository-url>
cd autoclip
# 一键启动(推荐)
./start_autoclip.sh
# 快速启动(开发环境)
./quick_start.sh
手动安装
# 1. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 2. 安装Python依赖
pip install -r requirements.txt
# 3. 安装前端依赖
cd frontend && npm install && cd ..
# 4. 安装Redis
brew install redis # macOS
brew services start redis
# 5. 配置环境变量
cp env.example .env
# 编辑 .env 文件,填入API密钥等配置
📖 使用指南
1. 视频下载
YouTube视频
- 在首页点击"新建项目"
- 选择"YouTube链接"
- 粘贴视频URL
- 选择浏览器Cookie(可选)
- 点击"开始下载"
B站视频
- 在首页点击"新建项目"
- 选择"B站链接"
- 粘贴视频URL
- 选择登录账号
- 点击"开始下载"
本地文件
- 在首页点击"新建项目"
- 选择"文件上传"
- 拖拽或选择视频文件
- 上传字幕文件(可选)
- 点击"开始处理"
2. 智能处理
系统会自动执行以下步骤:
- 素材准备: 下载视频和字幕文件
- 内容分析: AI提取视频大纲和关键信息
- 时间线提取: 识别话题时间区间
- 精彩评分: 对每个片段进行AI评分
- 标题生成: 为精彩片段生成吸引人标题
- 合集推荐: AI推荐视频合集
- 视频生成: 生成切片视频和合集视频
3. 结果管理
- 查看切片: 在项目详情页查看所有生成的视频片段
- 编辑信息: 修改片段标题、描述等信息
- 创建合集: 手动创建或使用AI推荐的合集
- 下载导出: 下载单个片段或完整合集
🔧 配置说明
环境变量配置
创建 .env 文件:
# 数据库配置
DATABASE_URL=sqlite:///./data/autoclip.db
# Redis配置
REDIS_URL=redis://localhost:6379/0
# AI API配置
API_DASHSCOPE_API_KEY=your_dashscope_api_key
API_MODEL_NAME=qwen-plus
# 日志配置
LOG_LEVEL=INFO
ENVIRONMENT=development
DEBUG=true
# 文件存储
UPLOAD_DIR=./data/uploads
PROJECT_DIR=./data/projects
B站账号配置
- 在设置页面点击"B站账号管理"
- 选择登录方式:
- Cookie导入(推荐):从浏览器导出Cookie
- 账号密码:直接输入账号密码
- 二维码登录:扫描二维码登录
- 添加成功后系统会自动管理账号健康状态
📁 项目结构
autoclip/
├── backend/ # 后端代码
│ ├── api/ # API路由
│ │ ├── v1/ # API v1版本
│ │ │ ├── youtube.py # YouTube下载API
│ │ │ ├── bilibili.py # B站下载API
│ │ │ └── projects.py # 项目管理API
│ │ └── upload_queue.py # 上传队列管理
│ ├── core/ # 核心配置
│ │ ├── database.py # 数据库配置
│ │ ├── celery_app.py # Celery配置
│ │ └── config.py # 系统配置
│ ├── models/ # 数据模型
│ ├── services/ # 业务逻辑
│ ├── tasks/ # Celery任务
│ └── pipeline/ # 处理流水线
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── components/ # React组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API服务
│ │ └── store/ # 状态管理
│ └── package.json
├── data/ # 数据存储
│ ├── projects/ # 项目数据
│ ├── uploads/ # 上传文件
│ └── autoclip.db # 数据库文件
├── scripts/ # 工具脚本
├── docs/ # 文档
└── *.sh # 启动脚本
🌐 API文档
启动系统后访问以下地址查看API文档:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
主要API端点
| 端点 | 方法 | 描述 |
|---|---|---|
/api/v1/projects |
GET | 获取项目列表 |
/api/v1/projects |
POST | 创建新项目 |
/api/v1/projects/{id} |
GET | 获取项目详情 |
/api/v1/youtube/parse |
POST | 解析YouTube视频信息 |
/api/v1/youtube/download |
POST | 下载YouTube视频 |
/api/v1/bilibili/download |
POST | 下载B站视频 |
/api/v1/projects/{id}/process |
POST | 开始处理项目 |
/api/v1/projects/{id}/status |
GET | 获取处理状态 |
🔍 故障排除
常见问题
1. 端口被占用
# 检查端口占用
lsof -i :8000 # 后端端口
lsof -i :3000 # 前端端口
# 停止占用进程
kill -9 <PID>
2. Redis连接失败
# 检查Redis状态
redis-cli ping
# 启动Redis服务
brew services start redis # macOS
systemctl start redis # Linux
3. YouTube下载失败
- 检查网络连接
- 更新yt-dlp版本:
pip install --upgrade yt-dlp - 尝试使用浏览器Cookie
- 检查视频是否可用
4. B站下载失败
- 检查账号登录状态
- 更新账号Cookie
- 检查视频权限设置
日志查看
# 查看所有日志
tail -f logs/*.log
# 查看特定服务日志
tail -f logs/backend.log # 后端日志
tail -f logs/frontend.log # 前端日志
tail -f logs/celery.log # 任务队列日志
系统状态检查
# 详细状态检查
./status_autoclip.sh
# 手动检查服务
curl http://localhost:8000/api/v1/health/ # 后端健康检查
curl http://localhost:3000/ # 前端访问测试
redis-cli ping # Redis连接测试
🛠️ 开发指南
后端开发
# 激活虚拟环境
source venv/bin/activate
# 设置Python路径
export PYTHONPATH="${PWD}:${PYTHONPATH}"
# 启动后端开发服务器
python -m uvicorn backend.main:app --reload --port 8000
前端开发
# 进入前端目录
cd frontend
# 启动开发服务器
npm run dev
Celery Worker
# 启动Worker
celery -A backend.core.celery_app worker --loglevel=info
# 启动Beat调度器
celery -A backend.core.celery_app beat --loglevel=info
# 启动Flower监控
celery -A backend.core.celery_app flower --port=5555
📊 性能优化
生产环境配置
-
数据库优化
- 使用PostgreSQL替代SQLite
- 配置连接池
- 启用查询缓存
-
Redis优化
- 配置内存限制
- 启用持久化
- 设置过期策略
-
Celery优化
- 调整并发数
- 配置任务路由
- 启用结果后端
🔒 安全配置
生产环境安全
-
环境变量
- 使用强密码
- 定期轮换密钥
- 限制API访问
-
网络安全
- 配置防火墙
- 使用HTTPS
- 限制CORS
-
数据安全
- 定期备份
- 加密敏感数据
- 访问控制
🚀 部署指南
Docker部署
# Dockerfile示例
FROM python:3.9-slim
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
ffmpeg \
redis-tools \
&& rm -rf /var/lib/apt/lists/*
# 安装Python依赖
COPY requirements.txt .
RUN pip install -r requirements.txt
# 复制代码
COPY . .
# 启动服务
CMD ["./start_autoclip.sh"]
系统服务
# 创建systemd服务文件
sudo nano /etc/systemd/system/autoclip.service
[Unit]
Description=AutoClip Video Processing System
After=network.target redis.service
[Service]
Type=forking
User=autoclip
WorkingDirectory=/opt/autoclip
ExecStart=/opt/autoclip/start_autoclip.sh
ExecStop=/opt/autoclip/stop_autoclip.sh
Restart=always
[Install]
WantedBy=multi-user.target
📈 路线图
即将推出
- 多语言支持: 支持更多语言的视频处理
- 云端存储: 集成云存储服务
- 批量处理: 支持批量视频处理
- API开放: 提供公开API接口
- 移动应用: 开发移动端应用
长期规划
- AI模型优化: 集成更多AI模型
- 实时协作: 支持多用户协作
- 插件系统: 支持第三方插件
- 企业版: 企业级功能和服务
🤝 贡献指南
我们欢迎所有形式的贡献!
如何贡献
- Fork 项目
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 创建 Pull Request
开发规范
- 遵循PEP 8 Python代码规范
- 使用TypeScript进行前端开发
- 编写清晰的提交信息
- 添加必要的测试用例
- 更新相关文档
📄 许可证
本项目采用 MIT License 许可证。
📞 支持与反馈
- 问题反馈: GitHub Issues
- 功能建议: GitHub Discussions
- 文档: 项目文档
🙏 致谢
感谢以下开源项目的支持:
- FastAPI - 现代化Python Web框架
- React - 用户界面库
- Ant Design - 企业级UI设计语言
- yt-dlp - YouTube视频下载工具
- Celery - 分布式任务队列
如果这个项目对你有帮助,请给我们一个 ⭐ Star!
Made with ❤️ by AutoClip Team
Description
AutoClip : AI-powered video clipping and highlight generation · 一款智能高光提取与剪辑的二创工具
aiai-agentsai-toolsai-videoai-video-editorautoauto-highlighthighlightllmvideovideo-editingvideo-processingvideos
Readme
MIT
89 MiB
Languages
Python
69%
TypeScript
26.1%
Shell
2.8%
CSS
2%
Dockerfile
0.1%