⭐ +325 today Python

zhouxiaoka/autoclip

🔗 https://github.com/zhouxiaoka/autoclip ↗

AutoClip - 影片高光切片自動化工具 支援YouTube/B站影片下載、自動切片、智慧合集生成 語言 : English | 中文 🎯 專案簡介 AutoClip是一個基於AI的智慧影片切片處理系統,能夠自動從YouTube、B站等平臺下載影片,通過AI分析提取精彩片段,並智慧生成合集。系統採用現代化的前後端分離架構,提供直觀的Web介面和強大的後端處理能力。 ✨ 核心特性 🎬 多平臺支援 : YouTube、B站影片一鍵下載,支援本地檔案上傳 🤖 AI智慧分析 : 基於通義千問大語言模型的影片內容理解 ✂️ 自動切片 : 智慧識別精彩片段並自動切割,支援多種影片分類 📚 智慧合集 : AI推薦和手動建立影片合集,支援拖拽排序 🚀 即時處理 : 非同步任務佇列,即時進度反饋,WebSocket通訊 🎨 現代介面 : React + TypeScript + Ant Design,響應式設計 📱 移動端支援 【開發中】: 響應式設計,正在完善移動端體驗 🔐 賬號管理 【開發中】: 支援B站多賬號管理,自動健康檢查 📊 資料統計 : 完整的專案管理和資料統計功能 🛠️ 易於部署 : 一鍵啟動指令碼,Docker支援,詳細文件 📤 B站上傳 【開發中】: 自動上傳切片影片到B站 ✏️ 字幕編輯 【開發中】: 視覺化字幕編輯和同步功能 🏗️ 系統架構 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 Loading 技術棧 後端技術 FastAPI : 現代化Python Web框架,自動API文件生成 Celery : 分散式任務佇列,支援非同步處理 Redis : 訊息代理和快取,任務狀態管理 SQLite : 輕量級資料庫,支援升級到PostgreSQL yt-dlp : YouTube影片下載,支援多種格式 通義千問 : AI內容分析,支援多種模型 WebSocket : 即時通訊,進度推送 Pydantic : 資料驗證和序列化 前端技術 React 18 : 使用者介面框架,Hooks和函式元件 TypeScript : 型別安全,更好的開發體驗 Ant Design : 企業級UI元件庫 Vite : 快速構建工具,熱過載 Zustand : 輕量級狀態管理 React Router : 路由管理 Axios : HTTP客戶端 React Player : 影片播放器 🚀 快速開始 環境要求 Docker部署(推薦) Docker : 20.10+ Docker Compose : 2.0+ 記憶體 : 最少 4GB,推薦 8GB+ 儲存 : 最少 10GB 可用空間 本地部署 作業系統 : macOS / Linux / Windows (WSL) Python : 3.8+ (推薦 3.9+) Node.js : 16+ (推薦 18+) Redis : 6.0+ (推薦 7.0+) FFmpeg : 影片處理依賴 記憶體 : 最少 4GB,推薦 8GB+ 儲存 : 最少 10GB 可用空間 一鍵啟動 方式一: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 手動安裝 # 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金鑰等配置 🎬 功能演示 主要功能展示 影片下載與處理 支援YouTube、B站影片連結解析 自動下載影片和字幕檔案 支援本地檔案上傳 AI智慧分析 自動提取影片大綱 智慧識別話題時間點 對片段進行精彩度評分 影片切片與合集 自動生成精彩片段 智慧推薦合集組合 支援手動編輯和排序 即時進度監控 WebSocket即時進度推送 詳細的任務狀態顯示 錯誤處理和重試機制 B站上傳功能 【開發中】 自動上傳切片影片到B站 支援多賬號管理 批次上傳和佇列管理 字幕編輯功能 【開發中】 視覺化字幕編輯器 字幕同步和調整 多語言字幕支援 📖 使用指南 1. 影片下載 YouTube影片 在首頁點選"新建專案" 選擇"YouTube連結" 貼上影片URL 選擇瀏覽器Cookie(可選) 點選"開始下載" B站影片 在首頁點選"新建專案" 選擇"B站連結" 貼上影片URL 選擇登入賬號 點選"開始下載" 本地檔案 在首頁點選"新建專案" 選擇"檔案上傳" 拖拽或選擇影片檔案 上傳字幕檔案(可選) 點選"開始處理" 2. 智慧處理 系統會自動執行以下步驟: 素材準備 : 下載影片和字幕檔案 內容分析 : AI提取影片大綱和關鍵資訊 時間線提取 : 識別話題時間區間 精彩評分 : 對每個片段進行AI評分 標題生成 : 為精彩片段生成吸引人標題 合集推薦 : AI推薦影片合集 影片生成 : 生成切片影片和合集影片 3. 結果管理 檢視切片 : 在專案詳情頁檢視所有生成的影片片段 編輯資訊 : 修改片段標題、描述等資訊 建立合集 : 手動建立或使用AI推薦的合集 下載匯出 : 下載單個片段或完整合集 B站上傳 【開發中】: 一鍵上傳切片影片到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 B站賬號配置【開發中】 在設定頁面點選"B站賬號管理" 選擇登入方式: Cookie匯入 (推薦):從瀏覽器匯出Cookie 賬號密碼 :直接輸入賬號密碼 二維碼登入 :掃描二維碼登入 新增成功後系統會自動管理賬號健康狀態 📁 專案結構 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文件: 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(必須帶 -Q:任務按 celery_app.task_routes 路由到專用佇列, # 不帶 -Q 的 worker 只消費預設 `celery` 佇列,流水線任務會一直堆在 `processing` 裡沒人執行) celery -A backend.core.celery_app worker --loglevel=info -Q celery,processing,video,notification,upload # 啟動Beat排程器 celery -A backend.core.

內容為收集當日抓取的 repo 描述原文,完整資訊請見 GitHub 原頁。