# n8n Video RAG Demo - API 執行記錄 | 項目 | 內容 | |------|------| | 建立者 | Warren | | 建立時間 | 2026-03-22 | | 文件版本 | V1.1 | | 目標 | 完整執行 n8n Video RAG Workflow 並記錄所有 API 呼叫 | --- ## 版本歷史 | 版本 | 日期 | 目的 | 操作人 | 工具/模型 | |------|------|------|--------|-----------| | V1.0 | 2026-03-22 | 創建文件 | Warren | OpenCode | | V1.1 | 2026-03-26 | 更新 API 範例,新增 X-API-Key 驗證標頭 | OpenCode | deepseek-reasoner | --- ## Phase 1: SFTPGo 準備 ### Step 1.1: 取得 Demo User Token **API 呼叫:** ```bash curl -X GET "http://localhost:8080/api/v2/user/token" \ -u "demo:demopassword123" ``` **Request:** ``` GET /api/v2/user/token Authorization: Basic ZG9tbzpkZW1vcGFzc3dvcmQxMjM= ``` **Response (200 OK):** ```json { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "expires_at": "2026-03-22T07:05:57Z" } ``` **Token 有效期限:** 20 分鐘 **Session Token (Demo User):** ``` eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiQVBJVXNlciIsIjo6MSJdLCJleHAiOjE3NzQxNjMxNTcsImlhdCI6MTc3NDE2MTk1NywianRpIjoiZDZ2cDA5YWcyZnIwMnY3aTlybDAiLCJuYmYiOjE3NzQxNjE5NDcsInN1YiI6IjE3NzQxNjE5NTM0OTMiLCJ1c2VybmFtZSI6ImRlbW8ifQ.yw0UCv8sQXXCkOr7qmK2ejLzuoA8IDrmC9bpgFE4R_Q ``` **結果:** ✅ 成功 --- ### Step 1.2: 上傳測試影片到 SFTPGo **影片選擇:** `Old_Time_Movie_Show_-_Charade_1963.HD.mov` (2.3 GB) - 路徑: `/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov` - ASR Segments: 1,917 (已預處理) **API 呼叫:** ```bash TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." curl -X POST "http://localhost:8080/api/v2/user/files" \ -H "Authorization: Bearer $TOKEN" \ -F "path=/demo" \ -F "mkdir_parents=true" \ -F "filenames=@/Users/accusys/test_video/Old_Time_Movie_Show_-_Charade_1963.HD.mov" ``` **Request:** ``` POST /api/v2/user/files Authorization: Bearer Content-Type: multipart/form-data path: /demo mkdir_parents: true filenames: @/path/to/Old_Time_Movie_Show_-_Charade_1963.HD.mov ``` **Response (201 Created):** ```json {"message":"Upload completed"} ``` **上傳統計:** - 檔案大小: 2,361,629,896 bytes (2.3 GB) - 上傳時間: 7 秒 - 平均速度: ~337 MB/s **結果:** ✅ 成功 --- ### Step 1.3: 建立分享連結 **API 呼叫:** ```bash curl -X POST "http://localhost:8080/api/v2/user/shares" \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Charade_1963_Demo", "paths": ["/Old_Time_Movie_Show_-_Charade_1963.HD.mov"], "scope": 1, "expires_at": 0 }' ``` **Request:** ```json POST /api/v2/user/shares Authorization: Bearer Content-Type: application/json { "name": "Charade_1963_Demo", "paths": ["/Old_Time_Movie_Show_-_Charade_1963.HD.mov"], "scope": 1, "expires_at": 0 } ``` **Response (200 OK):** ```json {"message":"Share created"} ``` **結果:** ✅ 成功 --- ### Step 1.4: 驗證上傳結果 **API 呼叫 - 列出分享:** ```bash curl -X GET "http://localhost:8080/api/v2/user/shares" \ -H "Authorization: Bearer $TOKEN" ``` **Response:** ```json [ { "id": "CjmQfrkXY5qDtC46WVZY2S", "name": "Charade_1963_Demo", "scope": 1, "paths": [ "/Old_Time_Movie_Show_-_Charade_1963.HD.mov" ], "username": "demo", "created_at": 1774162072853, "updated_at": 1774162072853, "password": "" } ] ``` **分享連結:** - Share ID: `CjmQfrkXY5qDtC46WVZY2S` - Browse URL: `http://localhost:8080/web/client/pubshares/CjmQfrkXY5qDtC46WVZY2S/browse` **本地目錄驗證:** ``` /Users/accusys/sftpgo_test/demo/ └── Old_Time_Movie_Show_-_Charade_1963.HD.mov (2,361,629,896 bytes) ``` **結果:** ✅ 成功 --- ## Phase 2: Momentry 註冊 ### Step 2.1: 健康檢查 **API 呼叫:** ```bash curl -X GET "http://localhost:3002/health" ``` **Response:** ``` (待填寫) ``` --- ### Step 2.2: 註冊影片 **API 呼叫:** ```bash curl -X POST "http://localhost:3002/api/v1/register" \ -H "Content-Type: application/json" \ -d '{ "path": "/Users/accusys/sftpgo_test/demo/Old_Time_Movie_Show_-_Charade_1963.HD.mov" }' ``` **Request:** ```json POST /api/v1/register Content-Type: application/json { "path": "/Users/accusys/sftpgo_test/demo/Old_Time_Movie_Show_-_Charade_1963.HD.mov" } ``` **Response:** ``` (待填寫) { "uuid": "...", "video_id": ..., "file_name": "...", "duration": ..., "width": ..., "height": ... } ``` --- ## Phase 3: 處理進度追蹤 ### Step 3.1: 查詢處理進度 (新版 API) **API 呼叫:** ```bash curl -X GET "http://localhost:3002/api/v1/progress/{uuid}" ``` **Response (新版 - 包含影片資訊與系統資源):** ```json { "uuid": "a1b10138a6bbb0cd", "user": null, "group": null, "file_name": "Old_Time_Movie_Show_-_Charade_1963.HD.mov", "duration": 6879.33, "overall_progress": 28, "cpu_percent": 3.7, "gpu_percent": null, "memory_percent": 0.1, "memory_mb": 19328, "processors": [ {"name": "asr", "status": "complete", "current": 1867, "total": 0, "progress": 100, "message": "1867 segments"}, {"name": "cut", "status": "complete", "current": 1331, "total": 1331, "progress": 100, "message": "1331 scenes"}, {"name": "asrx", "status": "error", "current": 0, "total": 0, "progress": 0, "message": "0 segments"}, {"name": "yolo", "status": "progress", "current": 69400, "total": 412343, "progress": 16, "message": "frame 69400"}, {"name": "ocr", "status": "pending", "current": 0, "total": 0, "progress": 0, "message": ""}, {"name": "face", "status": "pending", "current": 0, "total": 0, "progress": 0, "message": ""}, {"name": "pose", "status": "pending", "current": 0, "total": 0, "progress": 0, "message": ""} ] } ``` **欄位說明:** | 欄位 | 說明 | |------|------| | uuid | 影片唯一識別碼 | | user | 處理所屬用戶 (如已設定) | | group | 處理所屬群組 (如已設定) | | file_name | 影片檔案名稱 | | duration | 影片時長 (秒) | | overall_progress | 整體進度 (百分比) | | cpu_percent | CPU 使用率 (%) | | gpu_percent | GPU 使用率 (%),無 GPU 則為 null | | memory_percent | 記憶體使用率 (%) | | memory_mb | 記憶體使用量 (MB) | | processors | 各處理器狀態陣列 | ``` --- ## Phase 4: 自然語言檢索 ### Step 4.1: RAG 搜尋 **API 呼叫:** ```bash curl -X POST "http://localhost:3002/api/v1/search" \ -H "Content-Type: application/json" \ -d '{ "query": "What is the movie about?", "limit": 10, "uuid": "..." }' ``` **Request:** ```json POST /api/v1/search Content-Type: application/json { "query": "What is the movie about?", "limit": 10, "uuid": "" } ``` **Response:** ``` (待填寫) ``` --- ### Step 4.2: n8n 搜尋 (含 file_path) **API 呼叫:** ```bash curl -X POST "http://localhost:3002/api/v1/n8n/search" \ -H "Content-Type: application/json" \ -H "X-API-Key: demo_api_key_12345" \ -d '{ "query": "What is the movie about?", "limit": 10, "uuid": "..." }' ``` **Response:** ``` (待填寫) ``` --- ## 憑證彙整 | 服務 | 項目 | 值 | |------|------|------| | SFTPGo | API Base | `http://localhost:8080/api/v2` | | SFTPGo | Demo User | `demo` | | SFTPGo | Demo Password | `demopassword123` (已重設) | | SFTPGo | Demo Home | `/Users/accusys/sftpgo_test/demo` | | SFTPGo | Token Endpoint | `/api/v2/user/token` | | SFTPGo | Share ID | `CjmQfrkXY5qDtC46WVZY2S` | | Momentry | Server | `http://localhost:3002` | | Momentry | MEDIA_BASE_URL | `https://wp.momentry.ddns.net` | --- ## 版本歷史 | 日期 | 版本 | 變更 | |------|------|------| | 2026-03-22 | v1.0 | 初始建立文件 | | 2026-03-22 | v1.1 | 成功取得 Demo Token | | 2026-03-22 | v1.2 | Phase 1 完成 (上傳 Charade 2.3GB) |