日本人メジャーリーガーの​毎日​投稿を​AIで​自動化した​ ──前日成績を​1枚の​アート画像に​して​X投稿する​仕組みを​作った​制作事例

日本人メジャーリーガーの前日成績を、毎日1枚のAI生成アート画像+短文でX自動投稿する仕組みを作った制作事例。狙いは速報ではなく“並ぶと育つ図鑑”。日付検証で誤情報を防ぎ、主役を自動選定し、キャラクターシート参照で絵柄を安定させた——毎日壊れず回り続ける“編集工場”の設計判断を開示する。

甲斐ショウジ甲斐ショウジ
CAG主宰/合同会社ATK CAIO(最高AI責任者)
制作事例10分で読めます
制作事例技術日本人メジャーリーガーの毎日投稿をAIで自動化した ──前日成績を1枚のアート画像にしてX投稿する仕組みを作った制作事例

日本人メジャーリーガーの前日成績を、毎日1枚のアート画像+短いキャプションにしてXへ自動投稿する——そんな制作事例を作った。ポイントは、これを「投稿づくり」ではなく毎日壊れない編集システムづくりとして設計したこと。速報で勝負せず"並ぶと育つ図鑑"を狙い、①日付検証で誤情報を防ぐ ②その日の主役を自動で選ぶ ③キャラクターシート参照で絵柄を安定させる、の3つを仕組みにした。本稿では、毎日回り続ける"工場"をどう作ったかを、設計判断ごと開示する。

ダークな投稿管理ダッシュボード。月間カレンダーの全ての日に野球テーマの投稿カードが予約済みチェック付きで埋まり、今日のマスがゴールドに光っている
カレンダーの全マスが、自動で埋まっていく——速さでなく、続く仕組みで戦う

01つくったのは​速報ではなく、​"並ぶと​育つ図鑑"

狙ったのは、単なるスポーツ速報ではない。速さで勝負すれば、既存メディアやbotに勝てない。数字を一番早く並べる戦いは、最初から負けが見えている。かといって、毎日長文の解説を書くのは——熱量がある日はいいが、必ずどこかで止まる。続かないものを設計の中心に据えてはいけない。そこで定めたコンセプトは、「前日ハイライトを、1枚のアートインフォグラフィックとして残す」こと。

ニュース画像ではなく、シリーズものの図鑑に近い。1日単体で勝負するのではなく、並べたときに世界観が育っていく投稿にしたかった。毎日見てもらうより、積み重ねが資産になる設計だ。1枚画像+2〜4行のキャプション、という最小単位に絞ったのも、続けるための判断だった。

+ 毎日1枚 → 並べると世界観が育つシリーズ図鑑に
速報の使い捨てでなく、積み重ねが資産になる「並ぶと育つ図鑑」を狙った

02最初の​壁は、​「昨日」が​信用できない​こと

いきなりの落とし穴は日付だった。日本時間の朝に作業すると、MLBの試合はまだ終わっていないことがある。「昨日の結果」と言っても、それが日本時間の昨日なのか、現地日付なのか、全試合が Final なのかで意味が変わる。ここを曖昧にすると、即座に事故る。

そこで最初に作った概念が latest verified MLB date——「いま、投稿に使ってよいと確認できた現地日付」を毎回決める仕組みだ[1]

  • MLB StatsAPI の schedule を見る
  • 対象の日本人選手が関係する試合を拾う
  • それらが全て Finalを確認する
  • feed/live から成績を取り、必要ならボックススコアと突き合わせる
  • 未終了・中断・不一致があれば Hold(投稿しない)

これで「昨日のつもりが一昨日だった」「終わっていない試合を確定扱いした」という事故を構造的に消した。候補日を新しい方から検証し、使える日付だけを返す——この地味な一本が、企画の土台になった。

毎日投稿で日付を間違えるのは、思っている以上に致命的だ。1日ずれた成績で1枚絵を作れば、間違いがそのまま画像として残り、拡散される。テキストの訂正より、誤った画像のほうが取り返しがつかない。だから「速さ」より先に「正しさを確認できる仕組み」を置いた。検証に通らない日は、無理に出さず Hold する——出さない判断を、システムができるようにしたのが大きい。

schedule候補日(新しい順) 対象選手の試合全て Final か? Final → feed/live成績を確定取得 未終了/不一致 → Hold投稿しない verified date
全 Final を確認できた現地日付だけを「使ってよい昨日」に。不一致は Hold

03データは​「書く」ためでなく、​「判断する」​ために​取る

次に作ったのは、対象選手の成績を抜くスクリプトだ。schedule から gamePk を拾い、各試合の feed/live で打撃・投球成績を抽出する。だが本当に大事だったのは、データを全部保存することではない。「今日の主役を誰にするか」を決められる形にすることだった。

主役選定は、毎回の気分で揺れないようにルールへ落とした。

  • 決定打や勝敗への影響が大きい
  • 本塁打・複数打点・好投など絵にしやすい
  • 先発投手の好投
  • 複数安打・四球・無失点リリーフなどの補助トピック

