Home

Awesome

ZReviewTender

ZReviewTender is a tool for fetching app reviews from the App Store and Google Play Console using the brand new official Stability API, and seamlessly integrating them into your workflow.

ZReviewTender

Features

Result

1_wlGNbHopjPwFsP8j9LpKcw

Compare with similar services

ZReviewTenderAppreviewbot.comReviewbot.ioAappbot.coAppfollow.ioAppfigures.com
Pricing for 2 Apps (Android & iOS)Forever Free No limit$11.99/month$5/month$39/month$0$7.99/month
Service TypePaaSSaaSSaaSSaaSSaaSSaaS
Stability & ImmediacyHighHighuntesteduntestedLowuntested
Countries/Languages LimitNo limitNo limit5No limitNo limitNo limit
Reviews Monitoring (resend to Slack)
Reviews Auto-Translation✅ Powered by GoogleTranslate❌ (not available for basic plan)✅ (300 Reviews/month)❌ (not available for free plan)
Reviews Monitoring Customized Filter
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 Proceesor(Slack/Filter/Google Translate)

Strongly Recommended

image

Deploy with Gitub Repo Template 🚀🚀🚀

Github Action Proivde 2,000+ mins/month for free. ZReviewTender will cost ~= 30s per time, default run every 6 hours will cost 4 times/day * 30s/per time * 30days = 60 mins/month

⚠️️️️️ MUST CREATE PRIVATE REPO, TO KEEP YOUR CREDENTIAL FILES SAFE. ⚠️️️️️

2024/01/27 Update: Docker 🎉

  1. make sure has Docker on your system.
  2. git clone this repo git clone https://github.com/ZhgChgLi/ZReviewTender
  3. cd /ZReviewTender
  4. build docker image docker build -t zreviewtender:latest --build-arg CRON_SETTING="*/30 * * * *" --build-arg ZREVIEWTENDER_COMMAND="-r" .
    • CRON_SETTING = crontab schedule setting
    • ZREVIEWTENDER_COMMAND = ZReviewTender Command (Refer to the configuration block down below.)
  5. Refer to the configuration block down below and finish the configuration.
  6. run docker docker run -v ./:/usr/src/app zreviewtender
  7. have fun!

Using Gem

If you are familiar with ruby:

  1. make sure you have Ruby in your environment (I use 2.6.5p114)
  2. make sure you have Bundle in your environment (I use 2.3.13)
  3. type gem install ZReviewTender in terminal

If you are NOT familiar with ruby:

  1. MacOS comes with a System Ruby pre-installed, but we are NOT Recommend to use that, using rvm/rbenv's Ruby instead.
  2. install rbenv or rvm to manage Ruby environment
  3. install Ruby through rbenv/rym (you can install ruby version 2.6.X)
  4. change the systme ruby to rbenv/rvm's Ruby
  5. type which ruby in terminal to make sure current Ruby is NOT /usr/bin/ruby
  6. type gem install ZReviewTender in terminal

Setup - Manually(You can create your own Processor)

  1. Clone this repo
  2. Setup ruby environment
  3. run bundle install
  4. execute with bundle exec bin/ZReviewTender

Configuration

ZReviewTender uses yaml file to config Apple/Google Review Bot Setting.

[Recommended] use ZReviewTender -i generator apple.yml & android.yml config yml files.

