1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
---
description: バンド名を受け取り、公式SNSから説明文・メンバー情報を取得して whoisband.yyamashita.com の本番APIを更新する
---
# バンド情報最新化スキル
本番API(`https://whoisband.yyamashita.com`)の既存バンド情報を SNS プロフィールから最新化する。
## 使い方
```
/update-band-info BAND_NAME
```
例: `/update-band-info 東京事変`
---
## 手順
### Step 1: バンドを特定する
```bash
curl -s "https://whoisband.yyamashita.com/api/bands" | python3 -c "
import json, sys
data = json.load(sys.stdin)
name = '$ARGUMENTS'.strip()
matches = [b for b in data if name.lower() in b['name'].lower() or name.lower() in b['slug'].lower()]
print(json.dumps(matches, ensure_ascii=False, indent=2))
"
```
- 一致なし → ユーザーに「登録されていません。`/register-band` で登録してください」と伝えて終了
- 複数一致 → 候補を列挙してユーザーに選択を求める
- 1件一致 → UUID を控えて次へ
### Step 2: バンドの現在データを取得する
```bash
curl -s "https://whoisband.yyamashita.com/api/bands/{uuid}"
```
レスポンスから以下を確認:
- `links`: 既存の SNS リンク一覧(URL と label)
- `members`: 既存メンバー一覧(`artist_id`, `artist_name`)
- `description`: 現在の説明文
### Step 3: SNS プロフィールを取得する
既存リンクの中から SNS アカウントを優先順位順に処理する:
**優先順位**: X (twitter.com/x.com) → Instagram → その他
SNS リンクが存在しない場合は WebSearch で探す:
- `{バンド名} x.com site:x.com`
- `{バンド名} instagram.com`
各 SNS について WebFetch でプロフィールページを取得し、以下を抽出:
| 取得対象 | 内容 |
|---|---|
| **説明文** | アカウントの bio / 自己紹介文 |
| **フォロワー数・投稿数** | 活動の活発さの目安(参考情報) |
| **メンバー名** | bio や固定投稿に名前が書いてある場合 |
| **新規 SNS リンク** | 他 SNS へのリンクが bio に記載されていれば収集 |
### Step 4: 説明文を作成する
収集したバイオから日本語の説明文を生成する:
- 200文字以内
- 箇条書きではなく文章形式
- 「〜のバンド」「〜を拠点に活動」など簡潔に
- 英語バイオの場合は日本語に意訳する(直訳不要)
- 既存の `description` が十分な情報量なら上書きしない判断も可
### Step 5: メンバーを照合・登録する
メンバー情報が SNS から読み取れた場合:
**5-1. 既存アーティストとの照合**
```bash
curl -s "https://whoisband.yyamashita.com/api/artists"
```
照合ルール(以下の順に判定):
1. **SNS URL が一致** → 同一アーティストと断定
- 既存アーティストのリンク一覧と比較
- `curl -s "https://whoisband.yyamashita.com/api/artists/{uuid}"` で各アーティストのリンクを確認
2. **名前が完全一致** → 同一アーティストと断定
3. **名前が部分一致または表記ゆれ** → スキップ(あいまいな場合は追加しない)
4. **一致なし** → 新規アーティストとして登録
**5-2. 新規アーティストの登録**
```bash
curl -s -X POST "https://whoisband.yyamashita.com/api/artists" \
-H "Content-Type: application/json" \
-d '{
"name": "メンバー名",
"links": [
{ "label": "x", "url": "https://x.com/..." }
],
"message": "SNS情報から自動登録"
}'
```
レスポンスの `id` (UUID) を控える。
**5-3. メンバーの担当パートを特定する**
bio / 固定投稿 / プロフィール情報からパートを読み取る。
明記されていない場合は `"Other"` を使う。
使えるロール: `Vocal`, `Guitar`, `Bass`, `Drums`, `Keyboard`, `DJ`, `Strings`, `Brass`, `Percussion`, `Programming`, `Manipulator`, `Turntable`, `Other`
### Step 6: バンドを更新する
```bash
curl -s -X PATCH "https://whoisband.yyamashita.com/api/bands/{uuid}" \
-H "Content-Type: application/json" \
-d '{
"description": "SNSから取得した説明文",
"append_links": true,
"links": [
{ "label": "x", "url": "https://x.com/bandaccount" },
{ "label": "instagram", "url": "https://www.instagram.com/bandaccount/" }
],
"append_members": true,
"members": [
{ "artist_id": "uuid-of-member", "role": "Vocal", "since": "", "until": "", "note": "" }
],
"message": "SNS情報から自動更新"
}'
```
- `append_links: true` → 既存リンクに追記(重複 URL は自動スキップ)
- `append_members: true` → 既存メンバーに追記(既存の artist_id は自動スキップ)
- 説明文のみ更新したい場合は `links: []`, `members: []` にする
### Step 7: 結果を報告する
```
更新完了: バンド名
→ https://whoisband.yyamashita.com/bands/of/{uuid}
更新内容:
- 説明文: 「...」
- 追加リンク: x.com/... など
- 追加メンバー: 名前(担当)× N 名
```
---
## 注意事項
- SNS が非公開 / 存在しない場合はその旨を伝えてスキップ
- description が取得できなかった場合は description の更新をスキップ(空文字で上書きしない)
- メンバーが全員既存登録済みの場合は `members: []` で送信(重複しない)
- X(Twitter) のプロフィール取得は `https://x.com/{handle}` ではなくWebSearchの結果から取得することが多い
- Instagram は `https://www.instagram.com/{handle}/` でWebFetch可能
|