Install
openclaw skills install @rafalzawadzki/find-app-ideasFinds underserved App Store / Google Play niches with live AppGoat data - search demand (keyword popularity) against weak supply (low ratings, abandoned incumbents, few strong apps) - and returns a ranked shortlist of app ideas with evidence and user pain points.
openclaw skills install @rafalzawadzki/find-app-ideasTurns "what should I build?" into a ranked shortlist of niches where people search a lot and the existing apps are weak. Each pick comes with the numbers behind it and what users of the current apps complain about, so the idea has a wedge.
Everything is built from the public read tools (charts, keyword research, apps, search, reviews), so it runs on every plan.
app-audit-lite or aso-keywords-metadata-rewrite).niche (optional): a seed area or idea, e.g. habit tracker, plant care, finance for couples.
Without it, start from the charts (step 1).store (optional, default apple): apple or play. Run once per store; demand differs.country (optional, default us).Ask at most one question before starting: whether the user has constraints (solo dev, no backend, paid vs free). Otherwise assume a solo developer shipping in 4–8 weeks.
Costs in AppGoat credits; watch the footer of each tool result. Without the MCP, use the REST equivalents in reference/api.md.
niche: write 8–10 seed terms a user would type into the store (2–3 words, no brand names).niche: get_charts {store, country, chart: "free", category} and {chart: "grossing"} for
4 categories (Apple genre ids: 6013 Health & Fitness, 6007 Productivity, 6017 Education,
6012 Lifestyle; Play: HEALTH_AND_FITNESS, PRODUCTIVITY, EDUCATION, LIFESTYLE) - 8 calls, 8 credits.
Take apps with is_new or delta ≥ 10 and the grossing apps outside the top 20 free; derive
8–10 seed terms from what they do.keyword_research {terms: 5 seeds, store, country, include: ["related", "suggestions"]},
twice for 10 seeds - 5 per seed, 50 credits. Collect related terms and suggestions.keyword_research {terms: 25 terms, store, country,
include: ["top_apps"]} - 1 per keyword, 25 credits. Terms that come back pending are being
measured: call again with just those after a minute (charged again only for those).get_app {app: <app_id>, store,
country} for the top 3 top_apps of each - ~24 credits - to read updated_at, rating,
ratings_count, price, has_iap. Optionally search_apps {q: term, store, limit: 20} - 1 each -
to count how many apps target it directly by title.get_reviews {app: , store, country,
rating: "1-2", limit: 100} for the top 2 incumbents - ~10 credits. Group complaints into themes.Budget: about 150–200 credits per run (up to ~250 with refreshes and re-measured pending terms).
Stop early if credits_remaining falls below the remaining budget and tell the user.
popularity × (1 − difficulty/100) × supply_weakness, where
supply_weakness = 1 + 0.25 per weak-supply condition met (max 2).# App ideas: <niche or "chart scan"> (<store>, <country>) - <date>
| # | Idea | Key term | Popularity | Difficulty | Top-10 median ★ | Stale incumbents | Score |
|---|---|---|---|---|---|---|---|
| 1 | ADHD-friendly habit tracker | adhd habit tracker | 41 | 28 | 4.1 | 4 of 10 | 39.4 |
## 1. <Idea>
- **Demand:** <term> (pop 41), <term 2> (pop 33), related: <terms>
- **Supply:** top apps <name (4.0★, updated 2024-11)>, …; only 1 of 10 has the term in its title.
- **Wedge:** users complain about <theme> ("<≤ 120-char quote>", 2★) and <theme>.
- **Money:** <who charges what>.
- **MVP in one line:** <scope a solo dev can ship in 4-8 weeks>.
- **Launch keywords:** title "<≤ 30 chars>", subtitle "<≤ 30 chars>".
## Near misses
- <term>: popularity 58 but difficulty 81 and top apps average 4.7★.
_Credits used: <sum of the footers>._
**Automate this →** re-run monthly to see new movers; once you pick one, track its keywords with
`track_keywords` and run `aso-keywords-metadata-rewrite` before launch.
A monthly scan that opens an issue with new picks.
GitHub Action (.github/workflows/appgoat-ideas.yml, secrets ANTHROPIC_API_KEY, APPGOAT_API_KEY):
name: AppGoat app ideas
on:
schedule:
- cron: "0 8 1 * *"
workflow_dispatch:
inputs:
niche:
description: Seed niche (optional)
required: false
permissions:
contents: read
issues: write
jobs:
ideas:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install AppGoat playbooks and MCP config
env:
APPGOAT_API_KEY: ${{ secrets.APPGOAT_API_KEY }}
run: |
git clone --depth 1 https://github.com/appgoat/skills /tmp/appgoat-skills
mkdir -p .claude/skills
cp -r /tmp/appgoat-skills/skills/* .claude/skills/
# Hosted AppGoat MCP server; the key goes into a file, not the command line.
jq -n --arg key "$APPGOAT_API_KEY" \
'{mcpServers: {appgoat: {type: "http", url: "https://api.appgoat.ai/mcp", headers: {"x-api-key": $key}}}}' \
> "$RUNNER_TEMP/appgoat-mcp.json"
- uses: anthropics/claude-code-action@v1
env:
GH_TOKEN: ${{ github.token }}
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
Use the find-app-ideas skill with niche "${{ inputs.niche }}" (empty = chart scan), store apple, country us.
Open one GitHub issue titled "App ideas <YYYY-MM>" with the report as the body (gh issue create).
claude_args: |
--mcp-config ${{ runner.temp }}/appgoat-mcp.json
--allowedTools mcp__appgoat__get_charts,mcp__appgoat__keyword_research,mcp__appgoat__get_app,mcp__appgoat__search_apps,mcp__appgoat__get_reviews,mcp__appgoat__get_job,Bash(gh issue create:*)
Claude Code routine:
/schedule monthly on the 1st at 09:00 - Run the find-app-ideas playbook for the niche "<niche>" on the App Store, US. Compare with last month's picks (in ideas/), highlight new entries and dropped ones, and save the report as ideas/<YYYY-MM>.md.