daily-loop-movies
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.jsがdata/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.comA レコード → 13.230.63.19 - サーバーに deploy key
~/.ssh/id_ed25519_daily_loopを生成、GitHubリポジトリに read-only deploy key として登録 /var/www/daily-loop-moviesにクローン(ownerubuntu: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
最近のコミット
- ac7cfb3 差し色とfaviconをティール(#10b981)に変更 2026/5/31
- 8b1de6a 再生ボタンのfavicon(SVG)を追加 2026/5/31
- d1724f3 CSS/JSにバージョンクエリを付与しキャッシュ無効化(古いCSS残留対策) 2026/5/31
- 7d1bc92 ローカルプレビュー用 preview.sh を追加 2026/5/31
- 7766d78 ライトボックスが常時表示されてページを覆う不具合を修正([hidden]対応) 2026/5/31
- 6484768 動画3本を追加 2026/5/31
- 0d59127 デプロイ記録をDEVLOGに追記 2026/5/31
- 09be7c3 YouTube新着一覧風の静的サイトを実装(videos.json駆動・ライトボックス再生) 2026/5/31
- 05c1378 初期コミット 2026/5/31
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.js が data/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判定)
}
- YouTube …
urlだけでサムネイル(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 を参照。