summaryrefslogtreecommitdiff
path: root/.claude/skills/import-golive-events.md
blob: ec03452084323cb70c0fe54243ad1f1d4ed31ece (plain)
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
---
description: golive.yyamashita.com からイベント情報を取得し、出演バンドを whoisband に一括登録する
---

# goliveイベント出演者インポートスキル

golive の API からイベントを取得し、出演バンドをまとめて whoisband に登録する。

## 使い方

```
/import-golive-events
```

オプション引数:
- 日付範囲: `/import-golive-events 2026-05-14 2026-06-14`
- バンド名絞り込み: `/import-golive-events keyword=渋谷`

## 手順

### Step 1: golive APIからイベント取得

```bash
curl -s -H "X-Crawler-Access: f9a3c1e847b2d056" \
  "https://golive.yyamashita.com/api/events?limit=100&date_from=$(date +%Y-%m-%d)" \
  | python3 -c "
import json, sys, re

data = json.load(sys.stdin)
events = data['events']

# artistフィールドから出演者名を抽出(/ または , で区切り)
bands = set()
for e in events:
    artist = e.get('artist') or ''
    # スラッシュ・読点・コンマで分割
    parts = re.split(r'[//、,,]', artist)
    for p in parts:
        name = p.strip()
        if name:
            bands.add(name)

for b in sorted(bands):
    print(b)
"
```

引数で日付が指定されていれば `date_from` / `date_to` に使う。複数ページある場合は `offset` を増やして繰り返す。

### Step 2: 既登録バンドとの差分を計算

```bash
curl -s "https://whoisband.yyamashita.com/api/bands" \
  | python3 -c "import json,sys; [print(b['name']) for b in json.load(sys.stdin)]"
```

Step1 で得たバンド名リストと照合し、**未登録のバンドのみ**を対象リストとする。

### Step 3: 各バンドを順番に登録

対象リストの各バンドについて `/register-band` スキルを実行する:

- 1バンドずつ順番に処理する(並行実行しない)
- 登録成功・スキップ・エラーを記録していく
- エラーが出ても次のバンドへ進む(中断しない)

### Step 4: 登録結果サマリを表示

```
=== goliveイベント出演者 登録完了 ===
取得イベント数: XX件
抽出バンド数:   XX件
登録済みスキップ: XX件
新規登録:       XX件
エラー:         XX件

新規登録バンド:
  - バンド名 → https://whoisband.yyamashita.com/bands/of/{id}
  - ...

エラー:
  - バンド名: エラー内容
```

## 注意事項

- `artist` フィールドが null のイベントはスキップする
- バンド名が1文字以下、または明らかにバンド名でない文字列(「他」「ゲスト」「TBA」など)はスキップする
- 同一バンドが複数イベントに出演していても重複登録しない(Step2で除外)
- ページネーション: golive APIは1回最大100件。イベント数が多い場合は `offset=100`, `offset=200` で繰り返す