DAM カラオケ検索(clubdam)の挙動と制約

一言まとめ

clubdam のキーワード検索はスペース区切り AND・語順不問・先頭 5 語のみ評価。アポストロフィは除去しない。サーバからの fetch は User-Agent 必須(無いと 503)、CORS は閉じている。会員規約 第10条が自動取得を禁じる。

作成 · 更新 · #karaoke#dam#search#scraping
目次 8 sections
  1. 01 検索クエリの挙動
  2. 02 段階的削除は「狭い方から」
  3. 03 アポストロフィは除去しない
  4. 04 サーバからの fetch は User-Agent 必須
  5. 05 CORS は閉じている
  6. 06 規約上の制約
  7. 07 関連
  8. 08 更新履歴

調査時点: 2026-09。公開プロジェクト damjump(YouTube の共有から DAM の検索ページへ飛ばす PWA)の実装で実測したもの。

検索クエリの挙動#

挙動内容
区切りスペース区切りの AND。全角スペースでも効く。語順は問わない
横断AND は曲名・歌手名を横断する(粉雪 レミオロメン → 4 件)
記号~ ・ などは区切りとして扱われる
語数先頭 5 語だけを見る。6 語目以降は黙って捨てられ、エラーも警告も出ない
曲名単体広すぎる(粉雪 → 100 件、歌詞ヒット混入)。アーティスト名を必ず付ける
バリエーション[生音] [プロオケ] などの角括弧プレフィックス。無印が第一候補

5 語制限は、カバー動画のタイトルのように末尾に余計な語が付く入力では有利に働く(6 語目以降のカバー主が自動的に無視される)。短いタイトルの場合はカバー主が 5 語以内に入って 0 件になるので、段階的にトークンを削る実装が要る。

段階的削除は「狭い方から」#

AND 検索はトークンが増えるほど絞れる。広いクエリから試すと 1 段目で 100 件返って「当たった」と誤判定するので、候補は狭い順(全文+チャンネル名 → 全文 → 末尾の断片を 1 つずつ落とす → 断片単体 → チャンネル名)に並べ、0 < 件数 <= 閾値 が出た段で止める。実装側でもクエリを 5 語に切ってから重複を落とすと、見た目が違うだけで同一のクエリを二度投げずに済む。

アポストロフィは除去しない#

「アポストロフィ以降が切り捨てられる」という挙動は検索フォーム / URL パラメータ側のもので、検索処理そのものには無い。除去するとむしろ悪化する。

クエリ件数先頭
SOUL'd OUT102ウェカピポ / SOUL’d OUT
SOULd OUT(' を除去)3BoA w/z SOUL’d OUT の曲(別物)
ウェカピポ SOUL'd OUT3ウェカピポ / SOUL’d OUT
ウェカピポ SOULd OUT0—

サーバからの fetch は User-Agent 必須#

clubdam は User-Agent ヘッダの無いリクエストに 503(メンテナンス用の静的 HTML)を返す。Cloudflare Workers の fetch は既定で User-Agent を付けないため、「ローカルの curl は通るのに Worker からは 503」という形で踏む。UA の中身は問われないので、ブラウザを騙らず素性を名乗る文字列(<app>/<version> (+<URL>))を明示的に載せる。

CORS は閉じている#

OPTIONS(プリフライト)に 503 が返り、POST に Origin を付けても access-control-allow-origin は返らない。Content-Type: application/json の POST はプリフライトが要るため、ブラウザから直接は叩けない。サーバ経由なら通る。

規約上の制約#

robots.txt は検索系パスを禁止していないが、利用規約(会員規約)第10条の禁止行為に次の条文がある。

  • 2 項: コンテンツ・メタデータ等を解析、抽出、保存、複製、再配布、再送信する行為
  • 3 項: BOT、クローラー、スクレイピング等、自動化された手段によるアクセス
  • 4 項: サービスの通信仕様・内部データ等を解析、リバースエンジニアリングする行為

適用範囲は会員(第5条)。DAM★とも に登録していれば掛かる。「認証用の値がブラウザに配られている」ことと「使ってよい」ことは別で、内部 API を自動で叩いて曲名・選曲番号を抽出する導線は個人利用でも 2 項・3 項の文言に当たる。一方、利用者のブラウザで検索ページを開くだけの導線は通常の閲覧で、どの項にも当たらない。damjump が検索ページへ遷移する方式を採ったのはこの差による。

関連#

更新履歴#

  • 2026-09-12: 初版(ローカル調査ノート)
  • 2026-10-17: Wiki へ移植、概念ページとして再構成

同じトピック — Web