Skip to content
cccskills
FreePublished on GitHub

promo-walk-candidates

Подбирать варианты новых промопрогулок из уже озвученных точек production — минимум 10 точек, от 17 минут аудио, не больше 50 % точек из любой существующей промопрогулки. Применять при просьбах найти, проанализировать или предложить новые промопрогулки или проверить пересечение идеи прогулки с опубликованными.

The English summary is being prepared. Showing the original description.

softmg/otgolosok2 stars(GitHub 2 + cccskills 0)

Run score Not tested

See how to install

Files included (4)

  • SKILL.md8.9 KB
  • agents/openai.yaml458 B
  • scripts/analyze.py15.4 KB
  • scripts/collect.mjs3.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Варианты новых промопрогулок

Найди районы, где из готовых рассказов складывается новая промопрогулка, и предложи пользователю короткий список с обоснованием. Скилл только анализирует: прогулки не создаются, озвучка не заказывается, на production ничего не пишется.

Критерии по умолчанию

Пользователь может поменять любой порог; тогда передай его в analyze.py флагом.

  • Точки: не меньше 10 (--min-stops), не больше 20 (--max-stops).
  • Аудио: не меньше 17 минут суммарно (--min-audio-min). Записи F5 и v3 перед публикацией переозвучиваются в v4 (правило AGENTS.md), поэтому их длительность оценивается по числу слов с темпом v4 ~117 слов в минуту; точная длительность есть только у v4.
  • Пересечение: с каждой существующей промопрогулкой общих точек не больше 50 % от точек нового варианта (--max-overlap). Учитываются все прогулки аккаунта promo-walks, включая открытые только по ссылке: это готовые выпуски очереди. Варианты в выдаче отличаются и друг от друга по тому же правилу. Если пользователь имеет в виду пересечение с объединением всех прогулок, смотри поле unionOverlapShare.
  • Соседство: с остановками каждой существующей прогулки рядом, ближе 100 м (--near-m), не больше 50 % точек варианта (--max-near-overlap), поле nearOverlap и колонка «≤100 м от остановок». Так отсекается та же улица с другими рассказами: скилл сначала берёт точки, которых нет ни в одной прогулке, и без этой проверки выдаёт «0 пересечений» на чужом маршруте.
  • Фото: у каждой остановки должно быть превью (правило AGENTS.md). Колонка «Без фото» и поле needsPhoto показывают, каким точкам его нужно найти; если у точки нет свободного снимка в Commons или на Flickr с CC, её заменяют другой.
  • Пешая связность: оценка пути ≤ 4 км (--max-route-km, прямые × 1,3), соседние остановки не дальше 700 м (--max-hop-m), точки в радиусе 900 м от затравки (--radius-m).

Одна точка — один рассказ: одинаковый MP3 под разными id и записи каталога ближе 40 м считаются одной точкой. Остановки старых автоматических прогулок без placeId сопоставляются по координатам.

Мемориальные доски, могилы и посольства (kind в снимке) по умолчанию не входят в пул: из них не складывается прогулка на слух, а к посольству не подойти. Флаг --include-minor возвращает их.

1. Снимок production (только чтение)

Адрес сервера лежит в игнорируемом .env.ops (VPS); не печатай его и не записывай в репозиторий. Скрипт открывает обе базы с readOnly.

S=<scratchpad>
VPS=$(grep '^VPS=' .env.ops | cut -d= -f2-)
ssh -o ConnectTimeout=15 "$VPS" 'docker exec -i otgolosok-generator-generator-1 node --input-type=module' \
  < .claude/skills/promo-walk-candidates/scripts/collect.mjs > $S/snapshot.json

Локальная backend/data/jobs.sqlite устаревает за дни и не содержит новых прогулок: не подменяй ею снимок. ADMIN_TOKEN из локального .env на production не подходит.

2. Автоматический отбор

python3 -I .claude/skills/promo-walk-candidates/scripts/analyze.py $S/snapshot.json $S/out --top 40 \
  --extra-walks content/<пакет>/walk-stops-<прогулка>.json

В --extra-walks передай остановки прогулок, которых ещё нет в снимке: незакоммиченные пакеты параллельных сессий (git status --short content/) и уже согласованные варианты. Иначе отбор предложит район, который собирают рядом.

Результат: $S/out/candidates.md (таблица) и candidates.json (точки каждого варианта, модель записи, в каких прогулках точка уже есть, ближайшее метро у начала и конца). Сортировка: больше новых точек, меньше переозвучки, больше аудио. Работает ~30 с.

3. Ручная проверка каждого варианта

