skills/tamtom/gplay-cli-skills/gplay-review-management

gplay-review-management

SKILL.md

Review Management for Google Play

Use this skill when you need to monitor and respond to user reviews.

List Reviews

Get all reviews

gplay reviews list --package com.example.app

Get all reviews with pagination

gplay reviews list --package com.example.app --paginate

Table output (human-readable)

gplay reviews list \
  --package com.example.app \
  --output table

Filter Reviews

By rating

# Get 1-star reviews
gplay reviews list --package com.example.app \
  | jq '.reviews[] | select(.rating == 1)'

# Get 5-star reviews
gplay reviews list --package com.example.app \
  | jq '.reviews[] | select(.rating == 5)'

# Get reviews with 3 stars or less
gplay reviews list --package com.example.app \
  | jq '.reviews[] | select(.rating <= 3)'

By date

# Reviews from last 7 days
DATE_7_DAYS_AGO=$(date -u -v-7d +%Y-%m-%dT%H:%M:%SZ)
gplay reviews list --package com.example.app \
  | jq --arg date "$DATE_7_DAYS_AGO" \
    '.reviews[] | select(.comments[0].userComment.lastModified.time > $date)'

By language

# English reviews only
gplay reviews list --package com.example.app \
  | jq '.reviews[] | select(.comments[0].userComment.language == "en")'

Reviews containing keywords

# Find reviews mentioning "crash"
gplay reviews list --package com.example.app \
  | jq '.reviews[] | select(.comments[0].userComment.text | contains("crash"))'

Get Specific Review

gplay reviews get \
  --package com.example.app \
  --review REVIEW_ID

Reply to Reviews

Reply to single review

gplay reviews reply \
  --package com.example.app \
  --review REVIEW_ID \
  --text "Thank you for your feedback! We've fixed this issue in version 1.2.3."

Reply templates

Bug report response:

gplay reviews reply \
  --package com.example.app \
  --review REVIEW_ID \
  --text "Thank you for reporting this issue. We've identified the problem and a fix will be available in the next update. Please update to version X.X.X when it's released."

Feature request response:

gplay reviews reply \
  --package com.example.app \
  --review REVIEW_ID \
  --text "Thank you for your suggestion! We've added this to our roadmap and will consider it for a future release."

Positive review response:

gplay reviews reply \
  --package com.example.app \
  --review REVIEW_ID \
  --text "Thank you so much for your kind words! We're glad you're enjoying the app."

Crash report response:

gplay reviews reply \
  --package com.example.app \
  --review REVIEW_ID \
  --text "We're sorry you experienced a crash. This issue has been fixed in version X.X.X. Please update and let us know if you continue to have problems."

Automated Review Response

Script to reply to unreplied 1-star reviews

#!/bin/bash

PACKAGE="com.example.app"

# Get all unreplied 1-star reviews
gplay reviews list --package $PACKAGE --paginate \
  | jq -r '.reviews[] | select(.rating == 1 and (.comments | length == 1)) | .reviewId' \
  | while read REVIEW_ID; do
    echo "Replying to review: $REVIEW_ID"
    gplay reviews reply \
      --package $PACKAGE \
      --review "$REVIEW_ID" \
      --text "Thank you for your feedback. We're sorry to hear about your experience. Please email support@example.com so we can help resolve this issue."
  done

Review Analytics

Count reviews by rating

gplay reviews list --package com.example.app --paginate \
  | jq '[.reviews[] | .rating] | group_by(.) | map({rating: .[0], count: length})'

Average rating calculation

gplay reviews list --package com.example.app --paginate \
  | jq '[.reviews[].rating] | add / length'

Most common words in reviews

gplay reviews list --package com.example.app --paginate \
  | jq -r '.reviews[].comments[0].userComment.text' \
  | tr '[:upper:]' '[:lower:]' \
  | tr -s ' ' '\n' \
  | sort | uniq -c | sort -rn | head -20

Monitor for Specific Issues

Find crash-related reviews

gplay reviews list --package com.example.app --paginate \
  | jq '.reviews[] | select(.comments[0].userComment.text | test("crash|freeze|hang"; "i"))'

