一键导入
store-admob
Set up AdMob app and create ad units (banner, interstitial, rewarded) via Python+Playwright automation. Saves ad unit IDs to project config.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Set up AdMob app and create ad units (banner, interstitial, rewarded) via Python+Playwright automation. Saves ad unit IDs to project config.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Install deployment prerequisites and create fastlane directory structure for Expo apps. Use when setting up a new project for store deployment.
Submit app binary to App Store and Google Play via EAS Submit. Handles submission configuration and post-submission metadata upload.
Fill App Store Connect and Google Play Console forms via Python+Playwright automation. Handles age rating, privacy, data safety, content rating, export compliance, IDFA, target audience, and ads declaration.
Build Expo app for production using EAS Build. Supports local and cloud builds for iOS and Android.
Main orchestrator for Expo app store deployment. Use when deploying apps, publishing to stores, or running the full deployment pipeline. Routes to sub-skills: store-setup, store-build, store-screenshots, store-metadata, store-forms, store-submit, store-admob.
Generate and upload store metadata (title, description, keywords, release notes) for App Store and Google Play in multiple languages.
| name | store-admob |
| description | Set up AdMob app and create ad units (banner, interstitial, rewarded) via Python+Playwright automation. Saves ad unit IDs to project config. |
| argument-hint | [ios|android|both] |
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
After setup, walk the user through this checklist. These are account-level items that code alone cannot fix:
app-ads.txt 게시: 개발자 웹사이트 루트에 app-ads.txt를 게시한다
(~/works/seungmanchoi.github.io/app-ads.txt → https://seungmanchoi.github.io/app-ads.txt).
내용은 AdMob Console → 앱 → 모든 앱 보기 → app-ads.txt 탭에서 확인. 형식:
google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0
스토어 리스팅의 "개발자 웹사이트"가 같은 도메인을 가리켜야 크롤링된다. 미게시 시 광고 게재 제한(ad serving limit)으로 직행한다.
스토어 리스팅 연결: 앱 출시 후 AdMob 앱을 스토어 리스팅에 연결한다 (AdMob Console → 앱 설정 → 앱 스토어 세부정보). 미연결/미검증 상태가 길어지면 광고 게재가 제한된다.
테스트 기기 등록: 실제 광고 단위 ID가 들어간 internal/TestFlight 빌드를
배포하기 전, 개발자/테스터 실기기를 setRequestConfiguration({ testDeviceIdentifiers })에
등록한다 (템플릿의 TEST_DEVICE_IDS 상수). 미등록 기기의 클릭은 무효 트래픽으로
집계되어 계정 정지 사유가 된다.
본인 광고 클릭 절대 금지: 프로덕션 빌드에서 본인 광고를 클릭하지 않는다. 스토어 스크린샷 촬영도 테스트 기기/TestIds 상태에서만 진행한다 (실광고 화면 캡처 금지).