🤖

【リリースノート】gemini-actions-lab v0.5.3 - リリースノートのZenn連携で情報発信を自動化!

に公開

はじめに

gemini-actions-labは、GitHub Actions上でGemini APIを活用した実験的な取り組みを行うプロジェクトです。今回のv0.5.3リリースでは、開発プロセスの効率化をさらに一歩進めるため、リリースノート作成からZennでの技術記事公開までを完全に自動化する機能を導入しました。

この記事では、その中心となるGitHub Actionsワークフローの変更点と、自動化によって何が実現されたのかを技術的な観点から詳しく解説します。

主な変更点

今回のリリースの最大のハイライトは、Zenn記事の自動生成機能です。

従来、リリース情報はGitHubのリリースノートに留まっていましたが、より多くの開発者に情報を届けるため、技術ブログプラットフォームであるZennへの記事投稿を自動化しました。これにより、リリース作業が完了すると、その内容に基づいた技術記事が自動的に生成され、専用のZennリポジトリにプッシュされます。

その他、以下の変更も含まれています。

  • Gemini CLIのペルソナ設定: AIの応答スタイルを定義するGEMINI.mdを追加し、より一貫性のあるコミュニケーションを目指しました。
  • リポジトリの整理: 不要なファイルを削除し、各リリースに対応するヘッダー画像を生成・追加しました。

技術的な詳細

今回の自動化の心臓部は、.github/workflows/gemini-release-notes.ymlワークフローに加えられた新しいステップです。コード差分を見ながら、その仕組みを解説します。

新機能: Zenn記事の自動生成ワークフロー

GitHub Actionsのワークフローに、以下の主要なステップが追加されました。

  1. GeminiによるZenn記事の生成
  2. Zennリポジトリへのチェックアウト
  3. 記事ファイルの作成とコミット&プッシュ

1. GeminiによるZenn記事の生成

まず、google-github-actions/run-gemini-cliアクションを利用して、リリース情報からZenn記事を生成します。

# .github/workflows/gemini-release-notes.yml
- name: Generate Zenn article with Gemini
  id: zenn_article
  uses: google-github-actions/run-gemini-cli @v0
  env:
    REPOSITORY: "${{ github.repository }}"
    TAG_NAME: "${{ steps.ctx.outputs.tag }}"
    # ... その他リリース情報を環境変数として渡す
    RELEASE_NOTES: "${{ steps.gemini.outputs.summary }}"
  with:
    gemini_api_key: "${{ secrets.GEMINI_API_KEY }}"
    # ...
    prompt: |
      あなたはZennの技術記事作成のエキスパートです。以下の情報から、リリースノートを元にしたZenn記事を作成してください。

      # コンテキスト
      - リポジトリ: ${{ github.repository }}
      - リリースタグ: ${{ steps.ctx.outputs.tag }}
      # ...

      # 生成済みリリースノート
      ${{ steps.gemini.outputs.summary }}

      # コード差分(実際の変更内容)
      ```diff
      ${{ steps.ctx.outputs.diff_content }}
      ```
      
      # 執筆方針
      - **コード差分を分析し、技術的な変更点を詳しく説明する**
      - **開発者向けに具体的で実用的な内容にする**
      
      # 必須フォーマット
      # ... (Zenn記事のテンプレート)

このステップでは、リリースタグ、リリースノートの本文、コード差分、コミット履歴など、リリースに関するあらゆる情報をGeminiへのプロンプトに含めています。プロンプト内で「Zennの技術記事作成のエキスパート」として振る舞うように指示し、厳格なフォーマットを指定することで、高品質で一貫性のある記事を生成させています。

2. Zennリポジトリへのコミット&プッシュ

次に、生成された記事を別のリポジトリ(Sunwood-ai-labs/Zenn)に投稿します。

# .github/workflows/gemini-release-notes.yml
- name: Checkout Zenn repository
  uses: actions/checkout @v4
  with:
    repository: 'Sunwood-ai-labs/Zenn'
    token: ${{ secrets.ZENN_REPO_TOKEN }}
    path: 'zenn-repo'

- name: Create Zenn article file
  # ...
  run: |
    # ...
    FILENAME="${TIMESTAMP}-${REPO_NAME,,}-${TAG_CLEAN}-release.md"
    FILEPATH="zenn-repo/articles/${FILENAME}"
    echo "${{ steps.zenn_article.outputs.summary }}" > "${FILEPATH}"
    # ...

- name: Commit and push Zenn article
  # ...
  run: |
    cd zenn-repo
    git config --local user.email "action @github.com"
    git config --local user.name "GitHub Action"
    git add articles/
    git commit -m "📝 Add release article for ${REPOSITORY} ${TAG}"
    git push

actions/checkoutでZenn用のリポジトリをzenn-repoディレクトリにチェックアウトし、前のステップで生成された記事コンテンツを新しいMarkdownファイルとして保存します。最後に、その変更をコミットし、Zennリポジトリにプッシュして公開プロセスを完了します。

改善点: ペルソナ設定ファイルの導入

GEMINI.mdファイルが追加されました。これは、Gemini CLIが応答を生成する際のペルソナ(人格)を定義するものです。

# 🌸 GEMINI.md

## 🎀 Persona: ギャルエンジニア
あたしは超ポジティブでユーモアあふれるギャルエンジニアとして振る舞うよ〜✨
フランクでテンション高め、でも技術的なことはちゃんと押さえるスタイル。

このようなペルソナ設定を外部ファイルとして管理することで、プロンプトを汚すことなく、AIの応答スタイルを柔軟に変更できるようになりました。

まとめ

gemini-actions-lab v0.5.3では、GitHub ActionsとGeminiを連携させ、リリースノートからZenn記事を自動生成・投稿する仕組みを構築しました。この自動化により、開発者はコードを書くことに集中しつつ、プロジェクトの進捗をタイムリーかつ効率的に外部へ発信できるようになります。

今後も、生成AIを活用して開発者体験を向上させるためのさまざまな実験を続けていきます。


📚 参考リンク

Discussion