The Marketing Bottleneck
For indie mobile games like CCFish (a Cocos Creator 2.4.15 fishing shooter), the gap between a working build and a marketed release is wider than most developers expect. The code compiles, the game plays, but getting it onto the App Store with proper metadata, screenshots, and release notes still requires manual coordination.
The Solution: Marketing Automation at the Build Level
CCFish already has a 6-stage build pipeline: Cocos build, Xcode archive, version patching, export IPA, and TestFlight upload. But marketing tasks happen outside this pipeline — screenshots are captured manually, release notes are written ad-hoc, and ASO keywords get updated through a browser.
The fix? Extend the pipeline to cover marketing outputs.
Step 1: Automated Screenshot Capture
Using XCUITest, you can script screenshot capture with zero simulator dependency:
```bash
#!/bin/bash
screenshot-pipeline.sh
Requires: xcodebuild + UI test target
DEVICE="iPhone 16 Pro"
LANG="en-US"
xcodebuild test \
-workspace CCFish.xcworkspace \
-scheme "ScreenshotUITests" \
-destination "platform=iOS Simulator,name=$DEVICE" \
-resultBundlePath ./screenshots
echo "Screenshots captured for $DEVICE ($LANG)"
```
Apple's Fastlane `snapshot` tool wraps this into an async pipeline: it opens each screen, snapshots, and saves to a folder. Combined with an overlay script that adds device frames, you get App Store-ready assets in one command.
Step 2: Release Notes from Git Log
Every marketing release needs changelogs. Automate them from structured commit messages:
```bash
git log --oneline --no-decorate v1.0.0..HEAD --format="- %s" | \
grep -E "^(feat|fix|perf)" | \
sed -E 's/^(feat|fix|perf)\(?([^)]*)\)?:/\2:/'
```
This turns a commit like `feat(iap): add consumable purchase flow` into a release note: “IAP: Added consumable purchase flow.”
Step 3: ASO Keyword Optimization as Code
Store ASO keywords in a version-controlled file:
```yaml
keywords.yaml
primary: sea fish shooter fishing game
secondary:
- ocean fishing simulator
- underwater arcade
- fish hunting 2026
- sea creature collector
- casual fishing game
```
A CI job reads this file and updates App Store Connect via Fastlane’s `deliver` or the ASC API. When keywords change, you make a PR. No browser needed.
Architecture Overview
The full marketing automation pipeline:
```
Commit → GitHub Actions
├── Build & Test (existing)
├── Release Notes (git log → markdown)
├── Screenshots (XCUITest → Fastlane snapshot)
└── ASO Keywords (YAML → Fastlane deliver)
→ TestFlight upload
→ Blog post draft (AIKit auto-blog)
```
Each stage is idempotent and runs on every tag push.
Results
For a team shipping weekly builds, this pipeline saves about 3 hours per release — the time needed to manually produce screenshots, write release notes, and chase keywords. Over 52 releases a year, that’s 156 hours reclaimed for actual game development.
Key Takeaways
- Marketing automation doesn’t stop at blog posts and emails. The same principles apply to App Store releases.
- CCFish’s existing CI/CD pipeline is 80% of the way there. Adding screenshot capture and ASO keyword management closes the gap.
- Version-controlled assets (YAML keywords, structured commits) make marketing a build step, not a last-minute panic.