review-cat
npx skills add https://github.com/onatcipli/skills --skill review-cat
Agent 安装分布
Skill 文档
ReviewCat
Analyze App Store reviews, generate intelligent replies, and extract competitive insights using Apple’s public and private APIs.
API Access Tiers
ReviewCat works with two tiers of Apple endpoints:
| Tier | Auth | Scope | Reference |
|---|---|---|---|
| Public | None | Any app (read-only reviews, search, lookup) | See apple-endpoints.md §1 |
| Private | JWT (App Store Connect) | Your own apps (full CRUD on reviews + responses) | See apple-endpoints.md §2 |
Choose the tier based on the task:
- Own app â prefer Private API (more data, filtering, responses, summarizations)
- Competitor app â must use Public API (RSS feed, iTunes Search)
- Quick lookup / no auth available â Public API
Workflow 1 â Fetch & Analyze Own App Reviews
- Generate a JWT token (see apple-endpoints.md §2.1)
- Fetch reviews:
GET /v1/apps/{appId}/customerReviews- Use
sort=-createdDatefor newest first - Use
filter[rating]=1,2to focus on negative reviews - Use
filter[territory]=USAfor a specific country - Set
limit=200and paginate vialinks.next
- Use
- For version-specific reviews, first list versions with
GET /v1/apps/{appId}/appStoreVersions, then queryGET /v1/appStoreVersions/{versionId}/customerReviews - Run analysis on collected reviews (see Workflow 5)
Workflow 2 â Fetch Competitor Reviews
- Search for competitor:
GET https://itunes.apple.com/search?term={name}&media=software - Extract
trackIdfrom results - Fetch reviews via RSS:
GET https://itunes.apple.com/{country}/rss/customerreviews/page={1-10}/id={trackId}/sortby=mostrecent/json - Loop pages 1â10 (max 500 reviews per country)
- For multi-country analysis, iterate over country codes:
us,gb,de,fr,jp,au,ca,br,kr,cn - Parse entries from
feed.entry[]â fields:im:rating.label,title.label,content.label,author.name.label,im:version.label
Workflow 3 â Generate Replies to Reviews
Generate context-aware, professional developer responses to customer reviews.
Reply Strategy
| Rating | Tone | Strategy |
|---|---|---|
| 1â2 stars | Empathetic, solution-focused | Acknowledge frustration, offer fix/workaround, invite follow-up |
| 3 stars | Grateful, improvement-oriented | Thank for feedback, highlight upcoming improvements |
| 4â5 stars | Warm, brief | Thank the user, reinforce positive experience |
Instructions
- Read the review’s rating, title, body, and territory
- Identify the core issue or sentiment
- Select reply strategy based on rating
- Draft response following patterns in reply-templates.md
- Post via
POST /v1/customerReviewResponses(private API only)
Constraints
- Max response length: 5,970 characters (Apple’s limit)
- Do NOT include personal information, legal promises, or pricing details
- Always be professional â never argue or be defensive
- Reference specific issues the user raised to show the reply is not generic
- For non-English reviews, respond in the same language as the review
Workflow 4 â Competitor Comparison
Build a competitive analysis comparing your app with competitors.
- Fetch your app’s reviews (Workflow 1) and competitor reviews (Workflow 2)
- For each app, compute:
- Average rating (overall + per version)
- Rating distribution (count per star)
- Sentiment score â ratio of positive (4â5) to negative (1â2) reviews
- Review velocity â reviews per week/month
- Run theme extraction on each app’s reviews (see Workflow 5)
- Identify:
- Your strengths â themes praised in your reviews but criticized in competitors
- Your gaps â themes praised in competitors but criticized in your reviews
- Common pain points â negative themes shared across all apps
- Feature requests â features users ask for across all apps
- Output a structured comparison report (see analysis-prompts.md §competitor-report)
Workflow 5 â Analyze Reviews
Perform deep analysis on a set of collected reviews. See analysis-prompts.md for detailed prompt patterns.
Theme Extraction
Categorize every review into one or more themes:
- Bug report â crashes, errors, broken features
- Feature request â missing functionality users want
- UX complaint â confusing UI, poor navigation, design issues
- Performance â slow, battery drain, storage usage
- Pricing â subscription cost, value perception, payment issues
- Praise â positive feedback on specific features
- Support â customer service experience
For each theme, track: count, average rating, representative quotes, trend direction.
Sentiment Analysis
Classify each review as: positive, neutral, negative, mixed.
Use the following signals:
- Rating (primary signal): 1â2 = negative, 3 = neutral/mixed, 4â5 = positive
- Body text sentiment (secondary signal): override rating when text clearly contradicts it (e.g., 5-star review that says “app is terrible but I accidentally tapped 5 stars”)
Actionable Insights
From the analyzed reviews, extract:
- Top 5 issues â most mentioned negative themes, sorted by frequency
- Top 5 praised features â most mentioned positive themes
- Trending issues â themes increasing in frequency over recent reviews
- Quick wins â issues that appear fixable and are frequently mentioned
- Feature demand â requested features ranked by mention count
Workflow 6 â Executive Summary Report
Generate a concise report for stakeholders.
Report Structure
## Review Summary â {App Name} â {Date Range}
### Key Metrics
- Total reviews: {n}
- Average rating: {x.x}/5
- Rating distribution: â
5: {n} | â
4: {n} | â
3: {n} | â
2: {n} | â
1: {n}
- Sentiment: {x}% positive, {x}% neutral, {x}% negative
### Top Issues
1. {Issue} â {count} mentions â "{representative quote}"
2. ...
### Top Praise
1. {Feature} â {count} mentions â "{representative quote}"
2. ...
### Trending
- â Increasing: {themes getting worse}
- â Decreasing: {themes improving}
### Recommendations
1. {Actionable recommendation based on data}
2. ...
Workflow 7 â Rating Trend Monitoring
Track how ratings change over time.
- Fetch reviews with
sort=createdDateto get chronological order - Group reviews by time period (day/week/month)
- Compute per-period: average rating, review count, sentiment ratio
- Identify inflection points â sudden drops/spikes in rating
- Correlate with app version releases (use
im:versionfrom RSS or version endpoint from private API) - Flag anomalies: rating drop > 0.5 stars, negative review spike > 2x average
Pagination Reference
Private API (App Store Connect)
Cursor-based. Follow links.next URL until absent:
url = f"https://api.appstoreconnect.apple.com/v1/apps/{app_id}/customerReviews?limit=200&sort=-createdDate"
all_reviews = []
while url:
resp = requests.get(url, headers={"Authorization": f"Bearer {token}"})
data = resp.json()
all_reviews.extend(data["data"])
url = data.get("links", {}).get("next")
Public API (RSS Feed)
Page-based. Iterate pages 1â10:
for page in range(1, 11):
url = f"https://itunes.apple.com/{country}/rss/customerreviews/page={page}/id={app_id}/sortby=mostrecent/json"
resp = requests.get(url)
entries = resp.json().get("feed", {}).get("entry", [])
if not entries:
break
all_reviews.extend(entries)
Rate Limits
| Endpoint | Limit | Backoff Strategy |
|---|---|---|
| App Store Connect API | Undocumented â use moderate pace | Exponential backoff on 429/503 |
| iTunes Search / Lookup | ~20 req/min | Wait 3s between calls |
| RSS Feed | Undocumented â can get 403 | Wait 5s between country iterations |
Quick Reference â Endpoint Cheat Sheet
| Task | Method | Endpoint | Auth |
|---|---|---|---|
| Search apps | GET | itunes.apple.com/search?term=...&media=software |
Public |
| Lookup app | GET | itunes.apple.com/lookup?id=... |
Public |
| Public reviews | GET | itunes.apple.com/{cc}/rss/customerreviews/page={p}/id={id}/sortby=mostrecent/json |
Public |
| List reviews | GET | /v1/apps/{id}/customerReviews |
JWT |
| Version reviews | GET | /v1/appStoreVersions/{id}/customerReviews |
JWT |
| Single review | GET | /v1/customerReviews/{id} |
JWT |
| Get response | GET | /v1/customerReviews/{id}/response |
JWT |
| Post response | POST | /v1/customerReviewResponses |
JWT |
| Delete response | DELETE | /v1/customerReviewResponses/{id} |
JWT |
| Summarizations | GET | /v1/apps/{id}/customerReviewSummarizations |
JWT |
| List versions | GET | /v1/apps/{id}/appStoreVersions |
JWT |
For full endpoint details, parameters, and authentication setup, see apple-endpoints.md.