Скрипт видит только координаты и длительность. Прочитай точки варианта и отбрось или поправь его, если:

  • точки за платным или закрытым входом (территория Кремля, музейные дворы, могилы внутри соборов) — слушатель должен стоять у объекта снаружи;
  • нет общей темы или узнаваемой оси (улица, набережная, слобода): название промопрогулки строится как «Остоженка: искусство и частная жизнь»;
  • вариант повторяет район опубликованной прогулки по смыслу, хотя точки формально другие (соседние дома той же улицы);
  • путь идёт через магистраль без перехода, промзону или закрытую территорию — проверь на карте;
  • у точки нет фото и свободный снимок не находится — замени точку, не публикуй её без превью;
  • много мелких точек без истории (мемориальные доски, безымянные башни подряд) — такая прогулка скучна на слух.

Замену точки бери из places снимка в том же районе и пересчитай критерии.

4. Отчёт

По-русски, 5–10 лучших вариантов после ручной проверки. Для каждого: рабочее название, старт и финиш (метро), число точек, аудио (сколько измерено v4 и сколько оценено), путь, максимальное пересечение и с какой прогулкой, сколько записей нужно переозвучить в v4 (это платно), сколько точек без фото, 3–4 сильные точки и риски. Отдельно перечисли отброшенные районы и причину.

Переозвучку и создание прогулки предлагай следующим шагом: объём платной партии подтверждает пользователь. Если отчёт нужен надолго, сохрани его в docs/agents/promo-walk-candidates-<дата>.md и добавь строку в docs/agents/README.md; без адресов сервера и токенов.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Качество русского текста для агента. Russian text quality for agents: proofreading and AI-slop cleanup for Cyrillic text. Триггеры: очеловечь, вычитай, отредактируй, поправь, причеши, проверь текст, убери канцелярит, humanizer. Молча снимает жёсткие запреты в собственном русском выводе агента; чужой текст молча не трогает. Use when надо убрать из русского текста канцелярит, воду и нейросетевую манеру, не сломав смысл, факты и голос автора. Три режима по запросу: редактура, аудит без переписывания, точечная правка одной категории. Со скиллом едет детерминированный сканер scripts/scan.py: считает хард-баны, категории маркеров, ритм и морфологию, печатает ЧИСТОТА: N/100, поэтому правка измерима («было N, стало M»). Флаг --genre academic/legal/fiction/news снимает маркеры, законные для научного, юридического и новостного регистра. Работает ТОЛЬКО с русским: для английского humanizer, для итальянского humanizer-it. НЕ используй для: перевод, написание с нуля, грамматика без стилистики, код.

The English summary is being prepared. Showing the original description.

softmg/otgolosok2Updated Oct 29, 2026

Implement an existing plan from docs/agents/plans/. Use when the user asks to implement, execute, resume, or continue a plan, or references a plan file — the plan's Status line must be updated on completion.

The English summary is being prepared. Showing the original description.

softmg/otgolosok2Updated Oct 29, 2026

Create an implementation plan for any task — feature, refactor, migration, fix — and save it to docs/agents/plans/. Use when the user asks to plan work, write an implementation plan, or prepare a task spec for claude/codex. (Implementing an existing plan is the implement-plan skill, not this one.)

The English summary is being prepared. Showing the original description.

softmg/otgolosok2Updated Oct 29, 2026

Review a project for production readiness. Invoked manually by the user via /production-readiness before deploying or preparing a release.

The English summary is being prepared. Showing the original description.

softmg/otgolosok2Updated Oct 29, 2026

Переписывать русские рассказы о городских точках, перегруженные датами, — цепочки «в 1884 году… 9 февраля 1885-го… в 1989-м… в декабре 1993-го» скучно слушать. Оставлять одну-две опорные даты, остальные выражать через промежутки («через десять лет», «спустя два столетия», «в конце 1980-х»), не теряя смысла и точности. Применять при просьбах убрать перебор дат, сделать рассказ живее на слух или проверить точки, прогулку, партию рассказов на перечисления годов.

The English summary is being prepared. Showing the original description.

softmg/otgolosok2Updated Oct 29, 2026

Заменять инициалы людей в озвучиваемых русских рассказах на полные имена, найденные в источниках («Э.-Р. Нирнзее» → «Эрнст-Рихард Нирнзее»). Применять при просьбах убрать инициалы, исправить плохое произношение имён или проверить на инициалы прогулку, точку или партию рассказов; заголовки и адресные поля карточек не трогать.

The English summary is being prepared. Showing the original description.

softmg/otgolosok2Updated Oct 29, 2026

See all skills by softmg

Report a problem with this skill