スポーツ投稿では、数字の大きさだけで主役は決まらない。1枚絵にしたときに「見える」数字かが効く。7回無失点10Kは絵になる。1安打3四球は文脈としては面白いが、主役絵にはしにくい。本塁打や好投のように一目で凄さが伝わる数字と、説明して初めて効く数字は、ビジュアルでの扱いが違う。この判断を人の気分でやると日によってブレるから、優先順位で固定した。

裏を返せば、データ取得は「主役を決めるための材料集め」に最適化されている。全部のスタッツを溜め込むのではなく、選定に効く指標を、選定できる粒度で持つ。出力(投稿)から逆算して、入力(データ)の形を決める——これも仕組み化の肝だった。

成績データ(全選手) 7回無失点10K 2本塁打4打点 1安打3四球 登録のみ・出場なし 優先順位ふるい 今日の主役7回無失点10K ※「絵になる数字」を優先。気分でなくルールで決める
数字の大小でなく「1枚絵で見える数字」を主役に。優先順位で揺れを消す

04短い​キャプションほど、​裏で​文脈を​作る

何日か作って分かったのは、当日成績だけ並べると淡白になることだった。「4打数2安打」「0.1回無失点」「3打数0安打」——事実は正しいが、読む理由が弱い。

そこで、指定日から直近10日ほどを見て、選手ごとの最近の出場傾向・今季成績・連続無安打・登板間隔・チーム勝敗をキャプション前に整理する処理を足した。最終的にキャプションは2〜4行に収める。だがその短い文の裏には、「今日は実出場が少ない日」「直近で無安打が続く」「登録のみの投手は次の出番待ち」といった編集判断が入っている。

短く見えるものほど、裏で文脈を作らないと薄くなる。毎日投稿で一番学んだことのひとつだ。
直近10日の文脈 出場傾向 連続無安打 登板間隔 今季成績/勝敗 キャプション(2〜4行) 文脈を集めてから、削って2〜4行に圧縮する
直近の傾向を集約し、短いキャプションへ圧縮。短さの裏に編集判断を仕込む

05画像の​難所は、​「同じ​人物に​見せ続ける」こと

画像は GPT Image 2 で作ることにした[2]。最初はプロンプトに特徴を書けば十分だと思っていた。だが毎日のシリーズでは、それだと崩れる。具体的には、こういう崩れ方が日替わりで起きる。

  • 同じ選手なのに、日によって顔が違う/体格が違う/装備が違う
  • 右打者が左打者っぽくなる(打席の左右が入れ替わる)
  • 投手のグラブ手が逆になる

シリーズものは「1枚として良い」だけでは足りない。昨日の絵と地続きに見えることが命だ。1枚の完成度より、何十枚並べたときの同一人物性のほうが、図鑑としての価値を決める。

特に打席の左右が厄介だった。「左打ち」「右打ち」と単語で書くだけでは、生成側が平気で崩す。そこで二段構えにした。

  • キャラクターシート運用:選手ごとに spec.md と完成PNGを持ち、生成時に参照画像として添付する。文章プロンプトだけに頼らない。
  • 左右は単語でなくフォームを分解:左打者なら「本人の左手が上・右手が下・右足が前足・左足が軸足」。右打者ならその逆。ここまで書いて、ようやく崩れにくくなった。

面白い発見だった。AI画像生成では「概念」より「身体の構造」を指定したほうが安定することがある。

キャラクターシートspec.md + 完成PNG 左打者=身体構造で指定左手 上 / 右手 下右足 前足 / 左足 軸足×「左打ち」とだけ書く → 崩れる○ フォーム分解 → 安定 毎日 同じ人物
キャラクターシートを参照画像に添付+左右は身体構造で指定。同一人物性を保つ

06生成も​仕組み化し、​"成功の​再現条件"を​残す

画像生成も手作業では回らない。そこで参照画像つき生成をスクリプト化した。--refs で指定した選手の最新キャラクターシートPNGを自動で探しv1 / v2 … と増えても最大番号を優先)、参照画像として生成リクエストに渡す。

そして肝は、生成後に「どのプロンプトと、どの参照画像で作ったか」を manifest.json に残すことだ。画像生成は、成功したときほど再現条件を忘れやすい。だから、うまくいった日の裏側を必ず記録する。

画像比率は 1024×1024正方形に固定した。16:9や縦長も候補に見えるが、Xで毎日使うなら表示の安定が大事だ。正方形なら主役・数字・補助選手・下部コピーの位置を毎回揃えられ、見切れも少なく、並べたときの統一感も出る。比率の自由度を捨てたことで、逆に作る速度と品質が上がった。

これは制約の効用そのものだ。毎回ゼロから「どんな構図にしよう」と考えるのをやめ、固定フォーマットの中で中身だけを差し替える。デザインの自由度を意図的に削ると、判断の数が減り、ブレが減り、結果として速く・安定して出せる。シリーズものは「自由」より「型」が効く。