Apple (iOS/macOS App)

  1. Reference the apple.example.yml example config yaml file. (Please rename apple.example.yml to apple.yml if you've downloaded from reference.)
  2. fill configuration in yaml file:

Go to App Store Connect -> Keys -> App Store Connect API

appStoreConnectIssueID:

1_FsgHMeCGLVbuetBC4gIP_w

appStoreConnectP8PrivateKeyID & appStoreConnectP8PrivateKeyFilePath:

Create a new API Key:

1_xBtkRFEKO2xHU26TMdXJZQ

1_DvjiO3IkHEiPXp0M_dnnww

appID:

1_Ov2pyW9anRVqNCpbxhHtJQ

appID: App Store Connect -> App Store -> General -> App Information -> Apple ID

  1. after filled out configuration in yaml file, rename apple.example.yml to apple.yml

Use Authenticating as a service accountAuthenticating as a service account for Google Releated Service

Google Play Console (Android App)

  1. Download the android.example.yml config yaml file. (Please rename android.example.yml to android.yml if you've downloaded from reference.)
  2. fill configuration in yaml file:

packageName:

1_XRzKNGhVbBef7Hl9XPcaWw

packageName: find Android App packageName in Google Play Console -> Dashboard -> App

playConsoleDeveloperAccountID & playConsoleAppID:

find in Google Play Console -> Dashboard -> App -> Page URL:

https://play.google.com/console/developers/**playConsoleDeveloperAccountID**/app/**playConsoleAppID**/app-dashboard

keyFilePath:

Follow the GCP Started Document to created a Google Cloud Project Service Account and linked it to your Google Play Console, enable Google Play Android Developer API in Google Play Console -> Setup -> API Access.

1_yQhAVOuF_CvM49Vayl40zA

1_-AKvlk9P6R0YkuZwsXJaLA

keyFilePath: /gcp_key.json the key path of GCP JSON Private Key, placed it to /config/ folder (releated path with config yml file).

Default Processor

FilterProcessor

GoogleTranslateProcessor

SlackProcessor

Please note, this is a legacy custom integration - an outdated way for teams to integrate with Slack. These integrations lack newer features and they will be deprecated and possibly removed in the future. We do not recommend their use. Instead, we suggest that you check out their replacement: Slack apps.

ZReviewTender will use slackBotToken by default.

1_D1kt_6jH0UaJo2kvf9l5Qw (1)

1_UjE_LxtZ0adwS6tr2-vgbw

GoogleSheetProcessor

%TITLE% for review's title
%BODY% for review's content
%RATING% for review's rating 1~5
%PLATFORM% for review's platform Apple or Android
%ID% for review's ID
%USERNAME% for review's reviewer username
%URL% for link to review
%TERRITORY% for review's territory (language for android e.g. zh-Hant, en)
%APPVERSION% for review's reviewer app version
%CREATEDDATE% for review's created date

*make sure you have add service account to your google sheet collaborate with edit permission.

Custom Processor

  1. Clone this repo project (due to ZReviewTedner is a completely Gem, you can't modify it dynamically)
  2. Reference Processor.rb, make a copy and devlop the feature you want

initialize

processReviews(reviews, platform)

  1. Add your Processor & Processor Parameter needed to config.yml, processors: section
  2. Test & Run!
  3. Done!

*processors are data flow chain and sort sensitive.

If you don't need Some Processor (like Google Translate Processor)

Usage

if you're not install with Gems, you should use bundle exec ruby bin/ZReviewTender to excute.

Generate config yml file

ZReviewTender -i

will generate apple.yml and android.yml in config/ folder.

Check Both Apple & Android App's latest Reviews

ZReviewTender -r

will uses apple.yml and android.yml in config folder.

Check Both Apple & Android App's latest Reviews, specify Config YAML file path

ZReviewTender --run=CONFIG_FOLDER

Check Apple App's latest Reviews

ZReviewTender -a

will uses apple.yml in config folder.

Check Apple App's latest Reviews, specify Config YAML file path

ZReviewTender --apple=PATH_TO_APPLE_CONFIG_YAML_FILE

Check Android App's latest Reviews

ZReviewTender -g

will uses android.yml in config folder.

Check Android App's latest Reviews, specify Config YAML file path

ZReviewTender --googleAndroid=PATH_TO_ANDROID_CONFIG_YAML_FILE

Clean last check timestamp log(back to init state)

ZReviewTender -d

Show current ZReviewTender version

ZReviewTender -v

Upgrade ZReviewTender to latest release version(only RubyGem)

ZReviewTender -n

Init (first time execute)

1_62VO8mbJWxXHSeFo3fEUog

you will received an init success message in your Slack Channel!

latestCheckTimestamp folder & execute.log:

1_U8vjWSHvY2RzUBcUbQoBvQ

ZReviewTender will also created latestCheckTimestamp/Apple, latestCheckTimestamp/Android to log ZReviewTender latest checked Review Timestamp and created execute.log for log excute error.

image

Setup a crontab schedule job to excute(Check latest Review & Process) periodicity

image

Github Action

image

ZReviewTender App Reviews Automatic Bot

name: ZReviewTender
on:
  workflow_dispatch:
  schedule:
    - cron: "15 */6 * * *" #check new review every 6 hour.

jobs:
  ZReviewTender:
    runs-on: ubuntu-latest
    steps:
    - name: ZReviewTender Automatic Bot
      uses: ZhgChgLi/ZReviewTender@main
      with:
        command: '-r'

you can change command to others ZReviewTender's command.

⚠️️️️️ Attention

⚠️️️️️ MUST KEEP YOUR CREDENTIAL FILES SAFE, DO NOT EXPOSE ON THE INTERNET. ⚠️️️️️

Disclaimer

This repository is for research purposes only, the use of this code is your responsibility.

Who is using

pinkoi

Pinkoi.com is Asia's leading online marketplace for original design goods, digital creations, and workshop experiences.

About

Other works

Swift Libraries

Integration Tools

Donate

Buy Me A Coffe

If you find this library helpful, please consider starring the repo or recommending it to your friends.

Feel free to open an issue or submit a fix/contribution via pull request. :)