AutoClip - 视频高光切片自动化工具
支持YouTube/B站视频下载、自动切片、智能合集生成
AutoClip是一个基于AI的智能视频切片处理系统,能够自动从YouTube、B站等平台下载视频,通过AI分析提取精彩片段,并智能生成合集。系统采用现代化的前后端分离架构,提供直观的Web界面和强大的后端处理能力。
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
# 克隆项目
git clone https://github.com/zhouxiaoka/autoclip.git
cd autoclip
# Docker一键启动
./docker-start.sh
# 开发环境启动
./docker-start.sh dev
# 停止服务
./docker-stop.sh
# 检查服务状态
./docker-status.sh
# 克隆项目
git clone https://github.com/zhouxiaoka/autoclip.git
cd autoclip
# 一键启动(推荐,包含完整检查和监控)
./start_autoclip.sh
# 快速启动(开发环境,跳过详细检查)
./quick_start.sh
# 检查系统状态
./status_autoclip.sh
# 停止系统
./stop_autoclip.sh
# 1. 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# 或 venv\Scripts\activate # Windows
# 2. 安装Python依赖
pip install -r requirements.txt
# 3. 安装前端依赖
cd frontend && npm install && cd ..
# 4. 安装Redis
# macOS
brew install redis
brew services start redis
# Ubuntu/Debian
sudo apt update
sudo apt install redis-server
sudo systemctl start redis-server
# CentOS/RHEL
sudo yum install redis
sudo systemctl start redis
# 5. 安装FFmpeg
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
# CentOS/RHEL
sudo yum install ffmpeg
# 6. 配置环境变量
cp env.example .env
# 编辑 .env 文件,填入API密钥等配置
视频下载与处理
AI智能分析
视频切片与合集
实时进度监控
B站上传功能【开发中】
字幕编辑功能【开发中】
系统会自动执行以下步骤:
创建 .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
autoclip/
├── backend/ # 后端代码
│ ├── api/ # API路由
│ │ ├── v1/ # API v1版本
│ │ │ ├── youtube.py # YouTube下载API
│ │ │ ├── bilibili.py # B站下载API
│ │ │ ├── projects.py # 项目管理API
│ │ │ ├── clips.py # 视频片段API
│ │ │ ├── collections.py # 合集管理API
│ │ │ └── settings.py # 系统设置API
│ │ └── upload_queue.py # 上传队列管理
│ ├── core/ # 核心配置
│ │ ├── database.py # 数据库配置
│ │ ├── celery_app.py # Celery配置
│ │ ├── config.py # 系统配置
│ │ └── llm_manager.py # AI模型管理
│ ├── models/ # 数据模型
│ │ ├── project.py # 项目模型
│ │ ├── clip.py # 片段模型
│ │ ├── collection.py # 合集模型
│ │ └── bilibili.py # B站账号模型
│ ├── services/ # 业务逻辑
│ │ ├── video_service.py # 视频处理服务
│ │ ├── ai_service.py # AI分析服务
│ │ └── upload_service.py # 上传服务
│ ├── tasks/ # Celery任务
│ │ ├── processing.py # 处理任务
│ │ ├── upload.py # 上传任务
│ │ └── maintenance.py # 维护任务
│ ├── pipeline/ # 处理流水线
│ │ ├── step1_outline.py # 大纲提取
│ │ ├── step2_timeline.py # 时间线分析
│ │ ├── step3_scoring.py # 精彩度评分
│ │ └── step6_video.py # 视频生成
│ └── utils/ # 工具函数
├── frontend/ # 前端代码
│ ├── src/
│ │ ├── components/ # React组件
│ │ │ ├── UploadModal.tsx # 上传模态框
│ │ │ ├── ClipCard.tsx # 片段卡片
│ │ │ ├── CollectionCard.tsx # 合集卡片
│ │ │ └── BilibiliManager.tsx # B站管理
│ │ ├── pages/ # 页面组件
│ │ │ ├── HomePage.tsx # 首页
│ │ │ ├── ProjectDetailPage.tsx # 项目详情
│ │ │ └── SettingsPage.tsx # 设置页面
│ │ ├── services/ # API服务
│ │ │ └── api.ts # API客户端
│ │ └── stores/ # 状态管理
│ └── package.json
├── data/ # 数据存储
│ ├── projects/ # 项目数据
│ ├── uploads/ # 上传文件
│ ├── temp/ # 临时文件
│ ├── output/ # 输出文件
│ └── autoclip.db # 数据库文件
├── scripts/ # 工具脚本
│ ├── start_autoclip.sh # 启动脚本
│ ├── stop_autoclip.sh # 停止脚本
│ └── status_autoclip.sh # 状态检查
├── docs/ # 文档
│ ├── README.md # 文档中心
│ ├── i18n.md # 国际化配置
│ └── *.md # 其他文档
├── logs/ # 日志文件
├── Dockerfile # Docker镜像构建文件
├── Dockerfile.dev # 开发环境Docker文件
├── docker-compose.yml # 生产环境Docker编排
├── docker-compose.dev.yml # 开发环境Docker编排
├── docker-start.sh # Docker启动脚本
├── docker-stop.sh # Docker停止脚本
├── docker-status.sh # Docker状态检查脚本
├── .dockerignore # Docker忽略文件
├── DOCKER.md # Docker部署文档
└── *.sh # 启动脚本
启动系统后访问以下地址查看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 | 获取处理状态 |
# 检查端口占用
lsof -i :8000 # 后端端口
lsof -i :3000 # 前端端口
# 停止占用进程
kill -9 <PID>
# 检查Redis状态
redis-cli ping
# 启动Redis服务
brew services start redis # macOS
systemctl start redis # Linux
pip install --upgrade yt-dlp# 查看所有日志
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
# 启动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
数据库优化
Redis优化
Celery优化
环境变量
网络安全
数据安全
# 克隆项目
git clone https://github.com/zhouxiaoka/autoclip.git
cd autoclip
# 配置环境变量
cp env.example .env
# 编辑 .env 文件,填入必要的配置
# 启动所有服务
docker-compose up -d
# 查看服务状态
docker-compose ps
# 使用开发环境配置
docker-compose -f docker-compose.dev.yml up -d
# 实时查看日志
docker-compose -f docker-compose.dev.yml logs -f
完整的Docker部署指南请参考 DOCKER.md 文档。
# 创建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
我们欢迎所有形式的贡献!无论是代码贡献、文档改进、问题报告还是功能建议。
Fork 项目到您的GitHub账户
克隆您的Fork到本地:
git clone https://github.com/zhouxiaoka/autoclip.git
cd autoclip
创建功能分支:
git checkout -b feature/amazing-feature
进行开发和测试
提交更改:
git add .
git commit -m 'feat: add amazing feature'
推送分支:
git push origin feature/amazing-feature
在GitHub上创建 Pull Request
<type>(<scope>): <description>
[optional body]
[optional footer(s)]
示例:
feat(api): add video download endpointfix(ui): resolve upload modal display issuedocs(readme): update installation instructions本项目采用 MIT License 许可证。
Q: 启动时提示端口被占用怎么办? A: 使用以下命令检查并停止占用端口的进程:
# 检查端口占用
lsof -i :8000 # 后端端口
lsof -i :3000 # 前端端口
# 停止进程
kill -9 <PID>
Q: Redis连接失败怎么办? A: 确保Redis服务正在运行:
# 检查Redis状态
redis-cli ping
# 启动Redis服务
brew services start redis # macOS
sudo systemctl start redis-server # Linux
Q: 前端依赖安装失败怎么办? A: 尝试清理缓存后重新安装:
cd frontend
rm -rf node_modules package-lock.json
npm cache clean --force
npm install
Q: YouTube视频下载失败怎么办? A:
pip install --upgrade yt-dlpQ: B站视频下载失败怎么办? A:
Q: AI处理速度慢怎么办? A:
Q: B站上传功能什么时候可以使用? A: B站上传功能正在开发中,预计在下一个版本中发布。该功能将支持:
Q: 字幕编辑功能什么时候可以使用? A: 字幕编辑功能正在开发中,预计在下一个版本中发布。该功能将支持:
Q: 如何提高处理速度? A:
Q: 如何减少存储空间占用? A:
如有问题或建议,请通过以下方式联系:
感谢以下开源项目和服务的支持:
Made with ❤️ by AutoClip Team
⭐ 如果觉得有用,请给个Star支持一下!