--refs最新キャラシ自動選択 Files API参照画像 vision GPT Image 21024×1024 固定 PNG 出力 manifest再現条件 うまくいった日の「プロンプト×参照画像」を manifest に焼き付ける
生成をスクリプト化し、成功の再現条件を manifest に保存。1:1固定で構図を安定

07本質は、​編集判断を​毎日​再利用できる​形に​分解する

この仕組みがやっているのは、単にAIに投稿文や画像を作らせることではない。実際には工程を細かく分けている——データ取得 → 日付検証 → 主役選定 → 直近文脈の生成 → 構図案の比較 → キャプション作成 → キャラクターシート参照 → 画像生成 → manifest保存 → 記録 → 投稿後のふりかえり

そして役割を割り振る。AIが得意なところはAIに渡す。事故りやすいところはルールとスクリプトで縛る。「AIで自動化する」というより、人間の編集判断を、毎日再利用できる形に分解する感覚に近い。これはCAGがクライアントワークでやっていることと同じだ——司令塔が判断の枠を設計し、つくり手が実装で固める。

AIに丸投げしても、AIだけに任せきっても、毎日は回らない。どこをAIに開き、どこを仕組みで閉じるか——その線引きこそが設計だ。生成(書く・描く)はAIが速い。だが「昨日が正しいか」「主役は誰か」「これは出していいか」という判断と検証は、ルールとスクリプトで固定したほうが毎日壊れない。この配分が、継続できる自動化と、すぐ止まる自動化を分ける。

取得 日付検証 主役選定 文脈生成 構図比較 キャプション 参照+生成 manifest 記録 事故りやすい工程 → ルール/スクリプトで縛る 得意な工程 → AIに渡す 「自動化」ではなく「編集判断を再利用可能な形に分解」
11工程に分解し、AIとルールへ割り振る。判断の枠を設計し、実装で固める

08苦労は​派手な​生成で​なく、​地味な​例外処理だった

華やかに見えるのは画像生成だ。だが本当に時間を使ったのは地味なところ——日付がズレる、試合が終わっていない、登録のみで出場がない、主役級の活躍がない日がある、画像の左右が崩れる、顔が似ない、小ネタが目立ちすぎる、キャプションが速報っぽくなる。この一つひとつを、気合いで直すのではなく仕様に戻した

  • 未検証なら画像生成しない
  • 人物を描くならキャラクターシートを読む
  • 投稿前に構図案を複数出して比べる
  • 承認前に画像を生成しない
  • 1投稿1仮説で「学び」と「次の改善」を残す

不思議なことに、こうした小さな制約が増えるほど、毎日の作業はむしろ楽になった。継続企画に必要なのは"すごい一発"ではない。昨日の自分の判断を、今日の自分が再利用できること。失敗の理由を、次のプロンプトや仕様に戻せること。データ・文章・画像・保存先・改善ログが一本の流れになっていること。最初は投稿を作っていた。途中から、投稿を作るための小さな工場を作っていた。そして今は、その工場自体が一つのコンテンツになり始めている。

継続が楽に 仕様に戻す再利用できる毎日の判断失敗を仕様化
失敗を仕様へ戻すほど、判断が再利用でき、毎日の継続が楽になる

毎日その都度の手作業 vs 仕組み化(CAG)。同じ「毎日投稿」でも、続けられるかどうかは作り方で決まる。

観点その都度の手作業仕組み化(電脳技巧集団)
「昨日」の正確さ人の記憶・タイムゾーン頼り→事故るlatest verified date(全Final確認・不一致はHold)
主役選定毎回の気分で揺れる「絵になる数字」優先のルールで固定
キャプション当日成績だけ→淡白直近10日の文脈を圧縮して2〜4行に
画像の一貫性日替わりで顔・左右が崩れるキャラシ参照+身体構造指定+1:1固定
再現性成功条件を忘れるmanifestにプロンプト×参照を保存
継続性気合い依存→いつか止まる編集判断を再利用できる"工場"として回る

※ 本記事は自社運用の自動投稿システムの記録。スクリプト名・工程は実装に基づく。選手個人の肖像・実名は本記事では一般化している。

出典・脚注

  1. 試合日程・成績は MLB StatsAPI(schedule / feed/live 等)を参照。日付確定は対象試合が全て Final であることを確認してから行う。statsapi.mlb.com
  2. 画像生成は OpenAI の GPT Image(gpt-image-2)。参照画像は Files API(purpose=vision)でアップロードし、生成リクエストに添付。platform.openai.com/docs/guides/images
  3. 本事例は電脳技巧集団(AI職人ギルド)が自社運用する日本人メジャーリーガー速報ポストの制作記録。工程・スクリプト構成は実装に基づく目安。生成アートは実在選手の肖像を描かず、内容は一般化している。

「毎日​続く​コンテンツ」を、​仕組みから。

一発の派手さより、続く工場を。あなたの発信や運用の自動化も、まずは言葉にすることから。

無料で相談する →

言語化できるものは、全て作る。

あなたの「作りたい」を、定価とスピードで形に。まずは無料の相談から。

制作事例を見る