このプロジェクトについて

Already Watchedは、YouTubeフィードにおける重複を減らすためのローカルファーストなChrome拡張機能です。ホーム、サイドバー/おすすめ、検索、登録チャンネル、関連グリッド、およびサポートされているShortsレイアウト全体でビデオカードを検出します。再生時間は実際のユニークなセグメントから追跡され、シークや同一セグメントの再再生で進捗が水増しされることはありません。観測されたセグメントが設定可能なしきい値に達すると、ビデオは視聴済みとしてマークされます。デフォルトの表示モードは、70%視聴時に「バッジ + 減光」となり、視聴済みのカードは引き続きクリック可能で、ホバーまたはキーボードフォーカス時に復元されます。オプションには、視聴済みカードの完全な非表示、まばらになったフィードの任意での補充、Playablesおよびトピック提案セクションの非表示、ホーム上のShortsシェルフ/カードの非表示、およびプレイリストやMixコレクションカードの非表示が含まれます。Playables/トピックおよびプレイリスト/Mixのフィルターは可逆的で、表示モードと併用でき、スコープが限定されているため、プレイリスト内の個別のビデオや通常のビデオURLは引き続き利用可能です。 手動コントロールには、視聴済みまたは未視聴にマークするためのサムネイルボタン、ビデオリンクまたは現在の視聴ページに対するChromeコンテキストメニューコマンド、およびYouTubeネイティブの3点リーダービデオメニュー内のアクションが含まれます。スキャンコマンドは、スクロール、アカウント履歴の取得、またはYouTube APIの使用を行うことなく、アクティブなタブに現在レンダリングされているカードから適格なプログレスバーをインポートします。統計では、保存された視聴済みレコード、総マーク数、本日のフィルタ数、および全期間のフィルタ数が区別され、重複カード、再レンダリング、SPAナビゲーション、および繰り返されるオブザーバーイベントは重複排除されます。履歴の消去により、ビデオレコード、部分的な再生、オーバーライド、および統計が削除されますが、設定は保持されます。 この拡張機能はManifest V3として構築されており、storage、contextMenus、およびyoutube.comへのホストアクセスに対するスコープ付き権限を持っています。設定、ビデオごとのレコード、統計、および履歴リビジョンデータにはchrome.storage.localを使用し、履歴の消去には一時的にchrome.storage.sessionを使用します。READMEには、分析なし、バックエンドなし、YouTube APIなし、Googleアカウントアクセスなし、閲覧履歴やクッキーの権限なし、およびChrome同期なしであることが記載されています。コンテンツスクリプトはChromeの隔離されたワールドで実行され、Reactはポップアップ/オプションUI用にのみバンドルされています。すべてのスクリプト、スタイル、アイコンはローカルで提供され、CDNやランタイムコードのダウンロードはありません。 開発にはNode.js 20.19+(Node 22 LTS推奨)、npm、およびChrome 114+が必要です。npm ciおよびnpm run checkにより、ロード可能な拡張機能がdist/にビルドされます。READMEには、ユニットテスト、DOM、ストレージの同時実行、プレイヤーの回帰テスト、型チェック、ビルド、dev watch、およびローカルプレビューサーバーのテストが記載されています。既知の制限事項には、YouTubeのレイアウト実験、v1スコープ外のモバイルおよび埋め込みプレイヤー、保守的な広告/ライブ判定、観測されない再生ギャップの可能性、およびYouTubeがサポートされている継続を提供しない場合のベストエフォートでの補充が含まれます。本プロジェクトはMITライセンスです。