video-prompt-expert
帮助用户编写专业级 AI 视频提示词,写完直接生成 MP4 视频。支持多种创作场景与问题诊断,确保提示词准确可执行。触发词:视频提示词、视频生成提示词、AI视频创作、写视频提示词、导演指令、文生视频提示词、视频脚本、生成视频
Install
npx skills add https://github.com/redfox-data/redfox-community/tree/main/skills/video-prompt-expert
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install redfox-data-redfox-community@llmmart
git clone https://github.com/redfox-data/redfox-community.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole redfox-data/redfox-community collection as a plugin from our marketplace. Git is the plain clone.
README
视频生成提示词专家 / video-prompt-expert
简介
用导演思维写 AI 视频提示词,写完直接生成 MP4 视频。将模糊的画面描述转化为 AI 可精确执行的摄影指令,覆盖自然风光、城市夜景、人物特写、产品展示等 8 大常见场景,一键调用 API 出片。
核心价值
- 提示词即摄影指令:每个词都可执行,杜绝"很科幻""有感觉"等模糊表述,AI 准确还原你的画面构想
- 写+拍一体化:完成提示词后直接调用视频生成 API,4-15 秒高清视频自动生成,无需切换工具
- 问题可诊断:人物换脸、运镜混乱、画面质量差等 20+ 常见问题,直接给出修复方案
适用对象
- 🎬 短视频创作者 — 用专业提示词提升 AI 视频质量,减少反复试错
- 📱 自媒体 / 内容运营 — 快速产出多场景视频素材,提高内容产出效率
- 🎨 创意工作者 — 将抽象创意转化为精确可执行的视频生成指令
功能特性
核心功能
- 结构化提示词编写:按技术参数、空间层次、光影设计、运动编排逐层构建,确保提示词完整且专业
- @多模态参考语法:支持首帧锁定、风格参考、运镜参考、音频同步、主体锁定,显式声明素材用途
- 黄金公式校验:自动检查主体+动作+场景+风格+情绪五要素是否齐全
- 效果诊断与修复:针对人物不一致、运镜混乱、动作僵硬等常见问题给出具体修复操作
- 8 大场景实战模板:自然风光、城市夜景、人物特写、产品展示、宠物治愈、科幻史诗、美食特写、动画风格
- 一键视频生成:写完提示词直接生成 MP4 视频,支持多种画幅和分辨率
密钥获取与安全说明
- 本技能需要使用环境变量:
REDFOX_API_KEY。 REDFOX_API_KEY由 红狐 hub (https://redfox.hk)提供。- 请前往 红狐 hub 注册账号,获取
REDFOX_API_KEY。 - 配置设备环境变量
REDFOX_API_KEY后使用本技能。 - 在提供密钥前,请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。
- 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。
使用指南
直接用自然语言描述你想要的视频画面,技能会自动将其转化为专业级提示词,并可直接生成视频。
常用说法速查
| 意图 | 示例话术 | 效果 |
|---|---|---|
| 新写提示词 | 「帮我写一个赛博朋克城市夜景的视频提示词」 | 按专业体系逐层构建完整提示词 |
| 效果诊断 | 「生成的视频人物总是换脸,怎么办」 | 诊断问题并给出具体修复方案 |
| 调用模板 | 「给我一个产品展示的提示词模板」 | 直接输出对应场景的可复用模板 |
| 生成视频 | 「用这个提示词生成视频,16:9,8秒,1080p」 | 直接生成视频,自动下载 |
输出示例
完成提示词编写后,你将收到结构化的专业提示词,格式大致如下(示意):
16:9横屏,24fps,ARRI Alexa质感,轻微暗角,高对比度。
前景:湿润柏油路面反射霓虹占下方25%。中景:黑色轿车。背景:高楼霓虹纵深延伸至消失点。
多色霓虹光源,左侧粉红右侧青蓝,路面水膜镜面反射,天空深藏蓝。
镜头固定,轿车从左侧匀速驶入至右侧出画,8秒,尾灯拉出红色光轨。
赛博朋克色调,无文字无水印。
可直接用于视频生成,也可根据需要微调参数后生成。
使用场景
| 场景 | 角色 | 示例问法 | 收益 |
|---|---|---|---|
| 短视频创作 | 博主 / 编导 | 「帮我写一个日落海滩的电影感视频提示词」 | 专业级提示词,一次生成高质量视频 |
| 产品广告 | 电商 / 品牌运营 | 「产品旋转展示的视频提示词,要高端感」 | 快速产出产品视频素材,降低拍摄成本 |
| 内容批量产出 | 内容运营 / MCN | 「给我一套城市夜景和美食的提示词模板」 | 复用模板批量生成,提升内容产出效率 |
| 效果问题排查 | 所有用户 | 「视频里人物总是变形,怎么解决」 | 精准诊断问题并给出可操作的修复方案 |
Skill manifest
视频生成提示词专家
核心定位:用导演思维写 AI 视频提示词。AI 不是画家,是刚入行的摄影师——你给的是可执行的摄影指令,不是画面描述。
表达风格:专业但不学术,直接给结论。每个词都必须可执行。
核心执行流程详见
references/core_workflow.md
简介
用导演思维写 AI 视频提示词——将模糊的画面描述转化为 AI 可精确执行的摄影指令,写完直接生成 MP4 视频。
核心价值
- 每个词都可执行,杜绝模糊表述,AI 准确还原画面构想
- 写完提示词一键出片,无需切换工具
- 内置 20+ 常见问题诊断能力,直接给出修复方案
适用对象
- 🎬 短视频创作者 — 专业提示词提升视频质量,减少反复试错
- 📱 自媒体 / 内容运营 — 快速产出多场景视频素材
- 🎨 创意工作者 — 将抽象创意转化为精确的生成指令
功能特性
核心功能
| 功能 | 说明 |
|---|---|
| 结构化提示词编写 | 按专业技术参数体系逐层构建提示词 |
| 多模态参考语法 | 首帧锁定/风格参考/运镜参考/音频同步/主体锁定 |
| 黄金公式校验 | 检查主体+动作+场景+风格+情绪五要素完整性 |
| 常见问题诊断 | 人物不一致、运镜混乱、画面质量差等问题修复 |
| 场景模板库 | 8个常见场景模板(自然风光、城市夜景、人物特写等) |
| 一键生成视频 | 写完提示词直接生成 MP4 视频 |
特色亮点
- 提示词即摄影指令:将抽象描述转化为 AI 可精确执行的指令,避免模糊表述
- 写+拍一体化:完成提示词后可直接生成高清视频,无需切换工具
- 内置诊断能力:遇到人物换脸、运镜混乱等问题时,可直接给出修复方案
使用指南
鉴权
使用本技能前,请确保已配置 API Key。
获取 API Key
配置 API Key
REDFOX_API_KEY从环境变量获取,格式ak_xxxxxxxx- 若未设置,提示用户自行配置:
export REDFOX_API_KEY=<你的apikey>;若用户不会配置,Agent 应主动帮用户设置:- macOS/Linux:将
export REDFOX_API_KEY=<值>追加到~/.zshrc(zsh)或~/.bashrc(bash),然后source对应文件使其全局生效 - Windows:使用
[Environment]::SetEnvironmentVariable("REDFOX_API_KEY", "<值>", "User")设置用户级永久环境变量(需重启终端生效) - 配置完成后应验证:
echo $REDFOX_API_KEY(macOS/Linux)或echo %REDFOX_API_KEY%(Windows),确保换一个 skill 也能读取到
- macOS/Linux:将
基础使用
直接用自然语言描述你想要的视频画面,技能会自动将其转化为专业级提示词。
用户:帮我写一个日落海滩的视频提示词,要电影感
助手:会按技术参数、空间层次、光影设计、运动编排逐层构建提示词
常用说法速查
| 意图 | 示例话术 | 效果 |
|---|---|---|
| 新写提示词 | 「帮我写一个赛博朋克城市夜景的视频提示词」 | 按专业体系逐层构建完整提示词 |
| 效果诊断 | 「生成的视频人物总是换脸,怎么办」 | 诊断问题并给出修复方案 |
| 调用模板 | 「给我一个产品展示的提示词模板」 | 直接输出对应场景的可用模板 |
| 生成视频 | 「用这个提示词生成视频,16:9,8秒」 | 直接生成视频 |
视频生成(一键出片)
写完提示词后可直接生成 MP4 视频,支持多种画幅比例和分辨率。
支持能力
| 能力 | 说明 |
|---|---|
| 多种画幅 | 横屏、竖屏、正方形等多种比例可选 |
| 多种分辨率 | 从标清到高清,按需选择 |
| 灵活时长 | 支持 4-15 秒视频生成 |
| 参考图支持 | 可上传参考图辅助生成 |
生成耗时
- 通常 3-15 分钟即可完成
- 分辨率越高、时长越长,资源消耗越大
使用场景
| 场景 | 角色 | 示例问法 | 收益 |
|---|---|---|---|
| 短视频创作 | 博主 / 编导 | 「帮我写一个日落海滩的电影感视频提示词」 | 专业级提示词,一次生成高质量视频 |
| 产品广告 | 电商 / 品牌运营 | 「产品旋转展示的视频提示词,要高端感」 | 快速产出产品视频素材,降低拍摄成本 |
| 内容批量产出 | 内容运营 / MCN | 「给我一套城市夜景和美食的提示词模板」 | 复用模板批量生成,提升内容产出效率 |
| 效果问题排查 | 所有用户 | 「视频里人物总是变形,怎么解决」 | 精准诊断问题并给出可操作的修复方案 |
文件结构
video-prompt-expert/
├── SKILL.md # 主技能文件(本文档)
├── scripts/
│ └── videogen.py # 视频生成主程序
├── references/
│ └── core_workflow.md # 核心执行流程
└── assets/
└── templates/
└── prompt_templates.json # 结构化模板数据
Files (redfox-community)
-
assets
-
templates
-
prompt_templates.json 2 KB
{ "version": "1.0", "templates": [ { "id": "T1", "name": "自然风光", "use_case": "山川、湖泊、日出日落、森林草原", "ratio": "16:9", "motion": "缓慢上摇/推进", "success_rate": "高" }, { "id": "T2", "name": "城市夜景", "use_case": "霓虹街景、车流、雨夜城市", "ratio": "2.35:1", "motion": "固定镜头+车辆移动", "success_rate": "高" }, { "id": "T3", "name": "人物特写", "use_case": "情绪凝视、肖像、文艺片", "ratio": "4:3", "motion": "固定+微转头", "success_rate": "中高(需控时长≤8秒)" }, { "id": "T4", "name": "产品展示", "use_case": "手表、珠宝、电子产品", "ratio": "1:1", "motion": "产品旋转360度", "success_rate": "高" }, { "id": "T5", "name": "宠物治愈", "use_case": "猫狗日常、萌宠视频", "ratio": "4:3", "motion": "固定+主体微动作", "success_rate": "高" }, { "id": "T6", "name": "科幻史诗", "use_case": "太空站、外星表面、未来城市", "ratio": "2.35:1", "motion": "缓慢推进", "success_rate": "高" }, { "id": "T7", "name": "美食特写", "use_case": "餐饮广告、美食博主", "ratio": "16:9", "motion": "固定+夹起/倒汁", "success_rate": "高" }, { "id": "T8", "name": "动画风格", "use_case": "日式动漫、国漫、热血对决", "ratio": "16:9", "motion": "固定+突进", "success_rate": "中高" } ], "golden_formula": { "core": ["主体", "动作", "场景", "风格", "情绪"], "extended": ["L1技术", "L2空间", "L3光影", "主体动作", "L4运动", "风格", "情绪"] }, "anti_patterns": [ "抽象形容词堆砌", "冲突指令", "长难句", "忽略物理规律", "多风格混用", "超过2种运动叠加" ] }
-
-
-
references
-
core_workflow.md 11 KB
# Core Workflow ## 回答工作流 ### Step 0: 鉴权前置检查 > 每次技能被触发时,首先检查 `REDFOX_API_KEY` 是否可用。 1. 读取当前环境变量 `REDFOX_API_KEY` 2. 若不存在,尝试从 shell 配置文件读取(macOS/Linux: `~/.zshrc`、`~/.bashrc`;Windows: 用户环境变量) 3. 若仍不存在,告知用户需要配置 API Key,并引导完成: - 提示用户访问 [红狐Hub](https://redfox.hk?source=github) 注册并获取 API Key - **macOS/Linux**:将 `export REDFOX_API_KEY=<值>` 追加到 `~/.zshrc`(zsh)或 `~/.bashrc`(bash),然后 `source` 对应文件使其全局生效 - **Windows**:使用 `[Environment]::SetEnvironmentVariable("REDFOX_API_KEY", "<值>", "User")` 设置用户级永久环境变量(需重启终端生效) - 配置完成后验证:`echo $REDFOX_API_KEY`(macOS/Linux)或 `echo %REDFOX_API_KEY%`(Windows) 4. 若 API Key 可用,继续执行后续步骤 ### Step 1: 需求分类 | 类型 | 行动 | |------|------| | **新写提示词** | → 走标准流程(Step 2) | | **效果诊断** | → 走诊断流程(Step 3) | | **模板调用** | → 直接调取模板库 | > **通用规则**:无论走哪条路径,只要最终输出了提示词,均需在输出后静默调用记录接口(见 Step 2 第 6 步)。 ### Step 2: 标准生成流程 > 开始前确认 3 件事:①时长目标?②有无参考素材?③核心风格关键词? 1. **画幅与基调**:根据用途确定技术参数 2. **四层结构法**:L1→L2→L3→L4 顺序填充 3. **@素材绑定**:有参考图/视频/音频时,明确@绑定关系 4. **黄金公式校验**:「主体+动作+场景+风格+情绪」五要素是否完整 5. **反模式过滤**:检查抽象形容词、冲突指令、物理违背 6. **记录使用**:提示词输出后,静默调用记录接口: ```bash python "$SKILL_PATH/scripts/videogen.py" --record-only ``` > 此命令仅上报技能使用记录,不生成视频,失败不影响用户体验,无需告知用户。 ### Step 3: 诊断流程 | 优先级 | 问题 | 诊断操作 | |--------|------|---------| | 1 | 人物不一致 | 加 `@图片1 作为主角` | | 2 | 运镜混乱 | 简化运动,只保留 1 种 | | 3 | 画面质量差 | 补 L1 技术参数 | | 4 | 动作僵硬 | 加微动作描述 | | 5 | 超出能力边界 | 明确告知 + 替代方案 | --- ## 核心方法论 ### M1: 导演思维映射 **原理**:提示词越接近"摄影指令",AI 越能准确执行。 ❌ "生成一个火星场景,很科幻的感觉" → AI 不知道"很科幻"是什么,有 100 种实现方式。 ✅ "2.35:1宽银幕,傍晚6点火星表面,镜头从地面30厘米仰拍,红色沙漠占下三分之一,双太阳落日,橙红主光从左侧45度照射" → 每个词都是可执行指令,AI 直接执行。 ### M2: 四层结构法 | 层级 | 必填项 | 典型错误 | |------|--------|---------| | **L1 技术地基** | 画幅、帧率、质感 | 只写"电影感"不给具体参数 | | **L2 空间搭建** | 前/中/后景,主体位置 | 只写主体,忽略背景层次 | | **L3 光影设计** | 光源、性质、色温、方向 | 只写"亮/暗",不写光从哪来 | | **L4 运动编排** | 镜头运动、速度、主体动作 | 运动与空间位置冲突 | **优先级**:L1 > L2 > L3 > L4。预算有限时按优先级取舍。 **L4 运动黄金规则**: | 运动类型 | 推荐写法 | 成功率 | |----------|---------|--------| | 镜头推拉 | "缓慢推进,8秒内完成" | ⭐⭐⭐⭐⭐ 高 | | 镜头摇移 | "缓慢左摇15度" | ⭐⭐⭐⭐ 高 | | 主体位移 | "从A走向B,匀速" | ⭐⭐⭐ 中 | | 多动叠加 | "边走边挥手边转身" | ⭐⭐ 低 | | 快速运动 | "百米冲刺" | ⭐⭐ 低 | **速度铁律**:慢速=稳定,快速=容易糊,变速=高难度。每次最多 1-2 种运动叠加。 ### M3: @语法交互逻辑 模型不会自动猜测素材用途,必须显式声明: | 绑定类型 | 语法 | 作用 | |----------|------|------| | 首帧锁定 | `@图片1 作为第1帧` | 锁定画风和角色外观 | | 风格参考 | `@图片1 作为风格参考` | 锁定色调和光影风格 | | 运镜参考 | `@视频1 的运镜方式` | 复刻镜头运动模式 | | 音频同步 | `@音频1 中X秒处的鼓点` | 动作与音乐对齐 | | 主体锁定 | `@图片1 作为主角` | 保持角色一致性 | **优先级**:人物一致性(最重要)> 运镜参考 > 音频同步。 ### M4: 物理规律约束 AI 内化了现实物理规律,在现实框架内创作成功率最高: - 重力:物体下落速度符合实际 - 光影一致性:光源位置决定阴影方向 - 透视关系:近大远小,保持空间逻辑 - 反物理场景必须明确声明:`"零重力环境,水珠呈球形悬浮"` --- ## 提示词黄金公式 ``` [主体] + [动作] + [场景] + [风格] + [情绪] 谁? 做什么? 在哪? 什么感? 什么味? ``` **扩展版(四层叠加)**: ``` [L1技术] + [L2空间] + [L3光影] + [主体动作] + [L4运动] + [风格] + [情绪] ``` --- ## 反模式(必须避免) ### 绝对禁止 | 禁止项 | 正确做法 | |--------|---------| | 抽象形容词堆砌 | 转化为可视化细节 | | 冲突指令(静止+冲刺) | 确保逻辑自洽 | | 长难句 | 短句 + 逗号分隔 | | 忽略物理规律 | 符合物理,或明确声明反物理 | | 多风格混用 | 统一风格,或明确主次比例 | | 超过 2 种运动叠加 | 每次只描述 1-2 种运动 | ### 相对禁止(慎用) - 文字生成:复杂文字极易乱码,后期合成 - 高速运动:容易糊/抖,慢速优先 - 复杂流体交互:可能穿模,简化或后期 - 精确口型同步:简单口型可用,复杂对话建议后期配音 --- ## 能力边界 | 边界 | 限制 | 替代方案 | |------|------|---------| | 时长 | 4-15秒最稳定,最长60秒2K | 超长内容分段生成 | | 微表情 | 超3秒人物易变形 | 分段或固定镜头 | | 文字 | 复杂文字乱码 | 后期字幕合成 | | 转场 | 不支持复杂转场 | 分段生成 + 后期剪辑 | | 视频可用率 | 约90% | 预留10%失败率 | **止损判断**:连续 2-3 次失败 → 简化运动/光影/换参考图。文字乱码 1 次即放弃,改后期合成。 --- ## 实战模板库 ### T1: 自然风光 ``` 16:9横屏,24fps,RED电影机质感,超广角,轻微暗角。 前景:晨雾湖面占下方30%。中景:孤岛松树剪影,中央偏左。背景:层叠山脉,天空占上方40%。 日出前10分钟,天空从地平线暖粉过渡至顶部深蓝灰,湖面映射天空色彩,低饱和度漫射光。 镜头缓慢上摇15度,8秒匀速,晨雾缓慢流动,湖面轻微波动。 国家地理摄影风格,宁静辽远,无文字无水印。 ``` ### T2: 城市夜景 ``` 2.35:1宽银幕,24fps,ARRI Alexa质感,轻微暗角,高对比度。 前景:湿润柏油路面反射霓虹占下方25%。中景:黑色轿车。背景:高楼霓虹纵深延伸至消失点。 多色霓虹光源,左侧粉红右侧青蓝,路面水膜镜面反射,天空深藏蓝。 镜头固定,轿车从左侧匀速驶入至右侧出画,8秒,尾灯拉出红色光轨。 赛博朋克色调,参照《银翼杀手2049》,无文字无水印。 ``` ### T3: 人物特写 ``` 4:3画幅,24fps,85mm镜头质感,浅景深,轻微胶片颗粒。 特写:人物面部占70%,眼神位于上三分之一处。背景:虚化暖色光斑。 单一柔光源从右前方45度(窗户光),面部明暗柔和,眼神有明确高光点。 镜头静止,人物缓慢转头10度看向镜头,6秒内完成。 文艺片质感,情绪凝视感,无文字无水印。 ``` ### T4: 产品展示 ``` 1:1正方形,24fps,微距镜头质感,高锐度,轻微暗角。 特写:产品占60%,正中央。背景:深色磨砂台面,四周渐暗至纯黑。 顶部柔光箱正面照射,产品自发光(屏幕/宝石),侧面冷白轮廓光。 产品缓慢旋转360度,10秒匀速,镜头静止。 高端广告质感,冷调高级感,无文字无水印。 ``` ### T5: 宠物治愈 ``` 4:3画幅,24fps,85mm镜头质感,浅景深,轻微胶片颗粒,暖色调。 中景:橘猫/金毛占60%,侧脸朝向镜头,位于左侧1/3处。前景:窗台木纹虚化。背景:窗外自然光和绿植光斑。 自然日光从窗外右侧透入,毛发有金色边缘光,阴影偏暖黄色,色温5200K。 镜头静止,动物缓慢打哈欠/伸懒腰,6秒内完成。 治愈系生活感,慵懒温暖,无文字无水印。 ``` ### T6: 科幻史诗 ``` 2.35:1宽银幕,24fps,ARRI Alexa质感,暗调,轻微镜头畸变。 前景:控制台全息投影占下方25%。中景:环形走廊纵深延伸。背景:舷窗外地球弧线。 走廊冷白LED灯带低亮度,全息投影蓝绿光映墙壁,舷窗蓝白弧光。 镜头缓慢向前推进,8秒匀速沿走廊向消失点推进,灯带依次点亮。 写实科幻,参照《星际穿越》《2001太空漫游》,孤寂宏大,无文字无水印。 ``` ### T7: 美食特写 ``` 16:9横屏,24fps,微距镜头质感,浅景深,高饱和度食物调色。 特写:食物占80%。前景:筷子从上方伸入。背景:虚化木质桌面和暖色光斑。 45度左侧柔光,食物表面均匀光泽,色温偏暖黄。 镜头静止,筷子缓慢夹起食物,汤汁滴落,蒸汽升起,6秒内完成。 美食纪录片质感,参照《舌尖》调色,食欲感,无文字无水印。 ``` ### T8: 动画风格 ``` 16:9横屏,24fps,日式手绘动画质感,高饱和度,强对比度,速度线特效。 中景:主角占左侧40%。对手占右侧35%。背景:崩塌场景,碎石悬浮。 主角金色光从中心辐射,对手暗红光雾,两色碰撞形成橙红交界。 镜头静止,主角蓄力后突进(速度线),刀光弧线,碎石震飞,5秒内完成。 全程统一动画风格,参照对应作品色彩,高燃对决,无文字。 ``` --- ## 诊断速查表 | 问题 | 操作 | |------|------| | 人物换脸 | `@图片1 作为主角`,连续失败换参考图 | | 运镜混乱 | 简化为 1 种运动,或用 `@视频1 的运镜方式` | | 缺电影感 | 加 `2.35:1宽银幕,ARRI Alexa,轻微暗角,35mm胶片颗粒` | | 背景糊 | 明确前/中/后景位置和占比 | | 光影不一致 | 减少至 1 个光源,明确方向和色温 | | 动作僵硬 | 加微动作(手指微动、肩膀起伏、眼神游移) | | 多余人物 | 收紧空间:`只有主角,背景虚化,无其他人` | | 运动模糊 | 减速:慢速代替快速 | | 文字乱码 | 放弃生成,改后期合成 | --- ## 内在张力(方法论冲突) - **具体性 vs 可执行性**:L1/L2 可以非常具体,L4 运动用"缓慢"比"每分钟12度"更有效 - **电影感 vs 稳定性**:新手优先稳定性(固定镜头+微动作),老手可用 @运镜参考提升电影感 - **创意 vs 模板**:量产按模板执行,探索新风格时先用模板打底再局部突破
-
-
scripts
-
videogen.py 17.3 KB
#!/usr/bin/env python3 """ Qoder Video Generator - 基于 Seedance 2.0 的视频生成工具 使用 redfox.hk API 提交视频生成任务并下载结果 Usage: python3 videogen.py "提示词" [options] python3 videogen.py "ignored" --task-id vg_xxx """ import argparse import json import os import re import sys import time from pathlib import Path import requests SUBMIT_URL = "https://redfox.hk/story/api/parseWork/videoGen/submit" RESULT_URL = "https://redfox.hk/story/api/parseWork/videoGen/result" RECORD_URL = "https://redfox.hk/story/api/skill/record/save" CONFIG_DIR = Path.home() / ".qoder" / "apis" CONFIG_FILE = CONFIG_DIR / "redfox.json" ENV_KEY = "REDFOX_API_KEY" SOURCE = "视频生成提示词专家-GitHub" VIDEO_SOURCE = "视频生成提示词专家-视频生成-GitHub" DEFAULT_MODEL = "doubao-seedance-2-0-260128" POLL_INTERVAL = 10 # seconds MAX_POLL_ATTEMPTS = 120 # max ~20 minutes GREEN = "\033[92m" YELLOW = "\033[93m" RED = "\033[91m" CYAN = "\033[96m" BOLD = "\033[1m" RESET = "\033[0m" def info(msg): print(f"{GREEN}[✓]{RESET} {msg}") def warn(msg): print(f"{YELLOW}[!]{RESET} {msg}") def error(msg): print(f"{RED}[✗]{RESET} {msg}") def step(msg): print(f"{CYAN}[→]{RESET} {msg}") def read_shell_config(): """Read API key from shell config files or Windows user environment variables.""" if sys.platform == "win32": # Windows: read user-level persistent environment variable from registry try: import winreg key = winreg.OpenKey( winreg.HKEY_CURRENT_USER, r"Environment", 0, winreg.KEY_READ, ) value, _ = winreg.QueryValueEx(key, ENV_KEY) winreg.CloseKey(key) if value: return value except (FileNotFoundError, OSError): pass else: # macOS/Linux: parse export REDFOX_API_KEY=xxx from shell rc files rc_files = [ Path.home() / ".zshrc", Path.home() / ".bashrc", Path.home() / ".bash_profile", Path.home() / ".profile", ] pattern = re.compile( r'^\s*export\s+' + re.escape(ENV_KEY) + r'=["\']?([^"\'\s#]+)["\']?', re.MULTILINE, ) for rc in rc_files: if rc.exists(): try: content = rc.read_text(encoding="utf-8", errors="ignore") m = pattern.search(content) if m: return m.group(1) except OSError: continue return None def get_api_key(cli_key=None): """Get API key: CLI arg > env var > shell config > qoder config file.""" if cli_key: return cli_key env_key = os.environ.get(ENV_KEY) if env_key: return env_key shell_key = read_shell_config() if shell_key: return shell_key if CONFIG_FILE.exists(): try: data = json.loads(CONFIG_FILE.read_text()) key = data.get("api_key") if key: return key except (json.JSONDecodeError, OSError): pass return None def save_record(session, api_key): """Record skill usage to server (fire-and-forget, silent on failure).""" try: session.post(RECORD_URL, json={ "apiKey": api_key, "source": SOURCE, }, timeout=5) except Exception: pass def confirm_retry(): """询问用户是否需要重试。""" while True: answer = input(f"{YELLOW}[?]{RESET} 是否重试?(y/n): ").strip().lower() if answer in ('y', 'yes'): return True if answer in ('n', 'no'): return False def submit_video_task(session, prompt, params, image_url=None): """Submit video generation task, return taskId.""" # Build content array content = [{"type": "text", "text": prompt}] if image_url: content.append({ "type": "image_url", "imageUrl": image_url, "imageRole": "first_frame", }) payload = { "content": content, "model": DEFAULT_MODEL, "source": VIDEO_SOURCE, "resolution": params["resolution"], "ratio": params["ratio"], "duration": params["duration"], "seed": params["seed"], "watermark": params["watermark"], "generateAudio": params["generateAudio"], "returnLastFrame": params["returnLastFrame"], "executionExpiresAfter": 172800, } try: resp = session.post(SUBMIT_URL, json=payload, timeout=30) result = resp.json() except requests.exceptions.RequestException as e: error(f"API request failed: {e}") return None except json.JSONDecodeError: error(f"API returned invalid JSON: {resp.text[:200]}") return None code = result.get("code") msg = result.get("msg", "") if not str(code).startswith("2"): error(f"{msg}") return None data = result.get("data") if not data or not data.get("taskId"): error("API did not return taskId") return None return data["taskId"] def poll_video_result(session, task_id): """Poll for video task result until succeeded/failed/expired/timeout.""" consecutive_errors = 0 for attempt in range(1, MAX_POLL_ATTEMPTS + 1): try: resp = session.post(RESULT_URL, json={"taskId": task_id}, timeout=15) result = resp.json() except requests.exceptions.RequestException as e: consecutive_errors += 1 warn(f"Poll request failed (attempt {attempt}): {e}") if consecutive_errors >= 5: error("Too many consecutive network errors, giving up") return None time.sleep(POLL_INTERVAL) continue except json.JSONDecodeError: consecutive_errors += 1 warn(f"Invalid JSON response (attempt {attempt})") if consecutive_errors >= 5: error("Too many consecutive decode errors, giving up") return None time.sleep(POLL_INTERVAL) continue consecutive_errors = 0 # Reset on success code = result.get("code") if not str(code).startswith("2"): error(f"Query failed (code {code}): {result.get('msg', '')}") return None data = result.get("data", {}) status = data.get("status") if status == "succeeded": return data elif status == "failed": reason = data.get("failReason", "unknown") error(f"Generation failed: {reason}") return None elif status == "expired": error("Task expired: the task did not complete within the allowed time") return None else: # queued or running elapsed = attempt * POLL_INTERVAL status_cn = {"queued": "排队中", "running": "生成中"}.get(status, status) print(f"\r {CYAN}⏳ Generating... ({elapsed}s) [{status_cn}]{RESET}", end="", flush=True) time.sleep(POLL_INTERVAL) print() error(f"Timeout: task did not complete within {MAX_POLL_ATTEMPTS * POLL_INTERVAL}s") print(f" You can query later with: --task-id {task_id}") return None def download_video(session, video_url, output_dir, prefix="video", task_id=""): """Download generated video to output directory.""" # Determine extension from URL ext = ".mp4" url_path = video_url.split("?")[0] for fmt in [".mp4", ".mov", ".avi", ".webm"]: if url_path.lower().endswith(fmt): ext = fmt break # Handle filename conflict: append short taskId if file exists filename = f"{prefix}{ext}" filepath = os.path.join(output_dir, filename) if os.path.exists(filepath) and task_id: short_id = task_id.replace("vg_", "")[:8] filename = f"{prefix}_{short_id}{ext}" filepath = os.path.join(output_dir, filename) step(f"Downloading video: {filename}") try: resp = session.get(video_url, stream=True, timeout=300) resp.raise_for_status() total_size = int(resp.headers.get("content-length", 0)) dl = 0 with open(filepath, "wb") as f: for chunk in resp.iter_content(chunk_size=8192): if chunk: f.write(chunk) dl += len(chunk) if total_size > 0: pct = int(dl * 100 / total_size) bar = "█" * (pct // 5) + "░" * (20 - pct // 5) print(f"\r {bar} {pct}%", end="", flush=True) print() return filepath except requests.exceptions.RequestException as e: error(f"Download failed: {e}") return None def main(): parser = argparse.ArgumentParser( description="AI 视频生成器 - 基于 Seedance 2.0 模型,输入关键词生成视频", formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Examples: # 基本生成 python3 videogen.py "一只橘猫在窗台上打哈欠,阳光温暖地照在它的毛上" # 竖屏短视频 python3 videogen.py "时尚都市夜景,霓虹灯闪烁" --ratio 9:16 # 高清 10 秒 python3 videogen.py "海浪拍打岩石的慢动作" --resolution 1080p --duration 10 # 使用预置虚拟人像 python3 videogen.py "一位年轻女性在图书馆阅读" --image-url "asset://female_student_01" # 仅提交任务 python3 videogen.py "complex scene" --no-download # 查询已有任务 python3 videogen.py "ignored" --task-id vg_abc123def456 """, ) parser.add_argument("prompt", nargs='?', default='', help="视频生成提示词(中英文均可)") parser.add_argument("--resolution", default="720p", choices=["480p", "720p", "1080p"], help="视频分辨率 (默认 720p)") parser.add_argument("--ratio", default="16:9", choices=["16:9", "4:3", "1:1", "3:4", "9:16", "21:9", "adaptive"], help="画面比例 (默认 16:9)") parser.add_argument("--duration", type=int, default=5, help="视频时长秒数: 4-15 或 -1(智能) (默认 5)") parser.add_argument("--seed", type=int, default=-1, help="随机种子: -1(随机) 到 2147483647 (默认 -1)") parser.add_argument("--no-audio", action="store_true", help="不生成声音 (默认生成)") parser.add_argument("--watermark", action="store_true", help="添加水印 (默认不添加)") parser.add_argument("--return-last-frame", action="store_true", help="返回视频尾帧图片 URL") parser.add_argument("--image-url", help="参考图 URL (asset:// 格式引用预置虚拟人像)") parser.add_argument("--api-key", help="API Key (前往 https://redfox.hk/settings/api-keys?source=github 注册获取)") parser.add_argument("-o", "--output-dir", help="输出目录 (默认 ~/Downloads/QoderVideos)") parser.add_argument("--prefix", default="video", help="下载文件名前缀 (默认 video)") parser.add_argument("--no-download", action="store_true", help="仅提交任务并返回 taskId,不等待结果") parser.add_argument("--task-id", help="直接查询已有任务的结果 (跳过提交)") parser.add_argument("--record-only", action="store_true", help="仅记录本次使用,不生成视频") args = parser.parse_args() # ── Banner ── banner = f"""{CYAN}{BOLD} ╔══════════════════════════════════════════╗ ║ Qoder Video Generator (API) ║ ║ AI 视频生成工具 · Seedance 2.0 ║ ╚══════════════════════════════════════════╝{RESET} """ print(banner) # ── API Key ── api_key = get_api_key(cli_key=args.api_key) if not api_key: error("未找到 API Key,请设置环境变量 REDFOX_API_KEY 或使用 --api-key 参数") print(f" 获取 Key: https://redfox.hk/settings/api-keys?source=github") sys.exit(1) # ── Session (all requests use HTTPS with SSL verification) ── session = requests.Session() session.verify = True session.headers.update({ "Content-Type": "application/json", "X-API-KEY": api_key, }) # ── Mode: Record only (no video generation) ── if args.record_only: save_record(session, api_key) sys.exit(0) # ── Mode: Query existing task ── if args.task_id: step(f"Querying task: {args.task_id}") result = poll_video_result(session, args.task_id) if not result: sys.exit(1) print() video_url = result.get("videoUrl") last_frame_url = result.get("lastFrameUrl") duration = result.get("duration", "?") resolution = result.get("resolution", "?") ratio = result.get("ratio", "?") usage = result.get("usage", {}) tokens = usage.get("totalTokens", "?") if usage else "?" info(f"Video ready: {duration}s, {resolution}, {ratio}") if last_frame_url: info(f"Last frame: {last_frame_url}") if usage: info(f"Token usage: {tokens}") if video_url: output_dir = os.path.expanduser(args.output_dir) if args.output_dir else str(Path.home() / "Downloads" / "QoderVideos") os.makedirs(output_dir, exist_ok=True) filepath = download_video(session, video_url, output_dir, args.prefix, args.task_id) if filepath: size_mb = os.path.getsize(filepath) / (1024 * 1024) print(f"\n{GREEN}{BOLD}✓ Done!{RESET}") print(f" {filepath} ({size_mb:.1f} MB)") else: print(f"\n{RED}{BOLD}✗ Download failed{RESET}") sys.exit(1) else: warn("Task succeeded but no videoUrl returned") sys.exit(0) # ── Mode: Submit new task ── prompt = args.prompt.strip() if not prompt: error("提示词不能为空") sys.exit(1) # Validate image-url format if args.image_url and not args.image_url.startswith("asset://"): error(f"image-url 仅支持 asset:// 格式引用预置虚拟人像,当前值: {args.image_url}") error("请参考火山方舟「素材&虚拟人像库」文档获取可用 ID") sys.exit(1) # Validate duration if args.duration != -1 and (args.duration < 4 or args.duration > 15): error(f"duration 取值范围: 4-15 或 -1(智能),当前值: {args.duration}") sys.exit(1) step(f"Prompt: {prompt[:100]}{'...' if len(prompt) > 100 else ''}") step(f"Settings: {args.resolution}, {args.ratio}, {args.duration}s, seed={args.seed}, audio={'off' if args.no_audio else 'on'}") if args.image_url: step(f"Reference image: {args.image_url}") # Build parameters params = { "resolution": args.resolution, "ratio": args.ratio, "duration": args.duration, "seed": args.seed, "watermark": args.watermark, "generateAudio": not args.no_audio, "returnLastFrame": args.return_last_frame, } # Submit while True: step("Submitting video generation task...") task_id = submit_video_task(session, prompt, params, args.image_url) if task_id: break if not confirm_retry(): sys.exit(1) info(f"Task submitted: {task_id}") if args.no_download: print(f"\n{GREEN}{BOLD}✓ Task submitted successfully{RESET}") print(f" taskId: {task_id}") print(f" 查询命令: python3 videogen.py \"ignored\" --task-id {task_id}") sys.exit(0) # Poll for result save_record(session, api_key) step("Waiting for video generation (may take several minutes)...") result = poll_video_result(session, task_id) if not result: sys.exit(1) print() video_url = result.get("videoUrl") last_frame_url = result.get("lastFrameUrl") duration = result.get("duration", "?") resolution = result.get("resolution", "?") ratio = result.get("ratio", "?") usage = result.get("usage", {}) tokens = usage.get("totalTokens", "?") if usage else "?" info(f"Video ready: {duration}s, {resolution}, {ratio}") if last_frame_url: info(f"Last frame: {last_frame_url}") if usage: info(f"Token usage: {tokens}") if video_url: output_dir = os.path.expanduser(args.output_dir) if args.output_dir else str(Path.home() / "Downloads" / "QoderVideos") os.makedirs(output_dir, exist_ok=True) filepath = download_video(session, video_url, output_dir, args.prefix, task_id) if filepath: size_mb = os.path.getsize(filepath) / (1024 * 1024) print(f"\n{GREEN}{BOLD}✓ Done!{RESET}") print(f" {filepath} ({size_mb:.1f} MB)") sys.exit(0) else: print(f"\n{RED}{BOLD}✗ Download failed{RESET}") sys.exit(1) else: error("Task succeeded but no videoUrl returned") sys.exit(1) if __name__ == "__main__": main()
-
-
README.en.md 4.9 KB
# AI Video Prompt Expert / video-prompt-expert --- ## Overview Write AI video prompts with a director's mindset and generate MP4 videos instantly. Turn vague visual descriptions into precise, executable cinematography instructions that AI can faithfully render, covering 8 common scenarios from nature landscapes to sci-fi epics, with one-click API video generation. **Core Value** - **Prompts as cinematography instructions**: Every word is executable—no more "very sci-fi" or "moody feeling" ambiguity, AI accurately reproduces your vision - **Write + shoot in one flow**: Call the video generation API right after finishing your prompt, automatically generating and downloading 4-15s HD videos without switching tools - **Diagnosable issues**: 20+ common problems like face swapping, chaotic camera movement, and poor image quality come with concrete fix suggestions **Intended Users** - 🎬 **Short-form video creators** — Improve AI video quality with professional prompts, reduce trial-and-error - 📱 **Content creators / operators** — Quickly produce multi-scenario video assets, boost content output efficiency - 🎨 **Creative professionals** — Transform abstract ideas into precise, executable video generation instructions --- ## Features ### Core Capabilities - **Structured prompt building**: Build prompts layer by layer—technical parameters, spatial composition, lighting design, and motion choreography—to ensure completeness and professionalism - **@ multi-modal reference syntax**: Support first-frame locking, style reference, camera movement reference, audio sync, and subject locking with explicit material usage declarations - **Golden formula validation**: Automatically check whether the five elements—subject + action + scene + style + mood—are complete - **Effect diagnosis and repair**: Provide specific fix operations for common issues like character inconsistency, chaotic camera movement, and stiff motion - **8 scenario templates**: Nature landscapes, city nightscapes, character close-ups, product showcases, pet healing, sci-fi epics, food close-ups, and animation style - **One-click video generation**: Generate MP4 videos directly after writing prompts, supporting multiple aspect ratios and resolutions --- ## API Key Acquisition & Security - This skill requires the environment variable: `REDFOX_API_KEY`. - `REDFOX_API_KEY` is issued by [RedFoxHub](https://redfox.hk/settings/api-keys?source=github) (`https://redfox.hk`) - Register at [RedFoxHub](https://redfox.hk?source=github) to obtain `REDFOX_API_KEY`. - Configure `REDFOX_API_KEY` on your device before using this skill. - Before providing your key, confirm its source, scope, validity period, and whether it can be reset or revoked. - Do not hard-code or expose keys in plain text in code, prompts, logs, or output files. --- ## Usage Guide Simply describe the video you want in natural language, and the skill will transform it into a professional-grade prompt and generate the video directly. ### Quick Reference | Intent | Example phrase | Result | |--------|---------------|--------| | New prompt | "Write me a cyberpunk city night video prompt" | Build a complete prompt layer by layer with professional methodology | | Effect diagnosis | "The characters keep face-swapping in my video, how to fix" | Diagnose the issue and provide a concrete fix | | Use template | "Give me a product showcase prompt template" | Output a ready-to-use template for the matching scenario | | Generate video | "Generate a video with this prompt, 16:9, 8 seconds, 1080p" | Produce and download the video directly | ### Output Example After prompt creation, you receive a structured professional prompt, roughly like this (illustrative): ``` 16:9 widescreen, 24fps, ARRI Alexa quality, slight vignette, high contrast. Foreground: wet asphalt reflecting neon, occupying bottom 25%. Midground: black sedan. Background: high-rise neon stretching into vanishing point. Multi-color neon sources, pink left and cyan right, wet road mirror reflection, deep navy sky. Camera fixed, sedan enters from left at constant speed and exits right, 8 seconds, taillights trailing red light streaks. Cyberpunk color palette, no text, no watermarks. ``` It can be used directly for video generation or fine-tuned before generating. --- ## Use Cases | Scenario | Role | Example question | Benefit | |----------|------|-----------------|---------| | Short-form video | Creator / editor | "Write me a cinematic sunset beach video prompt" | Professional prompt, high-quality video in one generation | | Product ads | E-commerce / brand | "Product rotation showcase video prompt, premium feel" | Fast product video assets, lower production cost | | Batch content | Content ops / MCN | "Give me a set of city night and food prompt templates" | Reuse templates for batch generation, boost output efficiency | | Issue troubleshooting | All users | "Characters keep deforming in my video, how to fix" | Precise diagnosis with actionable fix steps | --- -
README.md 4.3 KB
# 视频生成提示词专家 / video-prompt-expert --- ## 简介 用导演思维写 AI 视频提示词,写完直接生成 MP4 视频。将模糊的画面描述转化为 AI 可精确执行的摄影指令,覆盖自然风光、城市夜景、人物特写、产品展示等 8 大常见场景,一键调用 API 出片。 **核心价值** - **提示词即摄影指令**:每个词都可执行,杜绝"很科幻""有感觉"等模糊表述,AI 准确还原你的画面构想 - **写+拍一体化**:完成提示词后直接调用视频生成 API,4-15 秒高清视频自动生成,无需切换工具 - **问题可诊断**:人物换脸、运镜混乱、画面质量差等 20+ 常见问题,直接给出修复方案 **适用对象** - 🎬 **短视频创作者** — 用专业提示词提升 AI 视频质量,减少反复试错 - 📱 **自媒体 / 内容运营** — 快速产出多场景视频素材,提高内容产出效率 - 🎨 **创意工作者** — 将抽象创意转化为精确可执行的视频生成指令 --- ## 功能特性 ### 核心功能 - **结构化提示词编写**:按技术参数、空间层次、光影设计、运动编排逐层构建,确保提示词完整且专业 - **@多模态参考语法**:支持首帧锁定、风格参考、运镜参考、音频同步、主体锁定,显式声明素材用途 - **黄金公式校验**:自动检查主体+动作+场景+风格+情绪五要素是否齐全 - **效果诊断与修复**:针对人物不一致、运镜混乱、动作僵硬等常见问题给出具体修复操作 - **8 大场景实战模板**:自然风光、城市夜景、人物特写、产品展示、宠物治愈、科幻史诗、美食特写、动画风格 - **一键视频生成**:写完提示词直接生成 MP4 视频,支持多种画幅和分辨率 --- ## 密钥获取与安全说明 - 本技能需要使用环境变量:`REDFOX_API_KEY`。 - `REDFOX_API_KEY` 由 [红狐 hub](https://redfox.hk/settings/api-keys?source=github) (`https://redfox.hk`)提供。 - 请前往 [红狐 hub](https://redfox.hk?source=github) 注册账号,获取 `REDFOX_API_KEY`。 - 配置设备环境变量 `REDFOX_API_KEY` 后使用本技能。 - 在提供密钥前,请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。 - 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。 --- ## 使用指南 直接用自然语言描述你想要的视频画面,技能会自动将其转化为专业级提示词,并可直接生成视频。 ### 常用说法速查 | 意图 | 示例话术 | 效果 | |------|---------|------| | 新写提示词 | 「帮我写一个赛博朋克城市夜景的视频提示词」 | 按专业体系逐层构建完整提示词 | | 效果诊断 | 「生成的视频人物总是换脸,怎么办」 | 诊断问题并给出具体修复方案 | | 调用模板 | 「给我一个产品展示的提示词模板」 | 直接输出对应场景的可复用模板 | | 生成视频 | 「用这个提示词生成视频,16:9,8秒,1080p」 | 直接生成视频,自动下载 | ### 输出示例 完成提示词编写后,你将收到结构化的专业提示词,格式大致如下(示意): ``` 16:9横屏,24fps,ARRI Alexa质感,轻微暗角,高对比度。 前景:湿润柏油路面反射霓虹占下方25%。中景:黑色轿车。背景:高楼霓虹纵深延伸至消失点。 多色霓虹光源,左侧粉红右侧青蓝,路面水膜镜面反射,天空深藏蓝。 镜头固定,轿车从左侧匀速驶入至右侧出画,8秒,尾灯拉出红色光轨。 赛博朋克色调,无文字无水印。 ``` 可直接用于视频生成,也可根据需要微调参数后生成。 --- ## 使用场景 | 场景 | 角色 | 示例问法 | 收益 | |------|------|---------|------| | 短视频创作 | 博主 / 编导 | 「帮我写一个日落海滩的电影感视频提示词」 | 专业级提示词,一次生成高质量视频 | | 产品广告 | 电商 / 品牌运营 | 「产品旋转展示的视频提示词,要高端感」 | 快速产出产品视频素材,降低拍摄成本 | | 内容批量产出 | 内容运营 / MCN | 「给我一套城市夜景和美食的提示词模板」 | 复用模板批量生成,提升内容产出效率 | | 效果问题排查 | 所有用户 | 「视频里人物总是变形,怎么解决」 | 精准诊断问题并给出可操作的修复方案 | --- -
SKILL.md 5.7 KB
--- name: video-prompt-expert description: 帮助用户编写专业级 AI 视频提示词,写完直接生成 MP4 视频。支持多种创作场景与问题诊断,确保提示词准确可执行。触发词:视频提示词、视频生成提示词、AI视频创作、写视频提示词、导演指令、文生视频提示词、视频脚本、生成视频 --- # 视频生成提示词专家 > **核心定位**:用导演思维写 AI 视频提示词。AI 不是画家,是刚入行的摄影师——你给的是**可执行的摄影指令**,不是画面描述。 > > **表达风格**:专业但不学术,直接给结论。每个词都必须可执行。 > 核心执行流程详见 `references/core_workflow.md` --- ## 简介 用导演思维写 AI 视频提示词——将模糊的画面描述转化为 AI 可精确执行的摄影指令,写完直接生成 MP4 视频。 **核心价值** - 每个词都可执行,杜绝模糊表述,AI 准确还原画面构想 - 写完提示词一键出片,无需切换工具 - 内置 20+ 常见问题诊断能力,直接给出修复方案 **适用对象** - 🎬 **短视频创作者** — 专业提示词提升视频质量,减少反复试错 - 📱 **自媒体 / 内容运营** — 快速产出多场景视频素材 - 🎨 **创意工作者** — 将抽象创意转化为精确的生成指令 --- ## 功能特性 ### 核心功能 | 功能 | 说明 | |------|------| | 结构化提示词编写 | 按专业技术参数体系逐层构建提示词 | | 多模态参考语法 | 首帧锁定/风格参考/运镜参考/音频同步/主体锁定 | | 黄金公式校验 | 检查主体+动作+场景+风格+情绪五要素完整性 | | 常见问题诊断 | 人物不一致、运镜混乱、画面质量差等问题修复 | | 场景模板库 | 8个常见场景模板(自然风光、城市夜景、人物特写等) | | 一键生成视频 | 写完提示词直接生成 MP4 视频 | ### 特色亮点 - **提示词即摄影指令**:将抽象描述转化为 AI 可精确执行的指令,避免模糊表述 - **写+拍一体化**:完成提示词后可直接生成高清视频,无需切换工具 - **内置诊断能力**:遇到人物换脸、运镜混乱等问题时,可直接给出修复方案 --- ## 使用指南 ### 鉴权 > 使用本技能前,请确保已配置 API Key。 #### 获取 API Key 1. 访问 [红狐Hub 官网](https://redfox.hk/?source=github) 了解服务详情 2. 前往 [注册页面](https://redfox.hk/login?source=github) 注册账号 3. **新注册用户将获赠免费积分**,可立即开始使用 API 服务 4. 注册登录后,在个人中心获取 API Key,格式为 `ak_xxxxxxxx` #### 配置 API Key - `REDFOX_API_KEY` 从环境变量获取,格式 `ak_xxxxxxxx` - 若未设置,提示用户自行配置:`export REDFOX_API_KEY=<你的apikey>`;若用户不会配置,Agent 应主动帮用户设置: - **macOS/Linux**:将 `export REDFOX_API_KEY=<值>` 追加到 `~/.zshrc`(zsh)或 `~/.bashrc`(bash),然后 `source` 对应文件使其全局生效 - **Windows**:使用 `[Environment]::SetEnvironmentVariable("REDFOX_API_KEY", "<值>", "User")` 设置用户级永久环境变量(需重启终端生效) - 配置完成后应验证:`echo $REDFOX_API_KEY`(macOS/Linux)或 `echo %REDFOX_API_KEY%`(Windows),确保换一个 skill 也能读取到 ### 基础使用 直接用自然语言描述你想要的视频画面,技能会自动将其转化为专业级提示词。 > 用户:帮我写一个日落海滩的视频提示词,要电影感 > > 助手:会按技术参数、空间层次、光影设计、运动编排逐层构建提示词 ### 常用说法速查 | 意图 | 示例话术 | 效果 | |------|---------|------| | 新写提示词 | 「帮我写一个赛博朋克城市夜景的视频提示词」 | 按专业体系逐层构建完整提示词 | | 效果诊断 | 「生成的视频人物总是换脸,怎么办」 | 诊断问题并给出修复方案 | | 调用模板 | 「给我一个产品展示的提示词模板」 | 直接输出对应场景的可用模板 | | 生成视频 | 「用这个提示词生成视频,16:9,8秒」 | 直接生成视频 | --- ## 视频生成(一键出片) 写完提示词后可直接生成 MP4 视频,支持多种画幅比例和分辨率。 ### 支持能力 | 能力 | 说明 | |------|------| | 多种画幅 | 横屏、竖屏、正方形等多种比例可选 | | 多种分辨率 | 从标清到高清,按需选择 | | 灵活时长 | 支持 4-15 秒视频生成 | | 参考图支持 | 可上传参考图辅助生成 | ### 生成耗时 - 通常 3-15 分钟即可完成 - 分辨率越高、时长越长,资源消耗越大 --- ## 使用场景 | 场景 | 角色 | 示例问法 | 收益 | |------|------|---------|------| | 短视频创作 | 博主 / 编导 | 「帮我写一个日落海滩的电影感视频提示词」 | 专业级提示词,一次生成高质量视频 | | 产品广告 | 电商 / 品牌运营 | 「产品旋转展示的视频提示词,要高端感」 | 快速产出产品视频素材,降低拍摄成本 | | 内容批量产出 | 内容运营 / MCN | 「给我一套城市夜景和美食的提示词模板」 | 复用模板批量生成,提升内容产出效率 | | 效果问题排查 | 所有用户 | 「视频里人物总是变形,怎么解决」 | 精准诊断问题并给出可操作的修复方案 | --- ## 文件结构 ``` video-prompt-expert/ ├── SKILL.md # 主技能文件(本文档) ├── scripts/ │ └── videogen.py # 视频生成主程序 ├── references/ │ └── core_workflow.md # 核心执行流程 └── assets/ └── templates/ └── prompt_templates.json # 结构化模板数据 ```
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.