メインコンテンツまでスキップ

YouTube 側削除の追従手順

1. 概要

本手順書は、YouTube 側で動画またはチャンネルが削除されたことを検知・通報された際に、subseek の検索インデックスからも該当コンテンツを除外する手順を定めたものである。

DMCA テイクダウン(著作権侵害通知)とは法的性格が異なる。両者の違いと判断基準は テイクダウン全体像 を参照。

対象者

  • subseek 管理者(admin ロールを持つユーザー)

対応する状況

  • YouTube 上で動画 URL を開くと 404 が返る
  • YouTube 上でチャンネルが削除されている
  • subseek の検索結果に出てくるが再生できない動画の通報

2. 検知経路

2.1 動画単位(自動検知)

動画詳細ページが閲覧された時点で oEmbed 経由で削除検知される。

  • 実装: apps/api/src/features/video/model/verify-video-metadata/verify-video-metadata.ts
  • トリガ: GET /api/videos/:videoId/subtitles(字幕ビューア表示時)に fire-and-forget で発火
  • 自動処理: videos.subtitle_status = "deleted" + Meilisearch 該当 videoId 字幕を全削除

→ 動画単位は通常自動で処理されるため、本手順書の対象外。ただし検索結果に出ているが一度も動画ページが閲覧されていない削除済み動画は自動検知されないため、通報があれば本手順で対応する。

2.2 チャンネル単位(手動対応必須)

fetchChannelDiff が YouTube API から ChannelNotFoundError を受けた場合、channels.updated_at を 24h ロックするだけで subtitle_status は更新しない。これは誤検知事故を防ぐための設計判断(Human-in-the-loop)。

  • 実装: apps/api/src/features/channel/model/fetch-channel-diff/fetch-channel-diff.ts
  • 検知後: { status: "skipped", reason: "not_found" } を返す(throw しない)
  • ログ: [triggerChannelDiffFetch] 構造化ログで event: channel_not_found として記録

admin は以下のいずれかの経路でチャンネル削除を知る:

  1. Contact フォームから通報: 「削除依頼」カテゴリで受信
  2. ログ監視: Workers ログで event: channel_not_found を定期的に grep

3. 対応手順

Step 1: 通報内容の検証

YouTube の動画 URL またはチャンネル URL をブラウザで開き、以下を確認する。

状況判断
404 Not Found が返る削除確定、Step 2 へ
「この動画は限定公開です / 非公開です」表示非公開化、Step 2 へ(削除扱い)
動画/チャンネルが表示される通報誤り、Step 4(返信)へ
地域制限で閲覧できない→ 別地域から確認、不明なら通報者に状況確認

Step 2: admin 画面からテイクダウン

管理画面 URL: /admin/dmcaadmin ロールのユーザーのみアクセス可能)

動画単位

  1. 「動画 ID」入力フォームに対象の Video ID を入力
  2. 「削除」ボタンをクリック

チャンネル単位

  1. 「チャンネル ID」入力フォームに対象の Channel ID を入力
  2. 「削除」ボタンをクリック

Step 3: 運用ログへの記録

DMCA 対応件数と分離集計するため、運用ログには以下を記録する:

  • 日付
  • 対象(動画 ID / チャンネル ID)
  • 削除理由: YouTube 側削除(DMCA ではないことを明示)
  • 通報元: Contact / ログ監視 / 自発検知
ヒント

運用ログのストレージは TBD。現状は admin が自前で記録する運用だが、将来的に takedown_logs テーブル等で自動化する余地がある。

Step 4: 通報者への返信(該当する場合)

Contact フォーム経由の通報には、対応完了の短い返信を送る。

削除完了(日本語テンプレ)

ご連絡ありがとうございます。
ご指摘いただいた動画/チャンネルは YouTube 側で削除されていることを確認し、
subseek の検索結果からも除外いたしました。
今後ともよろしくお願いいたします。

削除確定しない場合(日本語テンプレ)

ご連絡ありがとうございます。
ご指摘いただいた動画/チャンネルを確認しましたが、
現時点では YouTube 上で閲覧可能な状態のようです。
お手数ですが、具体的にどのような状況で再生できなかったかを
お知らせいただけますでしょうか。
注意

DMCA テイクダウン用のテンプレート(カウンター通知受付を含むもの)を誤って送らないこと。YouTube 側削除の通報は法的手続きではないため、簡易な確認返信で十分。


4. DMCA との違い(再掲)

詳細は テイクダウン全体像 を参照。重要なポイントのみ:

  • 法的義務なし: DMCA の「迅速な削除」義務は適用されない
  • 6 要素不要: Contact フォームの URL だけで十分
  • カウンター通知なし: 削除の取り消し受付は行わない(YouTube に実物がない)
  • 監査要件なし: セーフハーバー条項のための記録義務はない

5. 関連ドキュメント