Ozor 文件轉影片
在 Ozor.ai 上進行端到端的文件轉影片。接受真實檔案(PDF、PPTX、DOCX 等),在 Ozor 端進行分析以產出結構化計畫,讓使用者核准/編輯計畫,然後生成並匯出完成的影片——過程中保留幻燈片視覺效果。
使用時機
當輸入是文件/檔案時使用此技能。判斷信號:
- 使用者附加或提到了 PDF、PPTX、DOCX、Keynote 匯出、簡報、提案、白皮書、報告、一頁式文件
- 「將這個簡報變成影片」
- 「從這個 PDF 製作影片」
- 「從我的提案/建議書/報告製作影片」
請勿在以下情況使用此技能:
- 輸入是一段簡短的創意文字簡報 →
ozor-generate - 輸入是一個 URL 或著陸頁 →
ozor-url-to-video - 使用者只想要一個書面的 Ozor 提示 →
ozor-doc-to-video(純提示技能) - 使用者想管理現有影片 →
ozor-video-library
必要的 MCP 工具
mcp__ozor__analyze_document— 分析文件,回傳planId與結構化計畫mcp__ozor__prepare_document_upload— 取得一個可透過 curl 上傳的 URL,適用於沒有公開 URL 的本地檔案(常見情況)mcp__ozor__get_plan— 取得最新的計畫狀態mcp__ozor__update_plan— 在使用者生成前套用編輯mcp__ozor__generate_from_plan— 從已核准的計畫啟動影片建置,回傳projectIdmcp__ozor__export_video— 開始渲染(使用projectId作為videoId)mcp__ozor__wait_for_export— 阻塞直到渲染完成mcp__ozor__get_embed_code— 回傳<iframe>HTML
如果 Ozor MCP 未連接,請告知使用者並停止。請勿自行擷取內容並回退到使用手寫腳本的 generate_video,這會丟失幻燈片視覺效果並超出 2000 字元的提示限制。文件必須使用基於計畫的流程。
工作流程
步驟 1 — 將文件送到 Ozor
依優先順序選擇最佳來源:
- 公開 URL → 將
url直接傳給analyze_document。無大小限制,無 token 成本。有可用時最佳。 - 本地檔案(常見情況) → 呼叫
mcp__ozor__prepare_document_upload,然後執行回傳的 curl 命令,將位元組直接推送到 Ozor 的儲存空間。位元組永不經過工具呼叫,因此最多約 50 MB 的檔案都可運作。對於使用者在對話中上傳的任何數 MB 的 PDF/PPTX/DOCX 使用此方法。 analyze_document上的fileBase64+fileName→ 僅適用於小型檔案(約幾百 KB 以下)。大型簡報應避免使用,因為會耗費大量 token。
如果 prepare_document_upload 不在工具清單中,表示該伺服器上禁用了上傳功能——請回退到 URL 或小型 base64。
步驟 2 — 分析文件
一旦 Ozor 擁有檔案,請呼叫:
mcp__ozor__analyze_document({
url | uploadId | fileBase64+fileName,
...可選提示:targetDuration, format (16:9 / 9:16), audience, tone
})
這會回傳 { planId, plan }。計畫包含建議的場景、旁白、視覺備註以及哪些幻燈片/頁面對應到哪些場景。
步驟 3 — 向使用者展示計畫並停止
這是關鍵步驟。 請勿跳過直接生成。向使用者展示計畫的簡潔呈現:
📋 Ozor 計畫「<文件名稱>」
**格式:** 16:9(或 9:16)
**預計時長:** ~X 秒
**場景數:** N
(1) <場景標題> — <一行旁白/視覺>
(2) <場景標題> — <一行旁白/視覺>
...
要直接按此生成,還是想修改任何內容?您可:
- 編輯場景(「將場景 2 改為...」)
- 重新排序/刪除/新增場景
- 更改語氣、長度或格式
- 核准並生成
然後等待使用者核准或要求編輯。請勿自行呼叫 generate_from_plan——計畫是使用者的成本與創意控制檢查點。
步驟 4 — 套用編輯(如有)
如果使用者要求變更,使用編輯內容呼叫 mcp__ozor__update_plan({ planId, ... })。使用 get_plan 重新取得並重新顯示更新後的計畫。迴圈直到使用者核准。
步驟 5 — 從計畫生成
當使用者核准時:
mcp__ozor__generate_from_plan({ planId })
這會回傳 { projectId }。後續每次呼叫都使用 projectId 作為 videoId。
如果回應中包含 jobId,請使用 wait_for_job({ videoId: projectId, jobId }) 等待它。否則繼續進行匯出。
步驟 6 — 匯出
mcp__ozor__export_video({ videoId: projectId })
mcp__ozor__wait_for_export({ videoId: projectId })
回傳 shareUrl、editorUrl、downloadUrl。
步驟 7 — 嵌入
mcp__ozor__get_embed_code({ videoId: projectId })
步驟 8 — 呈現結果
🎬 影片已從「<文件名稱>」準備就緒
**分享:** <shareUrl>
**編輯器:** <editorUrl>
**下載:** <downloadUrl>
**嵌入:**
```html
<iframe ...></iframe>
要從同一個計畫生成 9:16 社交版本嗎?我可以重新生成。
## 傳遞給 `analyze_document` 的提示
如果使用者提及或從文件中顯而易見,請傳遞以下任何一項:
- `targetDuration` — 例如 `