GitHub Issue上でコンセプト/WFを簡単に生成する GitHub Action「eidosai」
普段はPdM兼エンジニアとして働いており、要件などをGitHubのIssue上で管理しています。
最近、GitHub Issueに要件を書いたあと伝えるために「絵にするとしたらどんな感じ?」ってなることが多く、Figma Makeとかもありますがさっと画像を作ろうかなという時にテキストをコピーして…貼り付けて…みたいなのが面倒だったので、Issueの中でそのまま“たたき台の絵”まで出せるやつを作ってみました。
それが eidosai です。
概要
GitHub Issue上で @eidosai にメンションして指示を出すと、Issue本文・コメントから要件を要約して、Gemini画像生成API でコンセプト画像やワイヤーフレーム(WF)などを生成し、Issueコメントに貼り付けてくれます。
リポジトリ: https://github.com/hosshan/eidosai

ざっくりの処理の流れ
- Issue本文に要件を書く
- コメントで
@eidosai wf/@eidosai conceptなどをメンション - Actionが動いて要件を要約
- 画像を生成
- 生成画像をGCSへアップロード
- 署名付きURLを作ってIssueコメントに貼る
できること
基本コマンド
-
@eidosai wf- ワイヤーフレーム画像を生成(デフォルト: 4枚)
-
@eidosai concept- コンセプト画像を生成(デフォルト: 2枚)
-
@eidosai modify- 既存画面を参考に修正版を生成(デフォルト: 2枚)
-
@eidosai "説明文"または@eidosai custom "説明文"- カスタム画像を生成(デフォルト: 2枚)
オプション
-
--count/-c \<数値\>- 画像生成枚数を指定
- 例:
@eidosai wf --count 6
-
--no-issue-body- Issue本文をコンテキストから除外し、コメント本文のみを使用
- 例:
@eidosai wf --no-issue-body
複数のオプションを組み合わせて使用できます。
- 例:
@eidosai wf --count 6 --no-issue-body
使用例

例1:ワイヤーフレーム生成
コメント:
@eidosai wf@eidosai wf --count 6
例2:コンセプト画像生成
コメント:
@eidosai concept@eidosai concept --count 3
例3:カスタム画像生成
コメント:
@eidosai "モダンで親しみやすいアイコンデザイン、グラデーションを使用"
例4:画面修正(modify)
コメント:
@eidosai modify この画面に「保存」ボタンを追加してください。 !\[現在の画面\](画像URL)
注意: 画像はMarkdown形式 !\[alt\](url) で記述してください。複数の画像がある場合、すべての画像が参考として使用されます。
セットアップ
1. リポジトリにワークフローを追加
.github/workflows/eidosai.yml を作成します。
name: eidosai Action
on:
issue_comment:
types: [created]
issues:
types: [opened, edited]
permissions:
issues: write
pull-requests: write
contents: read
jobs:
eidosai:
runs-on: ubuntu-latest
if: contains(github.event.comment.body, '@eidosai') || contains(github.event.issue.body, '@eidosai')
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run eidosai Action
uses: hosshan/eidosai@v1.0.0
with:
github-token: $ secrets.GITHUB_TOKEN
ai-api-key: $ secrets.EIDOSAI_AI_API_KEY
ai-provider: 'gemini'
model-name: 'gemini-3-pro-image-preview'
gcs-project-id: $ vars.GCS_PROJECT_ID
gcs-bucket-name: $ vars.GCS_BUCKET_NAME
gcs-service-account-key: $ secrets.GCS_SERVICE_ACCOUNT_KEY
gcs-signed-url-expiry: '2592000' # 30日(オプション)
※今のところAI Providerは gemini だけサポートしています。
2. シークレットと変数の設定
リポジトリの Settings → Secrets and variables → Actions で以下を設定します。
Secrets(機密情報)
-
EIDOSAI_AI_API_KEY(Gemini APIキーなど。必須) -
GCS_SERVICE_ACCOUNT_KEY(Google Cloud Storage サービスアカウントキー。JSON文字列。必須)
Variables(非機密情報)
-
GCS_PROJECT_ID(必須) -
GCS_BUCKET_NAME(必須)
GCSサービスアカウントキーの取得方法
- Google Cloud Console → IAM & Admin → Service Accounts
- サービスアカウントを作成または選択
- Keys タブで新しいキーを作成(JSON形式)
- ダウンロードしたJSONの内容を
GCS_SERVICE_ACCOUNT_KEYに貼り付け
必要な権限
Storage Object Creator-
Storage Object Viewer(署名付きURL生成のため)
GCSバケットの設定
- Cloud Storage → Buckets でバケットを作成
- サービスアカウントに
roles/storage.objectCreatorとroles/storage.objectViewerを付与 - (推奨)パブリックアクセスを無効化(署名付きURLを使うため不要)
- (オプション)ライフサイクルポリシーで古い画像を自動削除
システムプロンプトのカスタマイズ
GitHub Actionsの入力パラメータでプロンプトを差し替えできます。
カスタムプロンプトテンプレート
system-prompt-wf、system-prompt-concept、system-prompt-custom、system-prompt-modify
使用可能なプレースホルダー
-
imageNumber:現在の画像番号(1から開始) -
totalCount:生成する総画像数 -
aspect:現在のアスペクト -
fullContext:Issue本文とコメント本文の結合 -
customInstruction:カスタム指示(customタイプの場合のみ) -
commonContext:共通コンテキスト
カスタムアスペクト
system-prompt-wf-aspects と system-prompt-concept-aspects で、画像ごとの焦点をカンマ区切りで指定できます。
例:
system-prompt-wf-aspects: "レイアウト構造,UIコンポーネント,ナビゲーション,インタラクション"
共通コンテキスト
system-prompt-common-context で、すべての画像タイプ共通の前提(サービス概要、ブランドガイドラインなど)を指定できます。
入力パラメータ一覧
| パラメータ | 説明 | 必須 | デフォルト |
|---|---|---|---|
github-token |
GitHub API アクセストークン | はい | - |
ai-api-key |
AIプロバイダのAPIキー | はい | - |
ai-provider |
使用するAIプロバイダ | いいえ | gemini |
model-name |
使用するモデル名 | いいえ | gemini-3-pro-image-preview |
gcs-project-id |
Google Cloud Storage プロジェクトID | はい | - |
gcs-bucket-name |
Google Cloud Storage バケット名 | はい | - |
gcs-service-account-key |
GCSサービスアカウントキー(JSON文字列) | はい | - |
gcs-signed-url-expiry |
署名付きURLの有効期限(秒) | いいえ |
2592000(30日) |
system-prompt-wf |
WF用システムプロンプトテンプレート | いいえ | - |
system-prompt-concept |
コンセプト用システムプロンプトテンプレート | いいえ | - |
system-prompt-custom |
カスタム用システムプロンプトテンプレート | いいえ | - |
system-prompt-modify |
modify用システムプロンプトテンプレート | いいえ | - |
system-prompt-wf-aspects |
WF用アスペクト(カンマ区切り) | いいえ | - |
system-prompt-concept-aspects |
コンセプト用アスペクト(カンマ区切り) | いいえ | - |
system-prompt-common-context |
共通コンテキスト | いいえ | - |
おわりに
まだ作ったばかりで荒いところもあると思うのですが、もしよければ使ってみてください
Starや要望などフィードバックあれば、ありがたいです
リポジトリ: https://github.com/hosshan/eidosai
Discussion