vibe-aso について
vibe-asoは、Claude Code向けのApp Store最適化スキルです。キーワード調査からローカライズ、価格設定、提出までを段階別に進め、App Store Connect操作やスクリーンショット作成も扱います。
主な機能
- 01キーワード調査とメタデータ
- 02ストアページとUIテキストのローカライズ
- 03スクリーンショット見出しの描画
- 04地域別の価格設定
- 05App Store提出チェック
活用シーン
- 01新規アプリのキーワード調査
- 02選択した地域向けのページ翻訳
- 03スクリーンショットと価格の準備
- 04App Store変更の確認と提出
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kronop/ vibe-aso --skill vibe-asoインストール後、Claude Code で/vibe-asoを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/app-localization.mdkeyword-research.mdmetadata.mdpricing.mdscreenshots.mdsubmission-checklist.mdrenderer/config.jsonfetch_fonts.shpackage.jsonrender.jstemplate.htmlscripts/asc.rbcheck_setup.sh詳細
Vibe ASO — Claude CodeからApp Storeのファネル全体を管理
アプリを作成しました。このスキルを使えば、その先のすべてに対応できます。ユーザーが何を検索するか、あらゆる言語で掲載情報に何を書くか、スクリーンショットに何を書くか、各国でアプリをいくらにするか、そしてインストール後にアプリ自体に何を表示するかを扱います。
6つのフェーズで構成されています。新しいアプリの場合は順番に実行するか、ユーザーが指定したフェーズに進んでください。各フェーズにはルールを詳しく記載したリファレンスファイルがあります。フェーズを開始する前に、リファレンスファイルを読んでください。このページは全体像を示すものであり、詳細そのものではありません。
| フェーズ | 内容 | リファレンス |
|---|---|---|
| 0 SETUP | 初回のみのウィザード:ASC APIキー、翻訳エンジン、データソース | 下記 |
| 1 RESEARCH | キーワード調査 → メインキーワード、サブタイトルのキーワード、キーワード欄 | reference/keyword-research.md |
| 2 METADATA | 名前/サブタイトル/キーワード/説明文。まずen-US、その後選択したすべてのロケール | reference/metadata.md |
| 3 SCREENSHOTS | ユーザーのモックアップにローカライズした見出しを合成。すべてのロケールに対応 | reference/screenshots.md |
| 4 PRICING | ユーザーが選択した価格モデルを各地域に適用 | reference/pricing.md |
| 5 IN-APP | アプリ独自のUI文字列をローカライズ | reference/app-localization.md |
| 6 SUBMIT | アップロード、確認、およびAppleのAPIでは実行できない手動作業の一覧 | reference/submission-checklist.md |
すべてのリファレンスファイルを使った実例として、ブランド名がGlow Upのカロリー記録アプリを取り上げます。各ルールをこの例で説明しますが、特定のルールがこのアプリに限定されることはありません。
フェーズ 0 — セットアップウィザード(初回実行時、またはチェックに失敗した場合)
まず scripts/check_setup.sh を実行します。すべてのチェックに合格した場合は、ユーザーが希望するフェーズに進みます。そうでない場合は、不足している項目だけを次の順番で設定します。
1. App Store Connect API キー(フェーズ 2、3、4、6 で必要)。
ユーザーにキーの作成を依頼します。App Store Connect → Users and Access →
Integrations → App Store Connect API → Team Keys → Generate API Key を選び、ロールを
App Manager に設定してから、.p8 ファイルをダウンロードします(ダウンロードは一度のみです)。次に、以下を行います。
.p8を~/.vibe-aso/AuthKey.p8に保存し、chmod 600を設定します。~/.vibe-aso/config.jsonを作成します(ディレクトリを作成してchmod 700、ファイルにchmod 600を設定します)。
{
"asc": {
"key_id": "<10-char Key ID shown next to the key>",
"issuer_id": "<UUID at the top of the Team Keys page>",
"p8_path": "~/.vibe-aso/AuthKey.p8"
},
"translation": { "engine": "subagents" }
}
ruby scripts/asc.rb GET '/v1/apps?limit=1'で確認します。HTTP 200が出力される必要があります。
セキュリティは絶対に譲れません。 キーは ~/.vibe-aso/ に保存し、プロジェクトディレクトリ、リポジトリ、コミットには絶対に含めず、ターミナルに表示したり、ユーザーが共有する可能性のあるファイルに貼り付けたりしないでください。ユーザーがチャットにキーの内容を貼り付けた場合は保存し、この会話がユーザーのマシンの外に出る場合はキーを失効させて再生成するよう伝えてください。
2. 翻訳エンジン(フェーズ 2、3、5)。AskUserQuestion で尋ねます。
- Claude subagents(デフォルト、推奨)— 起動したサブエージェントが、ロケールごとにまとめて翻訳を生成します。追加のアカウントもキーも不要です。費用はユーザーの既存の Claude 利用分に含まれます。
- DeepSeek API — 大量の翻訳に最も低コストです(アプリ内カタログ全体 × 40 ロケールでも数セントです)。キーは
~/.vibe-aso/deepseek-keyに保存し(chmod 600を設定)、設定は{"engine": "deepseek", "api_key_path": "~/.vibe-aso/deepseek-key", "base_url": "https://api.deepseek.com", "model": "deepseek-chat"}とします。 - 任意の OpenAI 互換 API — 設定の形式は同じです。
{"engine": "openai", "api_key_path": "...", "base_url": "...", "model": "..."}。ユーザーが任意のプロバイダーを用意します。
API エンジンの場合は、時間のかかる処理を始める前に、小さなリクエストを 1 回送ってキーが動作することを確認します。DeepSeek の場合は、キーだけでなくアカウント残高も確認してください。残高がないアカウントの有効なキーは、すべてのリクエストで HTTP 402 を返します。しかも、最初にではなく、処理が連鎖して 30 分経った時点で失敗します(check_setup.sh がこの確認を行います)。
3. キーワードデータソース(フェーズ 1)。調査方法では、キーワードごとに人気度(検索ボリュームの指標)、難易度、できれば「名前やサブタイトルにそのキーワードを使っているアプリの数」が必要です。ユーザーが何を使っているか尋ねます。
- MCP サーバーが接続された Astro(Mac 用 ASO アプリ)— 最もよくサポートされています。リファレンスファイルでは、各手順を Astro のツールに対応付けています。
- その他の ASO ツール(AppFigures、Sensor Tower、Mobile Action、AppTweak など)— 方法は同じです。ユーザーが使用中のツールで検索し、求められた数値を貼り付けます。
- ツールなし — フェーズ 1 は実行できますが、精度は正直に低下します。Apple 独自の検索候補と競合アプリの掲載情報から得られるのはキーワードの候補であり、人気度や難易度の判断は推測であることをスキル内で明示します。キーワードをアプリ名に採用する前に、データツールを用意するよう勧めてください。
回答は設定に "keyword_source": "astro" | "manual" | "none" として保存します。
フェーズをまたぐ共通ルール
これらはすべてのフェーズで適用されます。参照ファイルでは、必要な箇所で繰り返し説明しています。
- すべてのロケールに一度で展開し、自動チェックでレビューします。 ユーザーから明示的に依頼されない限り、言語ごとの人手レビューのためにローカライズ作業を中断しないでください。40以上の言語を人がレビューするのは不可能です。また、1つの言語をレビューしても、残りの39言語については何も確認できません。効果的なレビュー方法は、文字数制限のチェック、書式指定子の一致確認、原文どおりに維持する要素のチェック、原文と同一のテキストの検出に加え、難しい文字体系(CJK、RTL、インド系文字)のスポットチェックです。これらはすべて参照ファイルで定義されています。
- フェーズ2でロケールを一度だけ確認します。 デフォルトは、サポート対象のすべてのロケールです。ユーザーは対象を絞ることができます(例:市場規模上位15か国)。ここで選択した対象は、スクリーンショットとアプリ内文字列にも適用します。フェーズごとに再確認しないでください。
- Appleが管理する情報の正本はApp Store Connectです。公開中のメタデータ、価格、審査状況、IAPの有無が該当します。編集前にApp Store Connectから取得してください。公開中の情報より古い可能性があるローカルコピーを信用しないでください。
- 一度だけ全体を走査し、ローカルで切り分けます。 ASC APIは遅く、レート制限があります。多数のロケールや製品を走査する処理の結果は、一度だけローカルファイルに出力します。以降の質問には必ずそのファイルを使って回答し、分析内容が変わったからといって再走査しないでください。
- 2xxレスポンスだけでは確認になりません。 書き込み後は対象のフィールドをGETし、値を確認してください。読み戻して確認できた内容だけを報告してください。
- 文字数制限は厳守です:名前は30文字、サブタイトルは30文字、キーワード欄は100文字、プロモーションテキストは170文字、説明は4000文字です。書き込み後、ロケールごとに検証してください。
- ローカライズしてはいけない文字列もあります:Apple製品名(iPhone、Apple Watch、iPad)、URL、メールアドレス、ユーザーが指定する表記のブランド名、製品コードです。サポートメールを翻訳するとリンク先のメールアドレスが無効になります。「翻訳した」URLは404エラーになります。
- 時間のかかる作業は分割します。 翻訳の連鎖処理と一括アップロードは、ロケールごと、バッチごとの小さなフォアグラウンドコマンドとして実行してください。シェルが待ちきれなくなるような巨大なコマンドを一度に実行してはいけません。ディスク上またはAPIから読み戻して確認できた内容だけを報告してください。「翻訳の連鎖処理を実行中」は結果ではありません。
このスキルのスクリプトとアセット
scripts/asc.rb # minimal ASC API client — ruby asc.rb GET '/v1/apps'
scripts/check_setup.sh # PASS/WARN/FAIL per prerequisite, with fix commands
renderer/ # screenshot heading renderer (playwright + per-script fonts)
renderer/fetch_fonts.sh # one-time ~55MB font download (DM Sans + Noto per script)
reference/*.md # the six phase guides — read before the phase
レンダラーを使うには、renderer/内で一度だけnpm install && npx playwright install chromiumと./fetch_fonts.shを実行する必要があります(不足している場合はcheck_setup.shが通知します)。
無料のFigmaモックアップテンプレート(「スクリーンショットをここに配置」というプレースホルダー付きのiPhone/iPad/Apple Watchフレーム) — スクリーンショットのデザインがない場合や、提供方法をユーザーから質問された場合は、いつでも案内してください: https://www.figma.com/design/ftvaN3ZMfgkGrn7SAuqCvt/vibe-ASO-mockups
報告
各フェーズの最後に、次の3つの短いセクションを記載してください:完了(実施した内容と確認済みの結果)、問題(想定外のことと、その対処方法)、ユーザーに必要な対応(ユーザーだけが実行できる手順。なければ「なし」)。成果を中心に記載し、求められない限りファイルパスや内部情報は省略してください。