# VEO3 场景写作工具

基于 Gemini SDK 的 VEO3 场景写作对话工具，专门用于创建电影级的视频场景提示词。

## 功能特性

- 🎬 **专业场景写作**: 使用 VEO3 专业提示词
- 🤖 **智能对话**: 基于 Gemini AI 的对话式场景创建
- 📸 **图片分析**: 支持上传图片进行角色分析
- 🎥 **视频分析**: 支持视频文件分析和学习
- 📄 **多格式输出**: 支持文本、JSON、YAML 格式
- 🔄 **角色一致性**: 确保多个场景中角色特征保持一致

## 快速开始

### 基本使用

```rust
use veo3_scene_writer::Veo3SceneWriter;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut writer = Veo3SceneWriter::new().await?;
    let response = writer.send_message("你好，我想创建一个角色档案").await?;
    println!("回复: {}", response);
    Ok(())
}
```

### 带图片的使用

```rust
let response = writer.send_message_with_attachment(
    "请分析这张图片中的角色",
    "character.jpg"
).await?;
```

## 演示示例

### 1. 基本对话演示
```bash
cargo run --example simple_chat
```

### 2. 附件功能演示
```bash
cargo run --example attachment_demo
```

### 3. Daisy 角色演示
```bash
# 需要先将图片文件 01.png 放在当前目录
cargo run --example daisy_demo
```

## Daisy 演示说明

`daisy_demo` 演示展示了完整的 VEO3 工作流程：

1. **准备工作**: 将 `01.png` 图片文件放在 `cargos/veo3-scene-writer/` 目录下
2. **角色分析**: 基于图片为 "Daisy" 创建详细角色档案
3. **场景创建**: 创建多个不同风格的 8 秒电影场景
4. **格式输出**: 展示 JSON 格式的结构化输出

### 演示场景包括：
- 🍵 **咖啡厅阅读场景**: 温馨静谧的室内场景
- 🌳 **公园散步场景**: 自然光线的户外场景  
- 🌧️ **雨中奔跑场景**: 动感十足的动作场景

## 支持的文件格式

### 图片格式
- JPG/JPEG
- PNG
- GIF
- BMP
- WebP

### 视频格式
- MP4
- AVI
- MOV
- MKV
- WebM

## VEO3 工作流程

1. **Phase 1**: 角色档案导入
   - 定义角色的视觉特征
   - 设定角色的声音特征

2. **Phase 2**: 电影场景生成
   - 场景描述和角色动作
   - 摄影角度和运动
   - 灯光和氛围设置

3. **Phase 3**: 生成电影提示词
   - 输出 VEO3 优化的提示词
   - 支持多种格式输出

## 配置

SDK 会自动使用环境变量或默认配置。如需自定义配置：

```rust
let config = gemini_sdk::GeminiConfig {
    base_url: "your-api-url".to_string(),
    bearer_token: "your-token".to_string(),
    // ... 其他配置
};

let writer = Veo3SceneWriter::with_config(config).await?;
```

## 注意事项

- 确保有有效的 Gemini API 配置
- 图片和视频文件需要放在正确的路径
- 大文件上传可能需要较长时间

## 许可证

MIT License
