skills/store-admob/SKILL.md
Set up AdMob app and create ad units (banner, interstitial, rewarded) via Python+Playwright automation. Saves ad unit IDs to project config.
npx skillsauth add seungmanchoi/store-deploy-plugin store-admobInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill sets up AdMob using Python scripts with Playwright (NOT Playwright MCP). Zero LLM token cost for browser automation.
python3 ${PLUGIN_DIR}/scripts/credentials_manager.py --show
If not configured:
python3 ${PLUGIN_DIR}/scripts/credentials_manager.py --setup
Read app.json to extract:
Ask the developer:
IMPORTANT: Tell the user:
"Browser will open. Please log into AdMob (https://apps.admob.com) if prompted."
python3 ${PLUGIN_DIR}/scripts/admob_setup.py \
--app-name "{APP_NAME}" \
--platform both \
--bundle-id {BUNDLE_ID} \
--package-name {PACKAGE_NAME} \
--project .
python3 ${PLUGIN_DIR}/scripts/admob_setup.py \
--app-name "{APP_NAME}" \
--platform ios \
--bundle-id {BUNDLE_ID} \
--project .
python3 ${PLUGIN_DIR}/scripts/admob_setup.py \
--app-name "{APP_NAME}" \
--platform android \
--package-name {PACKAGE_NAME} \
--project .
python3 ${PLUGIN_DIR}/scripts/admob_setup.py \
--app-name "{APP_NAME}" \
--platform both \
--bundle-id {BUNDLE_ID} \
--package-name {PACKAGE_NAME} \
--ad-types banner,interstitial \
--project .
python3 ${PLUGIN_DIR}/scripts/admob_setup.py \
--app-name "{APP_NAME}" \
--platform both \
--bundle-id {BUNDLE_ID} \
--package-name {PACKAGE_NAME} \
--output typescript \
--project .
python3 ${PLUGIN_DIR}/scripts/admob_setup.py --app-name "My App" --dry-run
The script saves AdMob IDs to store-deploy.json:
{
"admob": {
"ios": {
"app_id": "ca-app-pub-XXXXX~XXXXX",
"ad_units": {
"banner": "ca-app-pub-XXXXX/XXXXX",
"interstitial": "ca-app-pub-XXXXX/XXXXX",
"rewarded": "ca-app-pub-XXXXX/XXXXX"
}
},
"android": {
"app_id": "ca-app-pub-XXXXX~XXXXX",
"ad_units": {
"banner": "ca-app-pub-XXXXX/XXXXX",
"interstitial": "ca-app-pub-XXXXX/XXXXX",
"rewarded": "ca-app-pub-XXXXX/XXXXX"
}
}
}
}
If --output typescript was used, also check src/shared/config/admob.ts.
Read the output file and confirm the IDs are populated. If any are empty, the script encountered issues — check ~/.store-deploy/error-screenshots/.
If the project uses react-native-google-mobile-ads, help configure:
app.json:{
"expo": {
"plugins": [
["react-native-google-mobile-ads", {
"androidAppId": "ca-app-pub-XXXXX~XXXXX",
"iosAppId": "ca-app-pub-XXXXX~XXXXX"
}]
]
}
}
AdMob Setup Complete
====================
iOS App ID: ca-app-pub-XXXXX~XXXXX
Android App ID: ca-app-pub-XXXXX~XXXXX
Ad Units:
banner: ca-app-pub-XXXXX/XXXXX (iOS) / ca-app-pub-XXXXX/XXXXX (Android)
interstitial: ca-app-pub-XXXXX/XXXXX (iOS) / ca-app-pub-XXXXX/XXXXX (Android)
rewarded: ca-app-pub-XXXXX/XXXXX (iOS) / ca-app-pub-XXXXX/XXXXX (Android)
Config saved to: store-deploy.json
development
Submit app binary to App Store and Google Play via EAS Submit. Handles submission configuration and post-submission metadata upload.
devops
Install deployment prerequisites and create fastlane directory structure for Expo apps. Use when setting up a new project for store deployment.
tools
Generate and process store screenshots for App Store and Google Play. Supports simulator capture, AI generation (nano-banana-mcp), and Pillow post-processing with text overlays.
development
Generate and upload store metadata (title, description, keywords, release notes) for App Store and Google Play in multiple languages.