zhouxiaoka/autoclip

★ 7,326⑂ 0

AutoClip : AI-powered video clipping and highlight generation · 一款智能高光提取与剪辑的二创工具

7,326Star
0Fork
0Watch
0Issue
PythonLanguage
-License
Created · last push · repository size 0 KB · default branch -

README

AutoClip - AI视频智能切片系统

AutoClip Logo

基于AI的智能视频切片处理系统

支持YouTube/B站视频下载、自动切片、智能合集生成

Python React FastAPI TypeScript Celery License

GitHub stars GitHub forks GitHub issues

语言: English | 中文 联系邮箱: [email protected]

🎯 项目简介

AutoClip是一个基于AI的智能视频切片处理系统,能够自动从YouTube、B站等平台下载视频,通过AI分析提取精彩片段,并智能生成合集。系统采用现代化的前后端分离架构,提供直观的Web界面和强大的后端处理能力。

联系方式: [email protected]

✨ 核心特性

🏗️ 系统架构

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

技术栈

后端技术

前端技术

🚀 快速开始

环境要求

Docker部署(推荐)

本地部署

一键启动

方式一:Docker部署(推荐)

# 克隆项目
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

方式三:命令行 / MCP(开发者)

pip install -r requirements.txt && pip install -e .
autoclip doctor                                   # 检查 ffmpeg / Whisper / 模型
autoclip run talk.mp4 --provider ollama           # 本地 Ollama,无需 key;产物与桌面应用共用
autoclip run talk.mp4 --srt talk.srt --json       # 给脚本 / agent 用的 JSON 输出
autoclip mcp                                      # MCP server(stdio),配到 Cursor / Claude 即可调用

Cursor ~/.cursor/mcp.json{"mcpServers": {"autoclip": {"command": "/path/to/venv/bin/autoclip", "args": ["mcp"]}}}。 详见 docs/CLI_AND_MCP.md,Agent skill 在 skills/autoclip/SKILL.md

手动安装

# 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密钥等配置

🎬 功能演示

主要功能展示

1. 视频下载与处理

2. AI智能分析 3. 视频切片与合集 4. 实时进度监控 5. B站上传功能【开发中】 6. 字幕编辑功能【开发中】

📖 使用指南

1. 视频下载

YouTube视频

1. 在首页点击"新建项目" 2. 选择"YouTube链接" 3. 粘贴视频URL 4. 选择浏览器Cookie(可选) 5. 点击"开始下载"

B站视频

1. 在首页点击"新建项目" 2. 选择"B站链接" 3. 粘贴视频URL 4. 选择登录账号 5. 点击"开始下载"

本地文件

1. 在首页点击"新建项目" 2. 选择"文件上传" 3. 拖拽或选择视频文件 4. 上传字幕文件(可选) 5. 点击"开始处理"

2. 智能处理

系统会自动执行以下步骤:

1. 素材准备: 下载视频和字幕文件 2. 内容分析: AI提取视频大纲和关键信息 3. 时间线提取: 识别话题时间区间 4. 精彩评分: 对每个片段进行AI评分 5. 标题生成: 为精彩片段生成吸引人标题 6. 合集推荐: AI推荐视频合集 7. 视频生成: 生成切片视频和合集视频

3. 结果管理

🔧 配置说明

环境变量配置

创建 .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站账号配置【开发中】

1. 在设置页面点击"B站账号管理" 2. 选择登录方式:

3. 添加成功后系统会自动管理账号健康状态

📁 项目结构

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文档:

主要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

2. Redis连接失败

# 检查Redis状态
redis-cli ping

启动Redis服务

brew services start redis # macOS systemctl start redis # Linux

3. YouTube下载失败

4. B站下载失败

日志查看

# 查看所有日志
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

📊 性能优化

生产环境配置

1. 数据库优化

2. Redis优化 3. Celery优化

🔒 安全配置

生产环境安全

1. 环境变量

2. 网络安全 3. 数据安全

🚀 部署指南

Docker部署

快速启动

# 克隆项目
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

📈 路线图

即将推出

长期规划

🤝 贡献指南

我们欢迎所有形式的贡献!无论是代码贡献、文档改进、问题报告还是功能建议。

如何贡献

1. Fork 项目到您的GitHub账户 2. 克隆您的Fork到本地:

   git clone https://github.com/zhouxiaoka/autoclip.git
   cd autoclip
   

3. 创建功能分支:

   git checkout -b feature/amazing-feature
   

4. 进行开发和测试 5. 提交更改:

   git add .
   git commit -m 'feat: add amazing feature'
   

6. 推送分支:

   git push origin feature/amazing-feature
   

7. 在GitHub上创建 Pull Request

开发规范

代码规范

开发流程

1. 确保所有测试通过 2. 添加必要的测试用例 3. 更新相关文档 4. 确保代码质量检查通过

提交信息格式

():

[optional body]

[optional footer(s)]

示例:

📄 许可证

本项目采用 MIT License 许可证。

❓ 常见问题

安装和启动问题

Q: 启动时提示端口被占用怎么办? A: 使用以下命令检查并停止占用端口的进程:

# 检查端口占用
lsof -i :8000  # 后端端口
lsof -i :3000  # 前端端口

停止进程

kill -9

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:

1. 检查网络连接 2. 更新yt-dlp:pip install --upgrade yt-dlp 3. 尝试使用浏览器Cookie 4. 检查视频是否可用或需要登录

Q: B站视频下载失败怎么办? A:

1. 检查账号登录状态 2. 更新账号Cookie 3. 检查视频权限设置 4. 尝试使用其他账号

Q: AI处理速度慢怎么办? A:

1. 检查API密钥配置 2. 调整处理参数(减少chunk_size) 3. 检查网络连接 4. 考虑使用更快的AI模型

Q: B站上传功能什么时候可以使用? A: B站上传功能正在开发中,预计在下一个版本中发布。该功能将支持:

Q: 字幕编辑功能什么时候可以使用? A: 字幕编辑功能正在开发中,预计在下一个版本中发布。该功能将支持:

性能优化

Q: 如何提高处理速度? A:

1. 增加Celery Worker并发数 2. 使用SSD存储 3. 增加系统内存 4. 优化视频质量设置

Q: 如何减少存储空间占用? A:

1. 定期清理临时文件 2. 压缩输出视频 3. 删除不需要的项目 4. 使用外部存储

📞 支持与反馈

获取帮助

(仓库创建后可用)

联系方式

如有问题或建议,请通过以下方式联系:

💬 QQ

QQ二维码

📱 飞书

飞书二维码

📧 其他联系方式

🙏 致谢

感谢以下开源项目和服务的支持:

核心技术栈

视频处理

AI服务

开发工具

特别感谢

---

如果这个项目对你有帮助,请给我们一个 ⭐ Star

Star History Chart

Made with ❤️ by AutoClip Team

⭐ 如果觉得有用,请给个Star支持一下!

More Video Trending projects

1

Genymobile / scrcpy

C★ 149,650⑂ 0
2

harry0703 / MoneyPrinterTurbo

Python★ 123,776⑂ 0
3

obsproject / obs-studio

C★ 76,223⑂ 0
4

FFmpeg / FFmpeg

C★ 64,235⑂ 0
5

calesthio / OpenMontage

Python★ 59,205⑂ 0
6

heygen-com / hyperframes

TypeScript★ 50,163⑂ 0