Разбор покупки закончился словами «не покупаем». На это справедливо ответили: слова дешёвые, покажи. Показываем. Инструмент написан — девять модулей, командная строка из двенадцати команд и открытое API, — и он прогнан не по игрушечному примеру, а по тому самому отчёту, который уже лежит на этой площадке: 3637 кандидатов, 17 стран.
Ниже — верстак. Выбираете любой ключ отчёта и видите про него всё, что показала бы платная панель: сложность запроса с разбором по составляющим, кто стоит наверху выдачи и чем он её держит, есть ли такое приложение в App Store. И одну вещь, которой платная панель не показывает: у каждого числа стоит подпись, откуда оно взялось — замер, расчёт, оценка или честное «неизвестно».
Это и есть весь спор. Вендор продаёт цифру без происхождения, и по ней нельзя понять, прочитана она в сторе или посчитана закрытой формулой на занулённом входе. Мы такую цифру тоже считаем — и рядом пишем, что это оценка.
Чего на этой странице нет. Мы не покупали подписку и ни разу не обращались к API вендора: его живой эндпоинт без аккаунта отвечает 401. Поэтому здесь нигде не стоит вендорская цифра рядом с нашей — всё, что сказано про их метрики, взято из их же опубликованных описаний, а замерена только наша сторона.
Представьте два инструмента, показавших по одному ключу одну и ту же «сложность». В одном это среднее по замерам верхушки выдачи, в другом — выход закрытой модели, у которой на входе ноль. Число одинаковое, стоит оно разного, и без подписи вы этой разницы не увидите. Поэтому подпись у нас обязательна — включая ту, которая говорит «данных нет»: подставлять на её место ноль нельзя, ноль в скоринге значит «спрашивают редко», а это уже приговор нише.
Слева — все 3637 строк прогона с поиском и фильтрами, справа — карточка выбранного ключа. Отчёт грузится в браузер один раз целиком (5,4 МБ), дальше всё считается на вашей машине: ни запроса на сервер, ни очереди, ни кредитов. Искать можно по самому запросу, по его переводу и по названию приложения, которое стоит наверху выдачи.
Страница — витрина снимка. Настоящий инструмент живёт в командной строке: он ходит в Google Play и в iTunes Search API прямо сейчас, а не показывает сохранённое. Ниже — реальные запуски и их настоящий вывод, скопированный как есть. Обратите внимание на последнюю строку каждого прогона: инструмент сам печатает, во сколько запросов он вам обошёлся.
Аналог Keyword Complexity index у вендора. Разница в том, что видно не только итог, но и каждое слагаемое, его вес и то, какая доля веса подкреплена данными.
И сразу — то, чего в панелях обычно нет: где числа не «ноль», а «не смотрели». Краткая выдача стора не содержит установок, а карточка каждой строки стоит отдельный запрос, и инструмент говорит об этом прямым текстом.
Спрос, подтверждённый другой платформой: если в App Store приложение ровно про этот запрос есть, а в Play его нет — это самая интересная разновидность пустой ниши.
У вендора это «токены», и по их расходу вы узнаёте, что прогон стоил денег, уже после прогона. Здесь тот же счётчик, только считает он запросы и всегда сходится к нулю долларов. Вывод команды cost за день разработки инструмента:
У ASOMobile API тикетный: создай задачу, дождись, забери результат, один ключ на запрос, цена в токенах по эндпоинтам не опубликована. Здесь — обычный GET, документация лежит по тому же адресу, ключ не нужен, ограничение одно: 60 запросов в минуту с адреса. Ответ каждой ручки несёт подписи качества и дату снимка, а не притворяется живым стором. Поэтому сложность того же bingo card maker здесь и в терминале выше отличается: командная строка сходила в Google Play только что, а API отвечает по снимку прогона — и честно пишет в поле source, на какую дату он снят.
/api/aso?op=keyword&term=турник&geo=ru-RU/api/aso?op=search&q=таймер&geo=ru-RU&limit=10/api/aso?op=kd&term=турник&geo=ru-RU/api/aso?op=top&geo=ru-RU&class=ZERO&limit=10/api/aso?op=stats/api/aso?op=schemaПросьба была — показать инструмент не в вакууме, а на игровой части отчёта. Она в отчёте есть: счётчики очков для белота, яма и бильярда, броски кубиков, генераторы карточек бинго, тесты и викторины.
Категорий стора мы не собираем — их нет ни в одной строке отчёта. Подборка собрана по ключу концепта, который выставил гейт на этапе преданализа, а список шаблонов лежит открытым текстом в scraper/aso/enrich.js (константа FAMILY_RULES): dice, bingo, belote, yahtzee, darts, billiards, scoresheet, score_counter, quiz, trivia, flashcards и так далее. Любую строку можно проверить глазами: у каждой в отчёте написано, каким именно шаблоном она поймана. Меток две, и разделены они нарочно — счётчик очков в белоте и тест по ПДД это разные занятия, слепив их, мы получили бы подборку, наполовину состоящую из учёбы.
Инструмент — это ответ на «покажи». Причина, по которой он вообще написан, и проверка этой причины лежат рядом.