> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# On your own keys

> Everything Appeeky Spec does without an Appeeky account, and the key or environment variable each part needs.

Much of Appeeky Spec runs on accounts you already have. The providers bill you directly, keys stay on your machine, in your CI secrets or in your server's `.env`, and no Appeeky account is needed.

| What | Commands | Key |
| - | - | - |
| Listings: pull, diff, push, screenshots | `pull`, `diff`, `push`, `screenshots pull` | App Store Connect API key and Google Play service account, saved with the store CLIs |
| Checks, coverage, suggestions | `check`, `coverage`, `suggest`, `report` | None (coverage is not weighted by popularity) |
| App Store ranks for `push` and `verify` | `push`, `verify` | None: Apple's public search |
| App Store category rank | `category pull` | None |
| Website checks and llms.txt | `seo check`, `seo llms` | None |
| AI visibility | `visibility init --local`, `visibility scan --local` | `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, `GEMINI_API_KEY`, `PERPLEXITY_API_KEY` |
| Google Search Console | `seo pull` | `GSC_CREDENTIALS`, `GOOGLE_APPLICATION_CREDENTIALS`, or a gcloud application-default login |
| Google ranks, AI Overviews, keyword data | `seo ranks`, `seo keywords`, `seo domain` | `DATAFORSEO_LOGIN`, `DATAFORSEO_PASSWORD` |
| Apple Search Ads | `search-ads pull`, `ads` | Search Ads key on the App Store Connect CLI account, or `ASA_*` |
| UGC clips | `ugc generate --local` | `FAL_KEY` |
| Install attribution | `attribution init --self`, `data pull`, `verify` | `ATTRIBUTION_TOKEN` for your own Appeeky Analytics server |
| The weekly review | `/appeeky-cofounder` | Your coding agent; in CI or Docker, `CLAUDE_CODE_OAUTH_TOKEN` or `ANTHROPIC_API_KEY` |

These need `APPEEKY_API_KEY`: keyword popularity and opportunities, Google Play ranks and category chart, analytics and revenue in `verify` and `data pull`, reviews, competitors, Meta and TikTok, AI Visibility through Appeeky, social accounts and UGC personas from Appeeky.

Run `doctor` to see what is set up. In CI, add each key as a repository secret; on a server, put it in the [Docker `.env`](https://docs.appeeky.com/docs/spec-self-hosting).

## Store keys

Both store CLIs keep named accounts in your user config (`~/.config/appstore/`, `~/.config/gps/`), never in the repo. `init` offers to save them; by hand:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx -p @appeeky/app-store-connect-cli appstore accounts add my-team \
  --key-id ABC123DEFG --issuer-id <issuer-id> --private-key-path ~/AuthKey_ABC123DEFG.p8 --default
npx -p @appeeky/google-play-store-cli gps accounts add my-co \
  --credentials ~/play-service-account.json --default-package com.example.sleep --default
```