Find reviews mentioning competitors

gplay reviews list --package com.example.app --paginate \
  | jq '.reviews[] | select(.comments[0].userComment.text | test("competitor_name"; "i"))'

Find reviews with refund requests

gplay reviews list --package com.example.app --paginate \
  | jq '.reviews[] | select(.comments[0].userComment.text | test("refund|money back"; "i"))'

Review Response Best Practices

DO:

  • ✅ Respond within 24-48 hours
  • ✅ Be professional and empathetic
  • ✅ Acknowledge the issue
  • ✅ Provide a solution or timeline
  • ✅ Thank users for feedback
  • ✅ Personalize responses when possible

DON'T:

  • ❌ Argue with users
  • ❌ Use template responses for everything
  • ❌ Ignore negative reviews
  • ❌ Make promises you can't keep
  • ❌ Be defensive
  • ❌ Copy-paste the same response to every review

Response Templates

General bug fix

Thank you for reporting this. We've identified the issue and it will be fixed in our next update (version X.X.X). We appreciate your patience!

Already fixed

Thank you for your feedback! This issue has been resolved in our latest version (X.X.X). Please update your app and let us know if you continue to experience any problems.

Need more info

Thank you for your feedback. We'd like to help resolve this issue. Could you please email us at support@example.com with more details about what happened? This will help us investigate further.

Feature request

Thank you for the suggestion! We've added this to our feature backlog and will consider it for a future release. Please keep the feedback coming!

Positive review

Thank you so much! We're thrilled to hear you're enjoying the app. If you have any suggestions for improvements, we'd love to hear them!

Monitoring Dashboard

Create a simple review dashboard:

#!/bin/bash
PACKAGE="com.example.app"

echo "=== Review Dashboard ==="
echo ""

# Total reviews
TOTAL=$(gplay reviews list --package $PACKAGE --paginate | jq '.reviews | length')
echo "Total reviews: $TOTAL"

# Rating distribution
echo ""
echo "Rating distribution:"
gplay reviews list --package $PACKAGE --paginate \
  | jq -r '.reviews[] | .rating' \
  | sort | uniq -c | sort -rn

# Avg rating
AVG=$(gplay reviews list --package $PACKAGE --paginate \
  | jq '[.reviews[].rating] | add / length')
echo ""
echo "Average rating: $AVG"

# Unreplied reviews
UNREPLIED=$(gplay reviews list --package $PACKAGE --paginate \
  | jq '[.reviews[] | select(.comments | length == 1)] | length')
echo ""
echo "Unreplied reviews: $UNREPLIED"

# Recent 1-star
echo ""
echo "Recent 1-star reviews:"
gplay reviews list --package $PACKAGE \
  | jq -r '.reviews[] | select(.rating == 1) | "\(.comments[0].userComment.lastModified.time): \(.comments[0].userComment.text)"' \
  | head -5

Scheduled Review Check

Daily review check (cron)

# Add to crontab
0 9 * * * /path/to/check-reviews.sh

check-reviews.sh

#!/bin/bash
PACKAGE="com.example.app"

# Get unreplied 1-star and 2-star reviews
UNREPLIED=$(gplay reviews list --package $PACKAGE \
  | jq '[.reviews[] | select(.rating <= 2 and (.comments | length == 1))] | length')

if [ "$UNREPLIED" -gt 0 ]; then
  echo "⚠️  You have $UNREPLIED unreplied negative reviews!"
  # Send notification (email, Slack, etc.)
fi

Integration with Support System

Forward reviews to support email:

#!/bin/bash
# Get reviews mentioning "support" or "help"
gplay reviews list --package com.example.app --paginate \
  | jq -r '.reviews[] | select(.comments[0].userComment.text | test("support|help"; "i")) |
    "Review ID: \(.reviewId)\nRating: \(.rating)\nText: \(.comments[0].userComment.text)\n---"' \
  | mail -s "Support Reviews" support@example.com
Weekly Installs
25
GitHub Stars
6
First Seen
Feb 5, 2026
Installed on
codex25
github-copilot24
opencode24
gemini-cli22
claude-code21
kimi-cli20