← 一覧に戻る

daily-loop-movies

GitHub ↗ JavaScript 最終push: 2026/5/31 19:01

WIP(現在進行中)

Work In Progress

このプロジェクトで現在進行中の作業と、過去のスナップショットを記録する。

現在の状況

(ここは毎回上書きされる。「今どこまで進んだか」「次に何をするか」「詰まっていること」を簡潔に)


過去のWIPアーカイブ

(新しい「現在の状況」を書く前に、古いものをここに追記でアーカイブする。新しいものが上)

ROADMAP(計画)

ロードマップ

今週

(今週中にやりたいこと)

今月

(今月中にやりたいこと)

今四半期

(今四半期の目標)

いつか

(いつかやりたいこと・アイデアストック)

DECISIONS(意思決定)

意思決定記録

このプロジェクトで下した重要な意思決定を記録する。 最新が上に来る。


DEVLOG(作業ログ)

開発日誌

このプロジェクトでの作業を時系列で記録する。 最新のエントリが上に来る。


2026-05-31

YouTube新着一覧風サイトを実装し dailyloop.ikapps.com で公開

やったこと:

  • 静的サイトを実装(ビルド不要)。index.html / assets/style.css / assets/app.js / data/videos.json
  • app.jsdata/videos.json を fetch → addedAt 降順(新着順)でカード描画。ダークテーマのYouTube風グリッド
  • YouTube URL(watch / youtu.be / shorts / embed / live)はID抽出してサムネ(i.ytimg.com)自動表示+クリックでライトボックス埋め込み再生(youtube-nocookie)。それ以外はサムネURL手動指定・別タブ遷移
  • 動画追加は data/videos.json に1件足すだけ。push すれば数分でサイト反映

デプロイ(intelligence-bank と同じ cron git pull 自動同期方式):

  • Route53(zone Z2L6Y2X95BT05D)に dailyloop.ikapps.com A レコード → 13.230.63.19
  • サーバーに deploy key ~/.ssh/id_ed25519_daily_loop を生成、GitHubリポジトリに read-only deploy key として登録
  • /var/www/daily-loop-movies にクローン(owner ubuntu:www-data
  • nginx vhost /etc/nginx/sites-available/dailyloop.ikapps.com(ib.ikapps.com を雛形に)
  • certbot で SSL 取得・HTTP→HTTPS リダイレクト有効化
  • /usr/local/bin/daily-loop-pull.sh + ubuntu crontab に */5 で自動 pull(ログ /var/log/daily-loop-pull.log

ハマり:

  • sudo git clone だと GIT_SSH_COMMAND が引き継がれず deploy key が使われない → ubuntu ユーザーでクローンしてから /var/www へ mv する手順に変更

次回やること:

  • You から動画URLを受け取ったら、タイトル等を埋めて data/videos.json に追記 → push

最近のコミット

README

daily-loop-movies

毎日見る動画を「YouTube 新着一覧」風に並べる静的サイト。

公開URL: https://dailyloop.ikapps.com

構成

純粋な静的サイト(ビルド不要)。

index.html          … ページ本体
assets/style.css    … スタイル(ダークテーマ・グリッド)
assets/app.js       … data/videos.json を読んでカードを描画
data/videos.json    … 動画リスト(これだけ更新すればよい)

app.jsdata/videos.json を fetch し、addedAt の新しい順(新着順)に カードを並べる。YouTube はクリックでライトボックス埋め込み再生、それ以外は 別タブで開く。

動画の追加方法

data/videos.json の配列に 1 件追加するだけ。

{
  "url": "https://www.youtube.com/watch?v=XXXX", // 必須
  "title": "動画タイトル",                        // 必須(一覧に表示)
  "channel": "チャンネル名",                      // 任意
  "duration": "12:34",                           // 任意(サムネ右下バッジ)
  "thumbnail": "https://...",                    // 任意。YouTube は省略で自動取得
  "addedAt": "2026-05-31"                        // 任意だが推奨(並び順・NEW判定)
}
  • YouTubeurl だけでサムネイル(i.ytimg.com)と埋め込み再生が効く。 youtube.com/watch?v=, youtu.be/, shorts/, embed/, live/ に対応。
  • YouTube 以外 … サムネイルは自動取得できないので thumbnail を手で指定する。 省略すると ▶ プレースホルダ表示になる。
  • addedAt から NEW_DAYS(既定 7 日)以内なら NEW バッジが付く。

サンプルは data/videos.example.json を参照。

ローカルでプレビュー

./preview.sh        # http://localhost:8765 をブラウザで開く(Ctrl+C で停止)
./preview.sh 9000   # ポート指定も可

index.html を直接ダブルクリックすると file:// 扱いになり、 fetch("data/videos.json") がブラウザにブロックされて動かない。 本番と同じ静的配信で確認するため簡易 HTTP サーバー経由で開く。

デプロイ

ib.ikapps.com(intelligence-bank)と同じ「cron で git pull 自動同期」方式で 多目的サーバー(multi-purpose-lightsail-server1 / 13.230.63.19)に配置する。 data/videos.json を更新して push すれば数分でサイトに反映される。

サーバー側セットアップ手順は .devnotes/DEVLOG.md を参照。