自己紹介が苦手な私が、X投稿50件で“自分AI”を作ってみた(GAS × OpenAI検証)
こんにちは。TOO SHY SHY GIRLことHaradaです。(某TKサウンド世代です)
もうすぐ4月。
新しい出会いの季節です🌸
毎年この時期にやってくるのが 「自己紹介」。
私はSHY GIRLなので、これが本当に苦手💧
毎回、話し終わったあとに「もっと良い言い方あったのでは…?」と一人反省会をするタイプです。
そこで思いました。
いっそAIに“自分っぽい自己紹介”を作ってもらえばいいのでは?
今回は GAS × OpenAI を使って
X(旧Twitter)投稿50件から人格を再現できるのかを検証してみました。
※X上のGrokでも類似の分析は可能ですが、今回は投稿データを外部に取り出し、GASとAPIを組み合わせることで拡張性のある仕組みとして検証しています。
やりたいこと
やりたいことはシンプルです。
- X投稿を収集
- スプレッドシートに保存
- GASからOpenAI APIを呼び出す
- 人格を分析
- 「自分になりきって」回答してもらう
大規模なRAG構成ではなく、まずは小さく検証してみます。
全体構成
今回はXのアーカイブは使わず、直近2〜3ヶ月の投稿を50件ほど手動で収集しました。
検証目的であれば、この件数でも十分傾向は見えます。
※ X(Twitter)のアーカイブ抽出をしたい場合は、「設定とプライバシー」>「アカウント」>「データのアーカイブをダウンロード」からDLできます。
※ 24時間以上かかることもあるみたいなので、要注意です。

スプレッドシート構成
構成:
| source | date | text | tag |
|---|
タグは手作業で簡易的に付与しました。
- tech
- 仕事
- 愚痴
- 日常
例:

タグを付けている段階で、自分の思考のクセが見えてきます。
この作業自体がなかなか興味深い体験でした。
※次からはAIに分類してもらう予定。
GASコード
Apps Script から UrlFetchApp を使って API を呼び出します。
function analyzeMyPersonality() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getRange(2, 1, sheet.getLastRow()-1, 3).getValues();
let texts = data.map(row => row[2]).join("\n");
const apiKey = PropertiesService.getScriptProperties().getProperty("OPENAI_API_KEY");
const payload = {
model: "gpt-4o-mini",
messages: [
{
role: "system",
content: "あなたは優秀な心理分析AIです。"
},
{
role: "user",
content: `
以下はある人物のX投稿ログです。
この人物の性格・思考傾向・価値観・口癖を分析してください。
最後に「この人を一言で表すと?」も出してください。
${texts}
`
}
],
temperature: 0.7
};
const options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: "Bearer " + apiKey
},
payload: JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(
"https://api.openai.com/v1/chat/completions",
options
);
const result = JSON.parse(response.getContentText());
Logger.log(result.choices[0].message.content);
}
ハマったこと
GASをセットして実行したところ以下のようなエラーが出てしまいました。
このエラーはコードの問題ではなく 課金設定の問題 で
「APIを使うための利用枠(課金設定)がまだ有効になっていない」という意味です。
ChatGPT Plusに入っていても、APIは別料金・別設定です。
以下APIの設定で実行が可能になりました(クレカが必要!)
1. OpenAIのダッシュボードへアクセス
OpenAIの開発者向けダッシュボードにログインします。
2. APIキーを作成する
- 右上のプロフィールメニューを開く
- 「API Keys」を選択
- 「Create new secret key」をクリック
- 表示されたキーをコピー
※APIキーは一度しか表示されません。安全な場所に保管してください。
3. 支払い方法を登録する
APIは従量課金制のため、支払い方法の登録が必要です。
- 「Billing」メニューを開く
- 「Payment methods」からカードを登録
4. GAS側にAPIキーを登録
- スプレッドシート → 「拡張機能」→「Apps Script」
- 「プロジェクトの設定」
- 「スクリプトプロパティ」
- 以下を追加
キー:
OPENAI_API_KEY
値:
(発行したAPIキー)
保存すれば準備完了です。
補足:利用後にカードを削除する場合
検証が完了した後は、Payment methods からカードを削除することで、API利用を停止できます。
人格分析の結果
実行してみると、次のような分析が返ってきました。

お恥ずかしい…///
- 内向的で思慮深い
- 分析的思考が強い
- 改善志向
- 自虐的ユーモアあり
そして最後に出力された一言は、:
「思慮深く、ユーモアを持つ批判者」
個人的な感覚としては、自分の持つ”自分像”とは違って驚きました。
「そこまで批判的だろうか?」と思ってしまいましたが、
ログベースで見ると確かにそうかもしれません…。
素直に受け入れることにします…グヌヌ💥
技術的に感じたこと
1. 50件でも傾向は見える
今回の検証では、50件程度でも思考パターンは抽出できました。
2. temperatureで個性が変わる
- 0.2 → 安定寄り
- 0.8 → 個性強め
用途に応じた調整が重要です。
3. 本格運用するなら抽出設計が必要
件数を増やす場合はRAG的な抽出設計が必要になりそうです。
コストについて
今回の検証では小額で収まりました。
今回利用したモデル gpt-4o-mini は、入力 1Mトークンあたり $0.15、出力 1Mトークンあたり $0.60 の料金体系です。
(参考:OpenAI公式サイト)
検証の前に、利用予定のモデルと価格と大体の予算感は掴んでおいた方が良いかも知れません。
ご利用は計画的に。
まとめ
- X投稿50件でも人格傾向は再現可能
- GAS × OpenAIは比較的シンプル
- 過去投稿は自己理解の材料になる
- 自己紹介の補助として活用できそう
自己紹介が苦手な自分のために始めた検証でしたが、
一番冷静に自己分析していたのは自分ではなくAIだった、と気づきました。
4月、新しい環境に入られる方も多いと思います。
自分の言語化に悩んでいる方は、こういったアプローチを試してみるのも一案かもしれません。
余談:
X(Twitter)だけでなく、ブログやメモなど自分が公開しているテキストデータも組み合わせることで、より精度の高い分析ができそうだと感じました。
4月に控えているDOKI☆DOKIの小学校のPTA総会では、さらにデータを蓄積した上で
「思慮深く、ユーモアを持つ批判者です!よろしくお願いします!」
と自己紹介のBig Waveを起こしてこようと思います。😎








