appfigures-cli
Use when querying Appfigures for app store analytics (downloads, revenue, reviews, rankings).
Best use case
appfigures-cli is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Use when querying Appfigures for app store analytics (downloads, revenue, reviews, rankings).
Teams using appfigures-cli should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/appfigures-cli/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How appfigures-cli Compares
| Feature / Agent | appfigures-cli | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Use when querying Appfigures for app store analytics (downloads, revenue, reviews, rankings).
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Appfigures
Pull app store analytics via the Appfigures REST API.
## Authentication
All requests use Bearer token auth:
```
curl -s "https://api.appfigures.com/v2/{route}" \
-H "Authorization: Bearer $APPFIGURES_PAT"
```
## Product IDs
**Bloom (own apps):**
- `$APPFIGURES_BLOOM_IOS_ID` — Bloom: AI for Investing (iOS)
- `$APPFIGURES_BLOOM_ANDROID_ID` — Bloom: AI for Investing (Google Play)
**Bible Genius (own apps):**
- `$APPFIGURES_BG_IOS_ID` — Bible Genius (iOS)
- `$APPFIGURES_BG_ANDROID_ID` — Bible Genius (Google Play)
**Competitors (tracked):**
- `212878126` — Seeking Alpha (iOS)
- `40417581583` — Robinhood (iOS)
- `41519036492` — Robinhood (Google Play)
- `5957199` — Yahoo Finance (iOS)
Use `products={id}` or `products={id1},{id2}` to filter. For Bloom with all IAPs, add `&include_inapps=true`.
## Core Routes
### Sales (downloads, revenue)
```
GET /reports/sales/?start_date={date}&end_date={date}&group_by={pivots}&products={ids}&granularity={daily|weekly|monthly}
```
- `group_by`: products, countries, dates, stores (comma-separated)
- Key fields: `downloads`, `revenue`, `gross_revenue`, `net_downloads`, `uninstalls`
- Date format: `yyyy-mm-dd` or relative (`-7` = 7 days ago, `-1m` = 1 month ago)
### Subscriptions (MRR, churn, trials)
```
GET /reports/subscriptions?start_date={date}&end_date={date}&group_by={pivots}&products={ids}&include_inapps=true
```
- `group_by`: product, country, date, store
- Key fields: `active_subscriptions`, `mrr`, `churn`, `new_trials`, `trial_conversions`, `cancellations`, `actual_revenue`, `paying_subscriptions`
- For Bloom subs, use the app product ID + `include_inapps=true`
### Reviews
```
GET /reviews?products={ids}&count={1-500}&sort=-date&stars={1,2,3,4,5}&lang={iso}
```
- Paginated: `page=N`, check `total` and `pages` in response
- Add `lang=en` to auto-translate non-English reviews
- Fields: `author`, `title`, `review`, `stars`, `date`, `version`, `iso`
### Ratings
```
GET /ratings?products={ids}&countries={iso}&start_date={date}&end_date={date}
```
- Returns snapshot array with `stars: [1star, 2star, 3star, 4star, 5star]` counts
- Default country: US
### Rankings
```
GET /ranks/{product_ids}/{granularity}/{start_date}/{end_date}?countries={iso}
```
- Granularity: `daily` or `hourly`
- Returns positions and deltas per category/country
### Products
```
GET /products/mine
```
- List all tracked products with metadata
## Date Shortcuts
| Shortcut | Meaning |
|----------|---------|
| `-7` | 7 days ago |
| `-1m` | 1 month ago |
| `-1w` | 1 week ago |
| `-1y` | 1 year ago |
| `0` | today |
## Common Queries
**Last 7 days downloads by date (Bloom iOS):**
```bash
curl -s "https://api.appfigures.com/v2/reports/sales/?products=$APPFIGURES_BLOOM_IOS_ID&group_by=dates&start_date=-7&end_date=0" \
-H "Authorization: Bearer $APPFIGURES_PAT"
```
**Current subscription metrics (Bloom, all platforms):**
```bash
curl -s "https://api.appfigures.com/v2/reports/subscriptions?products=$APPFIGURES_BLOOM_IOS_ID,$APPFIGURES_BLOOM_ANDROID_ID&include_inapps=true&start_date=-30&end_date=0" \
-H "Authorization: Bearer $APPFIGURES_PAT"
```
**Recent 1-star reviews:**
```bash
curl -s "https://api.appfigures.com/v2/reviews?products=$APPFIGURES_BLOOM_IOS_ID&stars=1&count=20&sort=-date" \
-H "Authorization: Bearer $APPFIGURES_PAT"
```
**Monthly revenue trend (Bloom, last 6 months):**
```bash
curl -s "https://api.appfigures.com/v2/reports/sales/?products=$APPFIGURES_BLOOM_IOS_ID,$APPFIGURES_BLOOM_ANDROID_ID&group_by=dates&granularity=monthly&start_date=-6m&end_date=0&include_inapps=true" \
-H "Authorization: Bearer $APPFIGURES_PAT"
```
## Output Formatting
- Default output is JSON. Add `&format=csv` for CSV (sales, ranks routes).
- Parse with `python3 -m json.tool` or `jq` for readable output.
- For Signal/chat output, summarize key metrics in bullet points.
## Rate Limits
Each account has a monthly API call limit. Avoid unnecessary repeated calls. Cache results when running multiple analyses in a single session.
## Detailed API Reference
For field definitions and advanced query options, see [references/api-routes.md](references/api-routes.md).Related Skills
writer
Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.
positioning-angles
Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.
outline-generator
Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.
last30days-open
Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.
last30days
Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.
hooks
Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.
evaluate-content
Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.
editor-in-chief
Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.
copywriting
Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.
content-strategy
Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.
content-pipeline
Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).
yt-dlp
Download audio/video from YouTube and other sites using yt-dlp. Use when the user asks to download music, songs, albums, podcasts, or video from YouTube or similar platforms. Triggers on 'download song', 'get mp3', 'yt-dlp', 'youtube download', 'rip audio'.