Files
huobao-drama/README-JA.md
2026-01-20 10:03:31 +08:00

578 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎬 Huobao Drama - AI ショートドラマ制作プラットフォーム
<div align="center">
**Go + Vue3 ベースのフルスタック AI ショートドラマ自動化プラットフォーム**
[![Go Version](https://img.shields.io/badge/Go-1.23+-00ADD8?style=flat&logo=go)](https://golang.org)
[![Vue Version](https://img.shields.io/badge/Vue-3.x-4FC08D?style=flat&logo=vue.js)](https://vuejs.org)
[![License](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/)
[機能](#機能) • [クイックスタート](#クイックスタート) • [デプロイ](#デプロイ)
[简体中文](README-CN.md) | [English](README.md) | [日本語](README-JA.md)
</div>
---
## 📖 概要
Huobao Drama は、脚本生成、キャラクターデザイン、絵コンテ作成から動画合成までの全ワークフローを自動化する AI 駆動のショートドラマ制作プラットフォームです。
### 🎯 主要機能
- **🤖 AI 駆動**: 大規模言語モデルを使用して脚本を解析し、キャラクター、シーン、絵コンテ情報を抽出
- **🎨 インテリジェント創作**: AI によるキャラクターポートレートとシーン背景の生成
- **📹 動画生成**: テキストから動画、画像から動画モデルによる絵コンテ動画の自動生成
- **🔄 完全なワークフロー**: アイデアから完成動画までのエンドツーエンド制作ワークフロー
### 🛠️ 技術アーキテクチャ
**DDDドメイン駆動設計** に基づく明確なレイヤー構造:
```
├── APIレイヤー (Gin HTTP)
├── アプリケーションサービスレイヤー (ビジネスロジック)
├── ドメインレイヤー (ドメインモデル)
└── インフラストラクチャレイヤー (データベース、外部サービス)
```
### 🎥 デモ動画
AI ショートドラマ生成を体験:
<div align="center">
**サンプル作品 1**
<video src="https://ffile.chatfire.site/cf/public/20260114094337396.mp4" controls width="640"></video>
**サンプル作品 2**
<video src="https://ffile.chatfire.site/cf/public/fcede75e8aeafe22031dbf78f86285b8.mp4" controls width="640"></video>
[動画 1 を見る](https://ffile.chatfire.site/cf/public/20260114094337396.mp4) | [動画 2 を見る](https://ffile.chatfire.site/cf/public/fcede75e8aeafe22031dbf78f86285b8.mp4)
</div>
---
## ✨ 機能
### 🎭 キャラクター管理
- ✅ AI 生成キャラクターポートレート
- ✅ バッチキャラクター生成
- ✅ キャラクター画像のアップロードと管理
### 🎬 絵コンテ制作
- ✅ 自動絵コンテスクリプト生成
- ✅ シーン説明とショットデザイン
- ✅ 絵コンテ画像生成(テキストから画像)
- ✅ フレームタイプ選択(先頭フレーム/キーフレーム/末尾フレーム/パネル)
### 🎥 動画生成
- ✅ 画像から動画の自動生成
- ✅ 動画合成と編集
- ✅ トランジション効果
### 📦 アセット管理
- ✅ 統合アセットライブラリ管理
- ✅ ローカルストレージサポート
- ✅ アセットのインポート/エクスポート
- ✅ タスク進捗トラッキング
---
## 🚀 クイックスタート
### 📋 前提条件
| ソフトウェア | バージョン | 説明 |
| ------------ | ---------- | ------------------------ |
| **Go** | 1.23+ | バックエンドランタイム |
| **Node.js** | 18+ | フロントエンドビルド環境 |
| **npm** | 9+ | パッケージマネージャー |
| **FFmpeg** | 4.0+ | 動画処理(**必須** |
| **SQLite** | 3.x | データベース(内蔵) |
#### FFmpeg のインストール
**macOS:**
```bash
brew install ffmpeg
```
**Ubuntu/Debian:**
```bash
sudo apt update
sudo apt install ffmpeg
```
**Windows:**
[FFmpeg 公式サイト](https://ffmpeg.org/download.html)からダウンロードし、環境変数を設定
インストール確認:
```bash
ffmpeg -version
```
### ⚙️ 設定
設定ファイルをコピーして編集:
```bash
cp configs/config.example.yaml configs/config.yaml
vim configs/config.yaml
```
設定ファイル形式(`configs/config.yaml`
```yaml
app:
name: "Huobao Drama API"
version: "1.0.0"
debug: true # 開発環境ではtrue、本番環境ではfalseに設定
server:
port: 5678
host: "0.0.0.0"
cors_origins:
- "http://localhost:3012"
read_timeout: 600
write_timeout: 600
database:
type: "sqlite"
path: "./data/drama_generator.db"
max_idle: 10
max_open: 100
storage:
type: "local"
local_path: "./data/storage"
base_url: "http://localhost:5678/static"
ai:
default_text_provider: "openai"
default_image_provider: "openai"
default_video_provider: "doubao"
```
**主要設定項目:**
- `app.debug`: デバッグモードスイッチ(開発環境では true を推奨)
- `server.port`: サービスポート
- `server.cors_origins`: フロントエンドの許可 CORS オリジン
- `database.path`: SQLite データベースファイルパス
- `storage.local_path`: ローカルファイルストレージパス
- `storage.base_url`: 静的リソースアクセス URL
- `ai.default_*_provider`: AI サービスプロバイダー設定API キーは Web UI で設定)
### 📥 インストール
```bash
# プロジェクトをクローン
git clone https://github.com/chatfire-AI/huobao-drama.git
cd huobao-drama
# Go依存関係をインストール
go mod download
# フロントエンド依存関係をインストール
cd web
npm install
cd ..
```
### 🎯 プロジェクトの起動
#### 方法 1: 開発モード(推奨)
**フロントエンドとバックエンドを分離、ホットリロード対応**
```bash
# ターミナル1: バックエンドサービスを起動
go run main.go
# ターミナル2: フロントエンド開発サーバーを起動
cd web
npm run dev
```
- フロントエンド: `http://localhost:3012`
- バックエンド API: `http://localhost:5678/api/v1`
- フロントエンドは API リクエストを自動的にバックエンドにプロキシ
#### 方法 2: シングルサービスモード
**バックエンドが API とフロントエンド静的ファイルの両方を提供**
```bash
# 1. フロントエンドをビルド
cd web
npm run build
cd ..
# 2. サービスを起動
go run main.go
```
アクセス: `http://localhost:5678`
### 🗄️ データベース初期化
データベーステーブルは初回起動時に自動作成されますGORM AutoMigrate を使用)。手動マイグレーションは不要です。
---
## 📦 デプロイ
### 🐳 Docker デプロイ(推奨)
#### 方法 1: Docker Compose推奨
```bash
# サービスを起動
docker-compose up -d
# ログを表示
docker-compose logs -f
# サービスを停止
docker-compose down
```
#### 方法 2: Docker コマンド
> **注意**: Linux ユーザーはホストサービスにアクセスするために `--add-host=host.docker.internal:host-gateway` を追加する必要があります
```bash
# Docker Hubから実行
docker run -d \
--name huobao-drama \
-p 5678:5678 \
-v $(pwd)/data:/app/data \
--restart unless-stopped \
huobao/huobao-drama:latest
# ログを表示
docker logs -f huobao-drama
```
**ローカルビルド**(オプション):
```bash
docker build -t huobao-drama:latest .
docker run -d --name huobao-drama -p 5678:5678 -v $(pwd)/data:/app/data huobao-drama:latest
```
**Docker デプロイの利点:**
- ✅ デフォルト設定ですぐに使用可能
- ✅ 環境の一貫性、依存関係の問題を回避
- ✅ ワンクリック起動、Go、Node.js、FFmpeg のインストール不要
- ✅ 移行とスケーリングが容易
- ✅ 自動ヘルスチェックと再起動
- ✅ ファイル権限の自動処理
#### 🔗 ホストサービスへのアクセスOllama/ローカルモデル)
コンテナは `http://host.docker.internal:ポート番号` を使用してホストサービスにアクセスするよう設定されています。
**設定手順:**
1. **ホストでサービスを起動(全インターフェースでリッスン)**
```bash
export OLLAMA_HOST=0.0.0.0:11434 && ollama serve
```
2. **フロントエンド AI サービス設定**
- Base URL: `http://host.docker.internal:11434/v1`
- Provider: `openai`
- Model: `qwen2.5:latest`
---
### 🏭 従来のデプロイ方法
#### 1. ビルド
```bash
# 1. フロントエンドをビルド
cd web
npm run build
cd ..
# 2. バックエンドをコンパイル
go build -o huobao-drama .
```
生成ファイル:
- `huobao-drama` - バックエンド実行ファイル
- `web/dist/` - フロントエンド静的ファイル(バックエンドに埋め込み)
#### 2. デプロイファイルの準備
サーバーにアップロードするファイル:
```
huobao-drama # バックエンド実行ファイル
configs/config.yaml # 設定ファイル
data/ # データディレクトリ(オプション、初回実行時に自動作成)
```
#### 3. サーバー設定
```bash
# ファイルをサーバーにアップロード
scp huobao-drama user@server:/opt/huobao-drama/
scp configs/config.yaml user@server:/opt/huobao-drama/configs/
# サーバーにSSH接続
ssh user@server
# 設定ファイルを編集
cd /opt/huobao-drama
vim configs/config.yaml
# modeをproductionに設定
# ドメインとストレージパスを設定
# データディレクトリを作成し権限を設定(重要!)
# 注意: YOUR_USERを実際にサービスを実行するユーザー名に置き換え例: www-data、ubuntu、deploy
sudo mkdir -p /opt/huobao-drama/data/storage
sudo chown -R YOUR_USER:YOUR_USER /opt/huobao-drama/data
sudo chmod -R 755 /opt/huobao-drama/data
# 実行権限を付与
chmod +x huobao-drama
# サービスを起動
./huobao-drama
```
#### 4. systemd でサービス管理
サービスファイル `/etc/systemd/system/huobao-drama.service` を作成:
```ini
[Unit]
Description=Huobao Drama Service
After=network.target
[Service]
Type=simple
User=YOUR_USER
WorkingDirectory=/opt/huobao-drama
ExecStart=/opt/huobao-drama/huobao-drama
Restart=on-failure
RestartSec=10
# 環境変数(オプション)
# Environment="GIN_MODE=release"
[Install]
WantedBy=multi-user.target
```
サービスを起動:
```bash
sudo systemctl daemon-reload
sudo systemctl enable huobao-drama
sudo systemctl start huobao-drama
sudo systemctl status huobao-drama
```
**⚠️ よくある問題: SQLite 書き込み権限エラー**
`attempt to write a readonly database` エラーが発生した場合:
```bash
# 1. サービスを実行中のユーザーを確認
sudo systemctl status huobao-drama | grep "Main PID"
ps aux | grep huobao-drama
# 2. 権限を修正YOUR_USERを実際のユーザー名に置き換え
sudo chown -R YOUR_USER:YOUR_USER /opt/huobao-drama/data
sudo chmod -R 755 /opt/huobao-drama/data
# 3. 権限を確認
ls -la /opt/huobao-drama/data
# サービスを実行するユーザーが所有者として表示されるはず
# 4. サービスを再起動
sudo systemctl restart huobao-drama
```
**原因:**
- SQLite はデータベースファイル**と**そのディレクトリの両方に書き込み権限が必要
- ディレクトリ内に一時ファイル(例: `-wal`、`-journal`)を作成する必要がある
- **重要**: systemd の`User`がデータディレクトリの所有者と一致していることを確認
**一般的なユーザー名:**
- Ubuntu/Debian: `www-data`、`ubuntu`
- CentOS/RHEL: `nginx`、`apache`
- カスタムデプロイ: `deploy`、`app`、現在ログインしているユーザー
#### 5. Nginx リバースプロキシ
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:5678;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# 静的ファイルへの直接アクセス
location /static/ {
alias /opt/huobao-drama/data/storage/;
}
}
```
---
## 🎨 技術スタック
### バックエンド
- **言語**: Go 1.23+
- **Web フレームワーク**: Gin 1.9+
- **ORM**: GORM
- **データベース**: SQLite
- **ログ**: Zap
- **動画処理**: FFmpeg
- **AI サービス**: OpenAI、Gemini、Doubao など
### フロントエンド
- **フレームワーク**: Vue 3.4+
- **言語**: TypeScript 5+
- **ビルドツール**: Vite 5
- **UI コンポーネント**: Element Plus
- **CSS フレームワーク**: TailwindCSS
- **状態管理**: Pinia
- **ルーター**: Vue Router 4
### 開発ツール
- **パッケージ管理**: Go Modules、npm
- **コード規約**: ESLint、Prettier
- **バージョン管理**: Git
---
## 📝 よくある質問
### Q: Docker コンテナからホストの Ollama にアクセスするには?
A: Base URL として `http://host.docker.internal:11434/v1` を使用します。注意点:
1. ホストの Ollama は `0.0.0.0` でリッスンする必要があります: `export OLLAMA_HOST=0.0.0.0:11434 && ollama serve`
2. `docker run` を使用する Linux ユーザーは追加が必要: `--add-host=host.docker.internal:host-gateway`
詳細: [DOCKER_HOST_ACCESS.md](docs/DOCKER_HOST_ACCESS.md)
### Q: FFmpeg がインストールされていない、または見つからない?
A: FFmpeg がインストールされ、PATH 環境変数に含まれていることを確認してください。`ffmpeg -version` で確認。
### Q: フロントエンドがバックエンド API に接続できない?
A: バックエンドが実行中で、ポートが正しいか確認してください。開発モードでは、フロントエンドプロキシ設定は `web/vite.config.ts` にあります。
### Q: データベーステーブルが作成されない?
A: GORM は初回起動時にテーブルを自動作成します。ログでマイグレーション成功を確認してください。
---
## 📋 更新履歴
### v1.0.2 (2026-01-16)
#### 🚀 主要アップデート
- 純粋な Go SQLite ドライバー(`modernc.org/sqlite`)、`CGO_ENABLED=0` クロスプラットフォームコンパイルをサポート
- 並行性能を最適化WAL モード)、"database is locked" エラーを解決
- ホストサービスへのアクセス用 `host.docker.internal` の Docker クロスプラットフォームサポート
- ドキュメントとデプロイガイドの簡素化
### v1.0.1 (2026-01-14)
#### 🐛 バグ修正 / 🔧 改善
- 動画生成 API レスポンスのパース問題を修正
- OpenAI Sora 動画エンドポイント設定を追加
- エラー処理とログ出力を最適化
---
## 🤝 コントリビューション
Issue と Pull Request を歓迎します!
1. このプロジェクトをフォーク
2. フィーチャーブランチを作成 (`git checkout -b feature/AmazingFeature`)
3. 変更をコミット (`git commit -m 'Add some AmazingFeature'`)
4. ブランチにプッシュ (`git push origin feature/AmazingFeature`)
5. Pull Request を作成
---
## API 設定サイト
2 分で設定完了: [API 集約サイト](https://api.chatfire.site/models)
---
## 👨‍💻 私たちについて
**AI 火宝 - AI スタジオ起業中**
- 🏠 **所在地**: 中国南京
- 🚀 **ステータス**: 起業中
- 📧 **Email**: [18550175439@163.com](mailto:18550175439@163.com)
- 💬 **WeChat**: dangbao1117 (個人 WeChat - 技術的な質問には対応しません)
- 🐙 **GitHub**: [https://github.com/chatfire-AI/huobao-drama](https://github.com/chatfire-AI/huobao-drama)
> _「AI に私たちのより創造的なことを手伝ってもらおう」_
## コミュニティグループ
![コミュニティグループ](drama.png)
- [Issue](../../issues)を提出
- プロジェクトメンテナにメール
---
<div align="center">
**⭐ このプロジェクトが役に立ったら、Star をお願いします!**
## Star 履歴
[![Star History Chart](https://api.star-history.com/svg?repos=chatfire-AI/huobao-drama&type=date&legend=top-left)](https://www.star-history.com/#chatfire-AI/huobao-drama&type=date&legend=top-left)
Made with ❤️ by Huobao Team
</div>