🛠️ Свой инструмент · прогон от 16 августа 2026

Мы написали то, за что просят $59–299 в месяц

Разбор покупки закончился словами «не покупаем». На это справедливо ответили: слова дешёвые, покажи. Показываем. Инструмент написан — девять модулей, командная строка из двенадцати команд и открытое API, — и он прогнан не по игрушечному примеру, а по тому самому отчёту, который уже лежит на этой площадке: 3637 кандидатов, 17 стран.

Ниже — верстак. Выбираете любой ключ отчёта и видите про него всё, что показала бы платная панель: сложность запроса с разбором по составляющим, кто стоит наверху выдачи и чем он её держит, есть ли такое приложение в App Store. И одну вещь, которой платная панель не показывает: у каждого числа стоит подпись, откуда оно взялось — замер, расчёт, оценка или честное «неизвестно».

Это и есть весь спор. Вендор продаёт цифру без происхождения, и по ней нельзя понять, прочитана она в сторе или посчитана закрытой формулой на занулённом входе. Мы такую цифру тоже считаем — и рядом пишем, что это оценка.

Чего на этой странице нет. Мы не покупали подписку и ни разу не обращались к API вендора: его живой эндпоинт без аккаунта отвечает 401. Поэтому здесь нигде не стоит вендорская цифра рядом с нашей — всё, что сказано про их метрики, взято из их же опубликованных описаний, а замерена только наша сторона.

Главная мысль страницы

Подпись важнее самого числа

Представьте два инструмента, показавших по одному ключу одну и ту же «сложность». В одном это среднее по замерам верхушки выдачи, в другом — выход закрытой модели, у которой на входе ноль. Число одинаковое, стоит оно разного, и без подписи вы этой разницы не увидите. Поэтому подпись у нас обязательна — включая ту, которая говорит «данных нет»: подставлять на её место ноль нельзя, ноль в скоринге значит «спрашивают редко», а это уже приговор нише.

замер прочитано из стора как есть расчёт арифметика над замерами, без домыслов оценка модель: порядковый сигнал, не величина неизвестно источника нет — и мы об этом говорим, а не подставляем ноль
Верстак

Любой ключ отчёта — целиком

Слева — все 3637 строк прогона с поиском и фильтрами, справа — карточка выбранного ключа. Отчёт грузится в браузер один раз целиком (5,4 МБ), дальше всё считается на вашей машине: ни запроса на сервер, ни очереди, ни кредитов. Искать можно по самому запросу, по его переводу и по названию приложения, которое стоит наверху выдачи.

Загружаю отчёт (5,4 МБ)…
Без страницы

Как этим пользоваться из терминала и из чужого кода

Страница — витрина снимка. Настоящий инструмент живёт в командной строке: он ходит в Google Play и в iTunes Search API прямо сейчас, а не показывает сохранённое. Ниже — реальные запуски и их настоящий вывод, скопированный как есть. Обратите внимание на последнюю строку каждого прогона: инструмент сам печатает, во сколько запросов он вам обошёлся.

Сложность ключа с разбором по составляющим

Аналог Keyword Complexity index у вендора. Разница в том, что видно не только итог, но и каждое слагаемое, его вес и то, какая доля веса подкреплена данными.

cd scraper && node aso/cli.js kd "bingo card maker" --geo=en-US
Сложность ключа «bingo card maker» — en-US ========================================== Подписи под числами: [замер] прочитано из стора · [расчёт] арифметика над замерами · [оценка] модель, порядковый сигнал · [неизвестно] данных нет — и мы не подставляем ноль Сложность: 27.7 [расчёт] посчитано по живой выдаче Google Play: установки, отзывы, свежесть и точность соответствия топа полоса: слабо Кто-то стоит, но некрупный или невпопад — обойти реально нормальной карточкой. Из чего сложилась (веса — наша договорённость, значения — расчёт по выдаче): составляющая вес значение 0..1 вклад в kd ------------------------------------------------------ установки топа 0.35 0.348 12.2 точность соответствия 0.25 0 0 отзывы топа 0.2 0 0 свежесть топа 0.1 1 10 насыщенность выдачи 0.1 0.55 5.5 уверенность: 100 [расчёт] % веса подкреплено данными чего не знаем о топе: установки 0%, отзывы 33%, даты 0% строк [расчёт] Кто держит верх: приложение: «Bingo Maker» установки: 100,000+ [замер] отзывы: 154 [замер] оценка: 2.95 [замер] обновлялся: 05.01.2026 [замер] матч названия: 0.67 [расчёт] Класс гэпа (та же классификация, что в большом прогоне): класс: WEAK Точное соответствие есть («Bingo Card Maker»), но маленькое: установок 100+. побиваемость: 0.715 [расчёт] Побиваемость из scoring.incumbentProfile — та самая математика, что считает оценку возможности в большом прогоне. Сложность и возможность выводятся из одного профиля, поэтому противоречить друг другу они не могут. Словами: Наверху «Bingo Maker» — 100,000+ установок, но его заголовок отвечает запросу лишь отчасти (матч 0.67). Отзывов у топа до 121 (с поправкой на релевантность). Про запрос — 11 строк из 20. Точное соответствие есть («Bingo Card Maker»), но маленькое: установок 100+. Цена прогона: 0 запросов, из кэша 4. Деньги: $0.00 — Google Play и iTunes Search API публичные и бесплатные, кредитов тут нет.

