Twimood は、X(旧 Twitter)の投稿を取り込み、OpenAI API で感情・行動ラベルを付けて、カレンダーやグラフで振り返るための Django アプリです。
- X アーカイブ
tweets.jsから投稿を取り込み - X API v2 から期間指定で投稿を取り込み
- OpenAI API による投稿テキストのラベル分析
- ラベル別の月間カレンダー表示
- 週・月・年単位の時系列グラフ表示
- ラベルをクリックして該当投稿の一覧を確認
python -m venv env
.\env\Scripts\Activate.ps1pip install Django pandas requests python-dotenv openai python-dateutil.env.example をコピーして .env を作成します。
Copy-Item .env.example .env.env に必要な値を設定します。
X_USER_NAME=your_x_user_name_here
X_USER_ID=your_x_user_id_here
X_BEARER_TOKEN=your_x_bearer_token_here
OPENAI_API_KEY=your_openai_api_key_here
ANALYSIS_AI_MODEL=gpt-3.5-turboX アーカイブだけを使う場合、投稿の取り込みには X API の値は不要です。分析を実行する場合は OPENAI_API_KEY が必要です。
分析に使うモデルを変えたい場合は、.env の ANALYSIS_AI_MODEL に任意の OpenAI モデル名を設定します。
db.sqlite3 はローカル環境ごとに作成される開発用データベースです。Git には含めず、必要な環境で次のコマンドを実行して作成します。
python manage.py migratepython manage.py runserverブラウザで http://127.0.0.1:8000/ を開きます。
X の公式ヘルプに従って、アカウントのアーカイブをリクエストします。
- 公式ヘルプ: How to download your X archive
- Web では
Settings and privacy→Your account→Download an archive of your dataからリクエストします。 - アーカイブの準備ができると、X から通知またはメールが届きます。
- ダウンロードした zip を展開し、
data/tweets.jsをこのプロジェクトのtwimood/data/tweets.jsに配置します。
OpenAI API で投稿を分析するには API キーが必要です。
- 公式クイックスタート: Developer quickstart
- API キー管理画面で新しいキーを作成します。
- 作成したキーは再表示できないため、安全な場所に控えます。
- このプロジェクトでは、
.envのOPENAI_API_KEYに設定します。
X のアーカイブデータに含まれる tweets.js を、次の場所に配置します。
twimood/data/tweets.js
その後、トップ画面 / で期間を選び、「X アーカイブから取得」を選択して投稿を取り込みます。
.env に X_USER_ID と X_BEARER_TOKEN を設定したうえで、トップ画面 / で期間を選び、「X API から取得」を選択して投稿を取り込みます。
X API の利用プランや権限によっては、投稿取得時に 403 Forbidden やレート制限が発生する場合があります。
トップ画面 / の「未分析ツイートを分析」から、labels が空の投稿を OpenAI API で分析します。
分析結果は Tweet.labels にカンマ区切りのラベルとして保存されます。分析後、カレンダー画面とグラフ画面に結果が反映されます。
現在の主なモデルは Tweet です。
| フィールド | 内容 |
|---|---|
date |
投稿日時 |
text |
投稿本文 |
labels |
分析で付与されたラベル |
- Django
- pandas
- requests
- python-dotenv
- openai
- python-dateutil
- Bootstrap
- FullCalendar
- Chart.js
.envには API キーや Bearer Token が含まれるため、Git にコミットしないでください。db.sqlite3はローカル開発用の SQLite データベースです。投稿データを含むため Git にコミットしないでください。- OpenAI API の分析実行には利用料金が発生する場合があります。
- X API には取得可能期間、レート制限、権限などの制約があります。





