---
name: add-animal-photo
description: 特定の動物個体に画像を追加する。ユーザーが「画像を追加」「写真を設定」「add photo」「add image」「画像を設定」と言ったとき、または動物名と画像ファイルパスを指定して画像を登録したいときに使用する。
disable-model-invocation: true
---

# 動物画像追加スキル

動物個体に画像を追加し、Cloud Storage へのアップロードと Firestore への反映を行う。

## 使い方

### 引数モード（1枚）

```
/add-animal-photo <動物名またはID> <画像ファイルパス> [撮影日時]
```

### 引数なし・対話モード（複数枚対応）

```
/add-animal-photo
```

引数が省略された場合、または `/add-animal-photo` のみで呼び出された場合は **対話モード** に入る。

## 対話モードの進め方

### ステップ 1: 動物を特定する

動物名またはIDを尋ねる:

```
どの動物に画像を追加しますか？（名前またはIDを入力してください）
```

入力が曖昧または一致しない場合は、`scripts/seed-data/animals-*.json` から候補を検索して提示する。

### ステップ 2: 画像ファイルを収集する

```
追加する画像ファイルのパスを入力してください。
複数ある場合は1枚ずつ入力し、終わったら「完了」と入力してください。

撮影日時は自動でEXIFから取得します。
手動で指定する場合は「パス 撮影日時」の形式で入力してください（例: ~/photo.jpg 2024-09-14T10:00:00.000Z）
```

ユーザーが「完了」または「done」と入力するまで画像を受け付ける。
収集した画像リストをその都度表示して確認を促す。

### ステップ 3: 確認

収集した内容を表示して確認を求める:

```
以下の内容でアップロードします:
  動物: <名前> (<ID>)
  画像:
    1. /path/to/image1.jpg（撮影日時: 自動取得）
    2. /path/to/image2.jpg（撮影日時: 2024-09-14）
    ...

よろしいですか？（y/n）
```

### ステップ 4: アップロード実行

確認後、画像を1枚ずつ順番に処理する:

```bash
GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS \
  npx ts-node scripts/add-animal-photo.ts <動物ID> <画像パス> [撮影日時]
```

各画像の処理完了後に進捗を報告する（例: `1/3 完了`）。

### ステップ 5: Firestore へのデータ投入

全画像のアップロード完了後、変更されたカテゴリを確認して seed を実行:

```bash
git diff --name-only scripts/seed-data/animals-*.json
```

```bash
GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS \
  npm run seed -- --category=<カテゴリID>
```

### ステップ 6: 完了報告

- 追加した動物名・ID
- アップロードされた画像数と各 URL（original/large/medium/thumbnail）
- 撮影日時（取得できた場合）
- 次のステップ（コミット・デプロイ）の案内

---

## 引数モードの進め方

`$ARGUMENTS` が指定されている場合はそのまま実行する。

### 前提条件の確認

```bash
echo $GOOGLE_APPLICATION_CREDENTIALS
```

`GOOGLE_APPLICATION_CREDENTIALS` が未設定の場合はユーザーに確認を求める。

### 実行

```bash
GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS \
  npx ts-node scripts/add-animal-photo.ts $ARGUMENTS
```

実行後、対話モードのステップ 5〜6 と同じ手順で Firestore 投入と完了報告を行う。

---

## エラー対処

| エラー | 対処 |
|--------|------|
| `Animal not found` | 動物名・IDを確認。`scripts/seed-data/animals-*.json` から正しい値を探す |
| `Image file not found` | ファイルパスを確認。`~` はフルパスに展開する |
| `GOOGLE_APPLICATION_CREDENTIALS not set` | 環境変数を設定するよう案内 |
| `Unsupported image format` | jpg/jpeg/png のみ対応 |
