# add-livehouse 新しいライブハウスのスクレイパーを追加するスキル。 ## 使い方 ``` /add-livehouse <会場名> ``` 例: ``` /add-livehouse "渋谷 WWW X" "https://www-shibuya.jp/schedule/" ``` ## 実行手順 以下の手順を順番に実行する。 ### 1. スクレイパーファイルの作成 `$ARGUMENTS` から会場名とURLを取得して、`app/scrapers/.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 } from "./"; export const ALL_SCRAPERS: Scraper[] = [ // 既存エントリ... , // ← 追加 ]; ``` ### 3. 動作確認 ```bash # 開発サーバーを起動した状態で curl "http://localhost:5173/api/scrape?venue_id=" ``` レスポンス例: ```json { "results": [{ "venue_id": "...", "events_saved": 12 }] } ``` ### 4. Markdown ファイルの確認 スクレイプ成功後、`events/.md` が生成される。 内容を確認して日付・出演者・料金が正しくパースされているか確認する。 ## 注意事項 - `scrape()` 内で `fetch()` を使う(Node.js 標準 fetch で OK) - HTML構造はサイトによって異なるので、実際のページを確認してセレクタを調整する - サイトによってはJavaScriptレンダリングが必要な場合がある(その場合は公式RSSやAPIを探すこと) - ファイル名は必ず `.ts`(サーバー専用コードだが `.server.ts` は不要)