Environment Variables
All secrets and authentication credentials are configured via environment variables. They are never stored in the config file.
Use this page together with the connector guides: the connector docs explain which credentials, permissions or network requirements apply to each integration.
Skippr authentication
| Variable | When | Description |
|---|---|---|
SKIPPR_API_KEY | CI/CD | Per-user API key for non-interactive authentication. See Authentication. This authenticates the runner to Skippr's cloud-backed control plane. |
SKIPPR_AUTH_URL | Optional | Override the auth service URL (default: https://auth.skippr.io) |
LLM
| Variable | When | Description |
|---|---|---|
LLM_API_KEY | Optional | Override the server-provided LLM key with your own (e.g. to use a different model or provider). When not set, the key is provided after authentication. Schema metadata is the default model input; data samples are optional and off by default. |
Warehouse and source credentials
Each provider has its own set of required environment variables. See the connect guide for your specific setup:
| Provider | Guide |
|---|---|
| Snowflake | Snowflake |
| BigQuery | BigQuery |
| Postgres | PostgreSQL |
| MSSQL | MSSQL |
| Google Analytics (GA4) | |
| Google Search Console | GSC |
| GA4 | |
| Google PageSpeed Insights | |
| SEO Crawl | SEO Crawl |
| PageSpeed | |
| Apple Search Ads | |
| DataForSEO Backlinks | DataForSEO |
| Apple Search Ads | |
| Site Quality | Site Quality |
| Meta Instagram Ads | Meta Instagram Ads |
| S3 | S3 |
Google Analytics (GA4)
| Variable | When | Description |
|---|---|---|
GA4_ACCESS_TOKEN | Bearer auth (local / ad hoc) | Short-lived OAuth 2.0 access token for the Data API (analytics.readonly). Not a GA4 UI key; expires in ~1 hour. How to obtain it. |
GOOGLE_APPLICATION_CREDENTIALS | Service account | Path to a service account JSON key. Create & configure. |
SKIPPR_GA4_FIXTURE_DIR | Offline dev only | Directory of runReport JSON fixtures (see GA4 connector) |
OAuth refresh (alternative to GA4_ACCESS_TOKEN): set GA4_OAUTH_CLIENT_ID, GA4_OAUTH_CLIENT_SECRET, and GA4_OAUTH_REFRESH_TOKEN in the environment (or in skippr.yml / skippr connect). Create & configure.
Google PageSpeed Insights
| Variable | When | Description |
|---|---|---|
PAGESPEED_API_KEY | Required | PageSpeed Insights API key |
SKIPPR_GOOGLE_PAGESPEED_FIXTURE_DIR | Offline dev only | Directory of run_pagespeed_*.json fixtures (see connector) |
Site Quality
| Variable | When | Description |
|---|---|---|
SKIPPR_SITE_QUALITY_FIXTURE_DIR | Offline dev only | Directory of worker result JSON fixtures (see connector) |
SKIPPR_SITE_QUALITY_WORKER_SCRIPT | Optional | Path to site-quality-worker.mjs when not using the default plugin bundle layout |
PLAYWRIGHT_BROWSERS_PATH | Optional | Custom Playwright browser cache directory |
Google Search Console
| Variable | When | Description |
|---|---|---|
GSC_ACCESS_TOKEN | Bearer auth | Short-lived OAuth 2.0 access token (webmasters.readonly) |
GSC_OAUTH_CLIENT_ID | OAuth refresh | Google OAuth client ID for token refresh |
GSC_OAUTH_CLIENT_SECRET | OAuth refresh | OAuth client secret |
GSC_OAUTH_REFRESH_TOKEN | OAuth refresh | Refresh token |
GOOGLE_APPLICATION_CREDENTIALS | Service account | Path to JSON key; add the SA email in Search Console |
SKIPPR_GOOGLE_SEARCH_CONSOLE_FIXTURE_DIR | Offline dev only | Directory of Search Analytics JSON fixtures |
SEO Crawl
| Variable | When | Description |
|---|---|---|
OPENAI_API_KEY | Optional | Enables live OpenAI block analysis when openai_enabled is true |
SKIPPR_SEO_CRAWL_FIXTURE_DIR | Offline dev only | HTML / robots / sitemap fixtures for local runs |
DataForSEO Backlinks
| Variable | When | Description |
|---|---|---|
DATAFORSEO_LOGIN | Required | DataForSEO API login (Basic auth) |
DATAFORSEO_PASSWORD | Required | DataForSEO API password |
SKIPPR_DATAFORSEO_BACKLINKS_FIXTURE_DIR | Offline dev only | Live API response JSON fixtures |
Apple Search Ads
| Variable | When | Description |
|---|---|---|
APPLE_SEARCH_ADS_ORG_ID | Required | Search Ads organization ID |
APPLE_SEARCH_ADS_CLIENT_ID | Required | OAuth client ID |
APPLE_SEARCH_ADS_TEAM_ID | Required | Apple team ID (JWT issuer) |
APPLE_SEARCH_ADS_KEY_ID | Required | API key ID (kid on client-secret JWT) |
APPLE_SEARCH_ADS_PRIVATE_KEY_PATH | Required | Path to EC private key PEM (unless private_key_pem in config) |
APPLE_SEARCH_ADS_ACCESS_TOKEN | Local debug | Bearer token override (skips JWT exchange) |
SKIPPR_APPLE_SEARCH_ADS_FIXTURE_DIR | Offline dev only | Directory of report/list JSON fixtures (see connector) |
Meta Instagram Ads
| Variable | When | Description |
|---|---|---|
META_AD_ACCOUNT_ID | Required | Meta ad account ID (numeric; act_ prefix optional) |
META_INSTAGRAM_ADS_ACCESS_TOKEN | Bearer auth | Long-lived Marketing API access token with ads_read |
META_OAUTH_CLIENT_ID | OAuth refresh | Meta app client ID (or set in skippr.yml) |
META_OAUTH_CLIENT_SECRET | OAuth refresh | Meta app client secret |
META_OAUTH_REFRESH_TOKEN | OAuth refresh | Refresh token for Marketing API |
SKIPPR_META_INSTAGRAM_ADS_FIXTURE_DIR | Offline dev only | Directory of insights JSON fixtures (see connector) |
Optional overrides
| Variable | Default | Description |
|---|---|---|
LLM_BASE_URL | https://api.openai.com | Override the LLM API endpoint |
LLM_HTTP_TIMEOUT_SECS | 1200 | Override the LLM HTTP timeout for slow networks or long-running model calls |
DBT_TARGET_SCHEMA | Same as project | Override the dbt base schema name |
DBT_SILVER_SUFFIX | silver | Override the silver tier suffix |
DBT_GOLD_SUFFIX | gold | Override the gold tier suffix |
