← 一覧に戻る

x-account-manager-ai

GitHub ↗ Python 最終push: 2026/4/24 22:37

WIP(現在進行中)

Work In Progress

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

現在の状況

YouTube新着動画の取得・表示基盤が完成。サーバーデプロイ済み。

  • fetch_videos.py による複数チャンネルのRSS取得・レポート生成が動作中
  • 毎朝8:00 JSTに自動実行(cronジョブ設定済み)
  • https://aix.ikapps.com でFlask管理画面が稼働中(SSL対応)
  • 管理画面からチャンネルの追加・削除が可能(YouTube URLや動画URLを入力するだけで自動解決)

次にやること:

  1. レポートの動画をClaude APIで要約してX投稿用文章を生成する機能
  2. X(旧Twitter)APIと連携して実際に投稿する機能

過去のWIPアーカイブ

(初回のため、アーカイブなし)

ROADMAP(計画)

ロードマップ

今週

  • Claude APIで動画要約 → X投稿用ツイート文生成
  • 管理画面から要約・投稿文の確認・編集ができるUI

今月

  • X(旧Twitter)API連携・実際の投稿機能
  • 投稿スケジュール管理(下書き保存・予約投稿)
  • クロール対象チャンネルの追加(AI系を中心に拡充)

今四半期

  • 投稿パフォーマンス分析(いいね・リポスト数の追跡)
  • 投稿トーン・スタイルの調整機能

いつか

  • 動画のトランスクリプト取得による精度高い要約
  • 複数アカウント対応

DECISIONS(意思決定)

意思決定記録

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


2026-04-24: FlaskフラッシュメッセージをURLパラメータ方式からセッション方式に変更

背景: 初期実装でメッセージをURLクエリパラメータ(?msg=...)で渡していたため、URLがエンコード文字列で汚くなった。

決定: Flaskの flash() / get_flashed_messages() を使うセッション方式に変更。SECRET_KEYconfig.json に追加して管理。

理由: URLにメッセージを乗せるのは非標準。Flaskのセッションベース方式が主流かつURLがクリーンに保たれる。


2026-04-24: Web管理UIのフレームワークをFlask + gunicornに決定

背景: チャンネルの追加・削除をWeb上で行えるようにしたかった。既存の静的HTML配信では対応不可。

決定: Flask(+ gunicorn)でWeb UIを実装し、systemdサービスとしてデプロイ。NginxはリバースプロキシとしてFlaskに転送。

理由: Pythonで統一できる、軽量、既存スタックと親和性が高い。FastAPIも候補だったが、このシンプルさならFlaskで十分。


2026-04-24: YouTubeデータ取得をRSSフィードで行う方針

背景: 複数チャンネルの新着動画を定期取得したい。YouTube Data APIを使う方法もある。

決定: YouTube RSSフィード(https://www.youtube.com/feeds/videos.xml?channel_id=...)を使う。APIキー不要。

理由: APIキーの管理・クォータ制限が不要でシンプル。RSSで取れる情報(タイトル・URL・投稿日時・概要冒頭)で要件を満たせる。


2026-04-24: サーバーは既存Lightsailの多目的サーバーを流用

背景: 新規インスタンスを立てるか、既存の多目的サーバーに相乗りするか。

決定: 13.230.63.19(multipurpose-server1)に相乗りし、aix.ikapps.com サブドメインを割り当て。

理由: このプロジェクト単体でサーバーを立てるほどのリソースは不要。既存の$5/月インスタンスを活用。


DEVLOG(作業ログ)

開発日誌

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


2026-04-24

22:00 - 初期構築・サーバーデプロイ・Web管理画面

やったこと:

  • channels.json にAI系YouTubeチャンネルリストを作成(Lex Fridman, Two Minute Papers, Yannic Kilcher, Fireship, AI仙人)
  • fetch_videos.py: YouTubeのRSSフィードを取得して新着動画レポートを生成するスクリプト作成
  • manage_channels.py: CLIでチャンネルの追加・削除・一覧を行うスクリプト作成(~/AIX用アカウント の既存コードをベースに移植)
  • render_html.py: レポートMarkdownからHTMLページを生成するスクリプト作成
  • Lightsailサーバー(13.230.63.19)への /home/ubuntu/apps/x-account-manager-ai/ へのデプロイ
  • cronジョブ設定: 毎日23:00 UTC(= 翌8:00 JST)に fetch_videos.py && render_html.py を自動実行
  • Route 53 に aix.ikapps.com のAレコード追加(手動)
  • Nginx設定 + Let's Encrypt SSL証明書取得(certbot --nginx
  • app.py: Flask製チャンネル管理Web UIを作成
    • Basic認証付き(config.json でパスワード管理)
    • チャンネル追加(YouTube URL / @handle / 動画URL / チャンネルID に対応)
    • チャンネル削除
    • レポート一覧・閲覧
  • gunicorn + systemd(aix-manager.service)でFlaskアプリをサービス化
  • Nginxをリバースプロキシ構成に変更(port 5001)
  • チャンネル名自動取得の修正: /channel/UC... 形式・チャンネルID直接入力でも名前を取得するよう改善
  • 動画URL(watch?v=...)からチャンネル情報を解決する機能を追加
  • フラッシュメッセージをURLクエリパラメータ方式からFlaskセッション方式に変更

決めたこと:

  • YouTubeデータ取得はRSSフィード(APIキー不要)
  • サーバーはLightsailの多目的サーバー(既存)を流用
  • Web管理UIはFlask + gunicorn構成
  • 認証はBasic認証(config.json管理)
  • フラッシュメッセージはFlaskセッション方式

次回やること:

  • YouTube動画の要約生成(Claude API使用)
  • X(旧Twitter)への投稿機能

最近のコミット

README

x-account-manager-ai(X アカウント管理 AI)

概要

(記入予定)

セットアップ

(記入予定)

使い方

(記入予定)