Живая выдача Google Play

И сразу — то, чего в панелях обычно нет: где числа не «ноль», а «не смотрели». Краткая выдача стора не содержит установок, а карточка каждой строки стоит отдельный запрос, и инструмент говорит об этом прямым текстом.

node aso/cli.js serp "feuille de score yams" --geo=fr-FR --num=10
Выдача Google Play по «feuille de score yams» — fr-FR ===================================================== Подписи под числами: [замер] прочитано из стора · [расчёт] арифметика над замерами · [оценка] модель, порядковый сигнал · [неизвестно] данных нет — и мы не подставляем ноль # приложение разработчик установки [замер] оценка [замер] отзывы [замер] обновлён [замер] матч [расчёт] ------------------------------------------------------------------------------------------------------------------------------------- 1 Yams feuille de scores Yahtzee ScoreNow 1 000+ 5 17 04.08.2026 1 2 Dicey Combos : Bloc-notes Yams Fortivus 1 000+ н/д н/д 17.02.2026 0.63 3 Yahtzee® - Jeu de dés Scopely 10 000 000+ 3.91 297 330 11.08.2026 0 4 Yatzy - Jeu de dés Bluetile н/д 4.72 н/д н/д 0 5 Yatzy Classique Loop Games н/д 4.35 н/д н/д 0 6 Yams Score Maxime ROLLIN н/д н/д н/д н/д 0.97 7 Compteur de points napps н/д 4.87 н/д н/д 0 8 Yatzy Duel - Jeu de dés Blackout Lab н/д 5 н/д н/д 0 9 Yatzy Arena - Yams Jeux LazyLand SA н/д 4.24 н/д н/д 0.33 10 Score Counter Martin Váňa н/д 4.42 н/д н/д 0.33 Установки, отзывы и дата обновления есть только у первых 3 строк: краткая выдача их не содержит, а карточка каждой строки стоит отдельный запрос (--enrich=N меняет глубину). «н/д» здесь — это «не смотрели», а не «нет». Сводка по странице: установки лидера: 10 000 000 установки [замер] максимум установок по 3 из 10 строк с известным числом; Google Play отдаёт корзину («1 000 000+»), это НИЖНЯЯ граница медиана установок: 1 000 установки [расчёт] медиана по 3 из 10 строк с известными установками (каждая — нижняя граница корзины) точных вхождений: 2 строки [расчёт] строк, где токены запроса нашлись в названии (L ≥ 0.8), из 10; L считан тем же lexicalMatch, что и в отчёте доля старых карточек: 0 доля [расчёт] доля строк, не обновлявшихся дольше 2 лет, по 3 из 10 строк с известной датой доля без установок: 0.7 доля [расчёт] 7 из 10 строк без числа установок — считаем это отдельно, а не подменяем нулём токены запроса: feuille, score, yams Цена прогона: 0 запросов, из кэша 4. Деньги: $0.00 — Google Play и iTunes Search API публичные и бесплатные, кредитов тут нет.

Кросс-чек App Store

Спрос, подтверждённый другой платформой: если в App Store приложение ровно про этот запрос есть, а в Play его нет — это самая интересная разновидность пустой ниши.

node aso/cli.js crossstore "bingo card maker" --geo=en-US --limit=5
App Store по «bingo card maker» — витрина US (гео en-US) ======================================================== Подписи под числами: [замер] прочитано из стора · [расчёт] арифметика над замерами · [оценка] модель, порядковый сигнал · [неизвестно] данных нет — и мы не подставляем ноль вердикт: точное есть, но тихое в App Store точное приложение «My Bingo Card» есть, но у него всего 5 отзывов — до порога «много» (500) не дотягивает, поэтому надбавка меньше ответов от Apple: 5 [замер] отзывов у судимого: 5 отзывов [замер] iTunes Search API (US): userRatingCount у «My Bingo Card» — точное соответствие запросу; запрошено сейчас множитель к оценке: 1.25 [оценка] appStoreFactor из scoring.js: в App Store точное приложение есть, в Play нет сдвиг лог-оценки: 0.156 [оценка] вклад в лог-оценку: appStoreWeight 0.7 × ln(1.25) Точное соответствие: название: «My Bingo Card» — Golden House Media, LLC отзывов: 5 отзывов [замер] iTunes Search API, витрина US, точное соответствие: userRatingCount средняя оценка: 3.4 звёзд [замер] iTunes Search API, витрина US, точное соответствие: averageUserRating лексический матч: 0.967 [расчёт] lexicalMatch из lib.js: доля токенов запроса в названии + бонус за описание, порог точного 0.8 Что вернула Apple (5): # приложение издатель отзывы [замер] оценка [замер] матч [расчёт] ------------------------------------------------------------------------------------------------------- 1 Bingo Card Builder CyberWisp LLC 19 4.79 0.67 2 Bingo IRL - Real Life Bingo North Ridge Investments… 27 3.89 0.33 3 My Bingo Card Golden House Media, LLC 5 3.4 0.97 4 Bingo Card Creator Jordan Holland 7 3.86 0.97 5 MyBingoCard Maker Cory Analla 0 0 0.33 Цена прогона: 0 запросов, из кэша 1. Деньги: $0.00 — Google Play и iTunes Search API публичные и бесплатные, кредитов тут нет.

