ZReviewTender
ZReviewTender fetches app reviews from the App Store and Google Play Console using the new Stability API, and resends them to Slack or integrates with your workflow.
Install / Use
/learn @ZhgChgLi/ZReviewTenderREADME

ZReviewTender retrieves app reviews from the App Store and Google Play Console using the new Stability API, then sends them to Slack or integrates seamlessly into your workflow.
Features
- [x] Fetches App Store reviews for both iOS and macOS apps
- [x] Retrieves Google Play Console reviews for Android apps
- [x] Sends the latest reviews to a designated Slack channel
- [x] Automatically translates review content into your preferred language using Google Translate
- [x] Logs reviews to Google Sheets or Asana tasks automatically
- [x] Offers flexible extensions, allowing you to create your own processors (plugins) tailored to your workflow
- [x] Lightweight implementation that only logs the latest review timestamp, avoiding the need to store all reviews locally
- [x] Supports filtering, enabling you to set custom conditions to exclude unwanted reviews
- [x] Built on official APIs (AndroidpublisherV3 and the new AppStoreConnect API), eliminating workarounds and session expiration issues
- [x] Easily deployable using the GitHub Repo Template/GitHub Action
- [x] 100% Ruby@RubyGem
Result

Compare with Similar Services
| | ZReviewTender | Appreviewbot.com | Reviewbot.io | Aappbot.co | Appfollow.io | Appfigures.com | |--------------------------------------|------------------------------|------------------|----------------------------------|----------------------------------|---------------------------------|----------------| | Pricing for 2 Apps (Android & iOS) | Forever Free, No Limit | $11.99/month | $5/month | $39/month | $0 | $7.99/month | | Service Type | PaaS | SaaS | SaaS | SaaS | SaaS | SaaS | | Stability & Immediacy | High | High | Untested | Untested | Low | Untested | | Countries/Languages Limit | No Limit | No Limit | 5 | No Limit | No Limit | No Limit | | Reviews Monitoring (resend to Slack) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | Reviews Auto-Translation | ✅ Powered by Google Translate | ✅ | ❌ (not available for basic plan) | ✅ (300 Reviews/month) | ❌ (not available for free plan) | ✅ | | Customized Review Filtering | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | Customized Integration | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | Reply to Reviews | ❌ | ✅ | ❌ | ❌ (not available for small plan) | ❌ (not available for free plan) | ✅ | | Reviews Analytics or Reporting | ❌ | ❌ | ❌ (not available for basic plan) | ✅ | ✅ | ✅ |
Setup - Only Need Default Processor (Slack/Filter/Google Translate)
Quick Start! 🚀
- 👉👉👉 Click here to view the complete Quick Start configuration steps document (2024 Latest Edition).
- 👉👉👉 Click here to view the complete Quick Start configuration steps document (2024 Latest Edition).
- 👉👉👉 Click here to view the complete Quick Start configuration steps document (2024 Latest Edition).
Buy Me a beer ❤️❤️❤️
If this project has helped you, feel free to sponsor me a cup of coffee, thank you.
Deploy with GitHub Action
Deploy with GitHub Repo Template 🚀🚀🚀
- No need for hosting/server ✅
- No environment requirements ✅
- No engineering background knowledge required ✅
- Only configuration needed ✅
- Completely free ✅
GitHub Action provides 2,000+ minutes/month for free. ZReviewTender will take approximately 30 seconds per run; with a default schedule of every 6 hours, it will cost about 60 minutes/month.
⚠️️️️️ MUST CREATE A PRIVATE REPO TO KEEP YOUR CREDENTIAL FILES SAFE. ⚠️️️️️
Docker
- Ensure you have Docker installed on your system.
- Clone this repo:
git clone https://github.com/ZhgChgLi/ZReviewTender - Navigate to the directory:
cd /ZReviewTender - Build the Docker image:
docker build -t zreviewtender:latest --build-arg CRON_SETTING="*/30 * * * *" --build-arg ZREVIEWTENDER_COMMAND="-r" .CRON_SETTING= crontab schedule settingZREVIEWTENDER_COMMAND= ZReviewTender Command (Refer to the configuration block below.)
- Refer to the configuration block below to complete the setup.
- Run Docker:
docker run -v ./:/usr/src/app zreviewtender - Enjoy!
Using Gem
If you are familiar with Ruby:
- Ensure Ruby is installed in your environment (I use
3.4.2). - Ensure Bundler is installed in your environment (I use
2.3.13). - Type
gem install ZReviewTenderin the terminal.
If you are NOT familiar with Ruby:
- MacOS comes with a system Ruby pre-installed, but we DO NOT recommend using that; instead, use Ruby from rvm/rbenv.
- Install rbenv or rvm to manage your Ruby environment.
- Install Ruby through rbenv/rvm (you can install Ruby version
2.6.X). - Switch the system Ruby to the Ruby from rbenv/rvm.
- Type
which rubyin the terminal to ensure the current Ruby is NOT/usr/bin/ruby. - Type
gem install ZReviewTenderin the terminal.
Setup - Manually (You Can Create Your Own Processor)
- Clone this repo.
- Set up the Ruby environment.
- Run
bundle install. - Execute with
bundle exec bin/ZReviewTender.
Configuration
ZReviewTender uses a YAML file to configure the Apple/Google Review Bot settings.
[Recommended] Use ZReviewTender -i to generate apple.yml & android.yml config files.
Apple (iOS/macOS App)
- Refer to the apple.example.yml example config YAML file.
(Please rename
apple.example.ymltoapple.ymlif you've downloaded it from the reference.) - Fill in the configuration in the YAML file:
Go to App Store Connect -> Keys -> App Store Connect API
appStoreConnectIssueID:

appStoreConnectP8PrivateKeyID & appStoreConnectP8PrivateKeyFilePath:
Create a new API Key:

- Name:
ZReviewTender - Access:
App Manager

appStoreConnectP8PrivateKeyID:Key IDappStoreConnectP8PrivateKeyFilePath:/AuthKey_XXXXXXXXXX.p8, download the API Key and place it in the/config/folder (relative path to the config YAML file).
appID:

appID: App Store Connect -> App Store -> General -> App Information -> Apple ID
- After filling out the configuration in the YAML file, rename
apple.example.ymltoapple.yml.
Authenticating as a Service Account for Google-Related Services
- Follow the steps in Creating a Service Account in the official documentation to create a GCP service account and download the GCP JSON Private Key.
- Ensure the service account has the necessary access (e.g., Google Translate/Google Android Publisher API/Google Sheets...).
Google Play Console (Android App)
- Download the android.example.yml config YAML file. (Please rename
android.example.ymltoandroid.ymlif you've downloaded it from the reference.) - Fill in t
Related Skills
imsg
353.3kiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.
node-connect
353.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
slack
353.3kUse when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
taskflow-inbox-triage
353.3kname: taskflow-inbox-triage description: Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some w

