diff options
Diffstat (limited to '.claude/commands')
| -rw-r--r-- | .claude/commands/add-livehouse.md | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/.claude/commands/add-livehouse.md b/.claude/commands/add-livehouse.md new file mode 100644 index 0000000..5aff417 --- /dev/null +++ b/.claude/commands/add-livehouse.md @@ -0,0 +1,66 @@ +# add-livehouse + +新しいライブハウスのスクレイパーを追加するスキル。 + +## 使い方 + +``` +/add-livehouse <会場名> <URL> +``` + +例: +``` +/add-livehouse "渋谷 WWW X" "https://www-shibuya.jp/schedule/" +``` + +## 実行手順 + +以下の手順を順番に実行する。 + +### 1. スクレイパーファイルの作成 + +`$ARGUMENTS` から会場名とURLを取得して、`app/scrapers/<venue-id>.ts` を作成する。 + +- `venue-id` はURLや会場名から小文字ハイフン区切りで生成(例: `shibuya-www-x`) +- 既存スクレイパー(例: `app/scrapers/liquid-room.ts`)を参考にして同じ構造で作成 +- `VenueMeta` に `id`, `name`, `url`, `area` を設定 +- `scrape()` メソッドで対象URLのHTMLを fetch → cheerio でパース → `EventInput[]` を返す +- 最低限 `title`, `date`, `artist`, `start_time`, `open_time`, `ticket_url`, `price` を取得する +- 日付パース関数 `parseJapaneseDate` を実装(既存コードからコピー可) + +### 2. インデックスへの登録 + +`app/scrapers/index.ts` を編集して新しいスクレイパーを追加: + +```ts +import { scraper as <camelCaseName> } from "./<venue-id>"; + +export const ALL_SCRAPERS: Scraper[] = [ + // 既存エントリ... + <camelCaseName>, // ← 追加 +]; +``` + +### 3. 動作確認 + +```bash +# 開発サーバーを起動した状態で +curl "http://localhost:5173/api/scrape?venue_id=<venue-id>" +``` + +レスポンス例: +```json +{ "results": [{ "venue_id": "...", "events_saved": 12 }] } +``` + +### 4. Markdown ファイルの確認 + +スクレイプ成功後、`events/<venue-id>.md` が生成される。 +内容を確認して日付・出演者・料金が正しくパースされているか確認する。 + +## 注意事項 + +- `scrape()` 内で `fetch()` を使う(Node.js 標準 fetch で OK) +- HTML構造はサイトによって異なるので、実際のページを確認してセレクタを調整する +- サイトによってはJavaScriptレンダリングが必要な場合がある(その場合は公式RSSやAPIを探すこと) +- ファイル名は必ず `.ts`(サーバー専用コードだが `.server.ts` は不要) |