Pick an account per app with `stores.appStore.account` and `stores.googlePlay.account`. In CI, set `ASC_KEY_ID`, `ASC_ISSUER_ID`, `ASC_PRIVATE_KEY` and `GOOGLE_APPLICATION_CREDENTIALS` instead. See [App Store Connect CLI install](https://docs.appeeky.com/docs/store-cli-app-store-connect-install.md) and [Google Play CLI install](https://docs.appeeky.com/docs/store-cli-google-play-install.md).

## AI visibility

Any of these keys adds that assistant:

| Variable | Assistant |
| - | - |
| `OPENAI_API_KEY` | ChatGPT |
| `ANTHROPIC_API_KEY` | Claude |
| `GEMINI_API_KEY` | Gemini |
| `PERPLEXITY_API_KEY` | Perplexity |

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx @appeeky/spec visibility init --local          # intents and prompts from your listing, written into the spec
npx @appeeky/spec visibility scan --local --dry-run
# US  6 intents · 24 prompts × chatgpt, claude, gemini, perplexity · about $2.45
npx @appeeky/spec visibility scan --local
```

`--dry-run` quotes the cost in USD and asks nothing; without it, the scan asks before spending (`--yes` skips the question). `aiVisibility.models` limits which assistants are asked. On a schedule, set `VISIBILITY_EVERY` (days, for example `7`) as a repository variable or in the Docker `.env`; the daily routine runs `visibility scan --local --every $VISIBILITY_EVERY --yes` and scans only when a storefront is due. See [AI answers](https://docs.appeeky.com/docs/spec-ai-visibility.md).

## Google Search Console

1. In Google Cloud, create a service account and enable the Search Console API.
2. In Search Console, add the service account's email as a user of the property.
3. Set `GSC_CREDENTIALS` to the JSON key, or to its path.

On your own machine, `gcloud auth application-default login` with the `webmasters.readonly` and `cloud-platform` scopes works too. In CI, the Google Play service account works as well once its email is a user of the Search Console property. Then:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
npx @appeeky/spec seo pull
```

The property is `web.searchConsole`, or the domain of `web.url`. The daily routine runs `seo pull` when `GSC_CREDENTIALS` is set.

## DataForSEO

With your own [DataForSEO](https://dataforseo.com) account, set `DATAFORSEO_LOGIN` and `DATAFORSEO_PASSWORD` from its API access page.

| Command | Writes | Cost |
| - | - | - |
| `seo ranks` | Google position of the site and the store page, AI Overview citations | About \$0.02 per keyword |
| `seo keywords` | Volume, difficulty, CPC, intent, related ideas | About $0.01 per storefront, plus about $0.014 for each of the first three keywords' related ideas |
| `seo domain` | What the site ranks for, competing sites | About \$0.05 |

Each one quotes with `--dry-run` and asks before spending (`--yes` skips the question). The daily routine runs `seo ranks --every 7 --yes` when `DATAFORSEO_LOGIN` is set; `SEO_RANKS_EVERY` changes the days. The weekly agent is not allowed to run the paid ones.

## Apple Search Ads

1. In Apple Search Ads → Account Settings → User Management, invite an API user with a read role (for example API Account Read Only).
2. Sign in as that user, open Account Settings → API and upload the public key of an EC key pair.
3. Save the key on the same App Store Connect CLI account that holds your App Store Connect key, so the private key never leaves the CLI:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
appstore accounts search-ads my-team --client-id SEARCHADS.… --team-id SEARCHADS.… --key-id … \
  --private-key-path ./searchads-private-key.pem
npx @appeeky/spec search-ads pull
# ✓ appeeky/search-ads/  US Exact, Discovery
#   30 days: 412.80 EUR · 236 installs · 1.75 EUR each · 980 taps
```

Spec uses `stores.appStore.account`, or the CLI's default account. When the key reaches more than one organization, set `stores.appStore.searchAds.orgId`; `campaigns` limits it to some campaigns. In CI, where there is no CLI account, set `ASA_CLIENT_ID`, `ASA_TEAM_ID`, `ASA_KEY_ID` and `ASA_PRIVATE_KEY` (the PEM or its path); they win over the account.

Only the campaigns for `stores.appStore.appId` are read. `ads` and `verify` read `ad_installs` and `cpa` from `appeeky/search-ads/`. The daily routine pulls it when `ASA_CLIENT_ID` is set. Key setup in detail: [Apple Search Ads in the App Store Connect CLI](https://docs.appeeky.com/docs/store-cli-app-store-connect-search-ads.md).

## UGC clips on fal

`ugc generate --local` makes clips where Spec runs, with your own [fal](https://fal.ai) key, instead of in Appeeky with media credits. fal bills your account.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
export FAL_KEY=…                                   # fal.ai → API keys
npx @appeeky/spec ugc generate --local --dry-run   # what each brief costs on fal, in USD
npx @appeeky/spec ugc generate --local             # asks first, then renders
```

The persona is one from Appeeky (needs `APPEEKY_API_KEY`) or one kept in `appeeky/ugc/personas/`. With `FAL_KEY` as a secret, the push workflow and the Docker `push` routine render locally too. See [UGC clips](https://docs.appeeky.com/docs/spec-ugc.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.