コンテンツにスキップ

登場人物と役割

概要

Jester に関わる人物・システムの一覧とその役割を定義する。


人物

コンテンツ管理者

コンテンツの作成・管理を担当する運営担当者。管理画面(jester-user-web)から操作する。

操作 内容
レース情報管理 レース結果 JSON の登録・更新・削除、AI予想データの登録
記事管理 記事の AI 生成リクエスト・本文の確認と編集・公開
生成失敗の対応 生成に失敗した記事の理由確認・追加指示つきの再生成
過去ブログ管理 過去ブログの取り込み(スクレイピング JSON のアップロード)・カテゴリの更新
ブログ管理 AI リライト/書き下ろしのリクエスト・本文の確認と編集・削除・公開
サムネイル管理 ブログのサムネイル生成リクエスト
関連情報 ブログの関連情報(類似ブログへのリンク)の生成
マスタ管理 カテゴリ・NGワードの作成・更新・削除

コンテンツ閲覧者

公開されたコンテンツを閲覧するエンドユーザー。

操作 内容
レース結果ページの閲覧 レース結果と、その中に埋め込まれた「10秒サマリー」記事
ブログ記事の閲覧 公開済みブログ記事

システム(自動処理)

App Lambda(odds_poc_app)

コンテンツ管理者からの REST API リクエストを受け付け、CRUD 操作と非同期処理の起点を担う。

役割 内容
API ハンドリング 全エンドポイントのリクエスト受付・レスポンス返却
DB 操作 DocumentDB への読み書き
メディア保存 S3 へのメディアファイルアップロード・署名付き URL の発行
ジョブ投入 SQS への記事生成・ブログ生成・リライト・サムネイル生成ジョブ送信
ベクトル化 過去ブログ登録時の埋め込みベクトル生成
関連情報の生成 ブログ同士の類似度計算と、記事下部への関連情報セクションの挿入(同期処理)

article_generation Lambda

レース結果10秒サマリーを AI で執筆する非同期処理システム。

役割 内容
レース解析 レース結果・レース動画・コース画像(競馬のみ)を AI エージェントが総合解析する
記事執筆 確定事実と解析結果を根拠に、見出し1つと3文のサマリーを執筆する
事実ガード 値の差し込み・公式データとの照合・NGワード検査を行い、解消できなければ生成を失敗させる
結果送信 生成した記事データを SQS 経由で article_builder Lambda に送信する
失敗の記録 最終試行で失敗した場合、記事を「生成失敗」として理由つきで残す

article_builder Lambda

生成された記事データから記事 HTML を構築し、DocumentDB に保存する非同期処理システム。

役割 内容
結果受信 article_generation Lambda の生成結果を SQS 経由で受信する
HTML 構築 記事データを React コンポーネントに流し込み、サマリーボックスの HTML を構築する
結果保存 構築した記事を「下書き」として DocumentDB に保存する(公開状態への遷移は行わない)

blog_generation Lambda

レースの情報からブログを書き下ろす非同期処理システム。

役割 内容
レース回顧の執筆 レース結果・レース動画・コース画像からレース後の振り返りを書く
レース予想の執筆 出走表と AI予想印からレース前の予想を書く
事実ガード 記事生成と同じく、値の差し込み・公式データとの照合・NGワード検査を行う
ベクトル化 生成本文から埋め込みベクトルを作り、関連情報の検索に使えるようにする
結果送信 生成したブログ本文を SQS 経由で blog_builder Lambda に送信する

blog_rewriter Lambda

過去ブログを内容を変えずにリライトする非同期処理システム。

役割 内容
レース解析 レースに紐づく場合、レース結果・動画・コース画像を解析する
リライト 原文の内容と書き手の文体を保ったまま書き直し、記事のブロック構造として構造化する
サマリー生成 リライト後の本文から「10秒サマリー」を生成する
NGワード検査 生成結果を検査する(元記事に既にある語は対象外)
結果送信 リライト結果を SQS 経由で blog_builder Lambda に送信する

blog_builder Lambda

ブログ本文を記事テンプレートへ流し込んで HTML を構築し、DocumentDB に保存する非同期処理システム。

役割 内容
テンプレート選択 カテゴリに応じて記事テンプレート(予想 / レース結果 / 汎用)を選ぶ
HTML 構築 オッズパークの実コンポーネント・実 SCSS で記事エリアを描画する
引き継ぎ 既存のサムネイル・関連情報を再ビルド後も維持する
結果保存 構築したブログを「下書き」として DocumentDB に保存する

thumbnail_generation Lambda

レース動画からサムネイル画像を作る非同期処理システム。

役割 内容
瞬間の選定 レース動画・レース結果・コース画像を AI エージェントが解析し、最適な秒数を選ぶ
フレーム抽出 ffmpeg でその瞬間のフレームを切り出す
結果保存 画像を S3 に保存し、メディア情報を DocumentDB に登録する
本文への埋め込み ブログ本文の「10秒サマリー」直下にサムネイル画像を挿入する

外部リポジトリ

jester-user-web

コンテンツ管理者が操作する管理画面(React SPA)。 レース結果ページ・ブログ記事のプレビューも提供する。

oddspark-static-pages

オッズパークのデザイン資産(コンポーネント・SCSS)のリポジトリ。 blog_builder と jester-user-web は、ここから同期した実コンポーネントを使って描画する。