Счётчик собственной цены

У вендора это «токены», и по их расходу вы узнаёте, что прогон стоил денег, уже после прогона. Здесь тот же счётчик, только считает он запросы и всегда сходится к нулю долларов. Вывод команды cost за день разработки инструмента:

node aso/cli.js cost
Цена всех прогонов инструмента ============================== Подписи под числами: [замер] прочитано из стора · [расчёт] арифметика над замерами · [оценка] модель, порядковый сигнал · [неизвестно] данных нет — и мы не подставляем ноль прогонов: 79 [замер] первый: 2026-08-19 07:17:11 UTC последний: 2026-08-19 08:04:46 UTC команда прогонов [замер] запросов [замер] из кэша [замер] в среднем за прогон [расчёт] --------------------------------------------------------------------------------------------- report 15 91 114 6.1 rivals 7 34 24 4.9 serp 15 25 29 1.7 keywords 6 17 16 2.8 kd 8 13 19 1.6 track 6 8 8 1.3 crossstore 7 5 2 0.7 dev 1 5 0 5 reviews 4 4 4 1 audit 5 2 3 0.4 track:diff 5 0 0 0 запросов всего: 204 [замер] из них по видам: подсказки 66, выдача 43, карточка 83, App Store 12 отдано из кэша: 219 [замер] потрачено денег: $0.00 [замер] Это не «бесплатный тариф с лимитом», а отсутствие счётчика: инструмент ходит в публичную выдачу Google Play и в открытый iTunes Search API. Ограничение здесь одно — темп запросов (лимитер в core.js), и оно техническое, а не коммерческое. Журнал лежит в /workspaces/MediaMagic/MediaMagicASO/trees/3a8fe070f9/scraper/out/aso-cost.ndjson, его можно стереть — на работу это не влияет.

Всё то же самое по HTTP

У ASOMobile API тикетный: создай задачу, дождись, забери результат, один ключ на запрос, цена в токенах по эндпоинтам не опубликована. Здесь — обычный GET, документация лежит по тому же адресу, ключ не нужен, ограничение одно: 60 запросов в минуту с адреса. Ответ каждой ручки несёт подписи качества и дату снимка, а не притворяется живым стором. Поэтому сложность того же bingo card maker здесь и в терминале выше отличается: командная строка сходила в Google Play только что, а API отвечает по снимку прогона — и честно пишет в поле source, на какую дату он снят.

curl -s '/api/aso?op=schema' | head
загружаю живой ответ API…
op=keyword — карточка ключа целиком
/api/aso?op=keyword&term=турник&geo=ru-RU
op=search — поиск по отчёту с объяснением, чем совпало
/api/aso?op=search&q=таймер&geo=ru-RU&limit=10
op=kd — сложность и разбор по составляющим
/api/aso?op=kd&term=турник&geo=ru-RU
op=top — верх отчёта с фильтрами
/api/aso?op=top&geo=ru-RU&class=ZERO&limit=10
op=stats — сводка прогона и его цена в запросах
/api/aso?op=stats
op=schema — сама документация
/api/aso?op=schema
Показ на подборке

🎲 Игры и досуг: счёт очков, кубики, бинго, викторины

Просьба была — показать инструмент не в вакууме, а на игровой части отчёта. Она в отчёте есть: счётчики очков для белота, яма и бильярда, броски кубиков, генераторы карточек бинго, тесты и викторины.

Сразу оговорка: это не категория Google Play

Категорий стора мы не собираем — их нет ни в одной строке отчёта. Подборка собрана по ключу концепта, который выставил гейт на этапе преданализа, а список шаблонов лежит открытым текстом в scraper/aso/enrich.js (константа FAMILY_RULES): dice, bingo, belote, yahtzee, darts, billiards, scoresheet, score_counter, quiz, trivia, flashcards и так далее. Любую строку можно проверить глазами: у каждой в отчёте написано, каким именно шаблоном она поймана. Меток две, и разделены они нарочно — счётчик очков в белоте и тест по ПДД это разные занятия, слепив их, мы получили бы подборку, наполовину состоящую из учёбы.

Куда дальше

Четыре соседние страницы

Инструмент — это ответ на «покажи». Причина, по которой он вообще написан, и проверка этой причины лежат рядом.