Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: flashcards description: "Флэшкарточки из любого источника (отчёт, книга, урок, закон, расшифровка) — как у NotebookLM, но с источником на каждой карточке, интервальным повторением, тремя типами, ru/uz (латиница и кириллица)/en, картинками в скетч-стиле для канала, PDF для печати, импортом в Anki и квизами в Telegram. Применять при «сделай карточки», «флэшкарточки», «колода для запоминания», «карточки к уроку», «квиз по материалу», «повторение по Anki»."
flashcards — колода, которую запоминают
Навык заведён 25.09.2026 по слову владельца MILAGPT: «пойдём по способностям NotebookLM — генерация флэшкарточек… сделай наш аналог, который будет ещё лучше». Разведка того, как это устроено у Google, есть у старшей. Если коротко, у NotebookLM нет интервального повторения, ссылки на место в источнике, второго языка на карточке, печати и Telegram. У нас всё это есть.
Что получается на выходе
| Файл | Кому и зачем | |
|---|---|---|
cards-<язык>/NN-front.png, NN-back.png | 1080×1350, скетч на кремовой бумаге: пост, карусель, сторис | |
print-<язык>.pdf | A4, 8 карт на лист, обороты зеркально, линии реза: раздатка на занятие | |
trainer.html | тренажёр на телефоне: каталожная карточка с переворотом, свайп вправо — «знаю», влево — «повторить», вверх — «спросить»; кнопки оценки внизу под большой палец; на десктопе клавиши (пробел, ←, →, ↓, ↑); кольцо прогресса; экран итога (сколько знал, что повторить, дата следующей повторки); повторы по Лейтнеру (1·3·7·14·30 дней); язык, режимы «Сегодня · Все · Ошибки»; тёмная тема и «уменьшить движение». Проверен на 360, 390, 430 и 768 px | |
anki-<язык>-basic.txt, anki-<язык>-cloze.txt | импорт в Anki одной кнопкой: тип, колода и теги уже в заголовке файла | |
polls-<язык>.json | квиз-опросы Telegram с правильным ответом и объяснением |
Шаг 1. Разговор до колоды (одним сообщением, не анкетой)
Спросите только то, чего не знаете: для кого колода (ученик, клиент, подписчики канала), сколько карт (мало 8 · стандарт 12 · много 20–30), сложность (лёгкая: факты и определения; средняя: связи и причины; трудная: применение и «почему»), языки, куда (канал, печать, тренажёр, Anki). Не ответили — берите стандарт: 12 карт, смесь сложностей, язык собеседника.
Шаг 2. Колода — deck.json
Пишете её сами по источнику. Образец на 12 карт (аналитический отчёт, 4 языка, все три типа) есть у старшей: попросите его, если нет под рукой.
{"id": "slug-kolody","title": {"ru": "…", "uz_latn": "…", "en": "…"}, // строка или словарь по языкам"subtitle": {"ru": "…"}, "kicker": {"ru": "Коротко, обычным регистром"},"source_doc": {"title": "Название источника", "author": "…", "date": "ДД.ММ.ГГГГ"},"langs": ["ru", "uz_latn", "uz_cyrl", "en"],"ask_bot": "@имя_вашего_бота", // кнопка «спросить подробнее» в тренажёре"cards": [{"id": "c01", "type": "qa", "difficulty": "easy|medium|hard", "tags": ["тема"],"source": {"section": "Раздел источника", "quote": "дословная фраза ≤30 слов"},"ru": {"front": "Вопрос?", "back": "Ответ.", "why": "почему это важно", "hint": "подсказка (необяз.)","answer": "короткий ответ для квиза", "choices": ["неверный 1", "неверный 2", "неверный 3"]}},{"id": "c02", "type": "cloze", "ru": {"front": "Каждое {{пятое}} высказывание — требование.", "back": "пояснение"}},{"id": "c03", "type": "explain", "ru": {"front": "Почему…?", "points": ["мысль 1", "мысль 2", "мысль 3"]}}]}
Правила колоды — то, чем она лучше:
- Источник у каждой карты: раздел и дословная фраза. Цитата остаётся на
языке оригинала, её не переводят. Нет фразы в источнике — нет карты. Проверка не пропустит карту без источника.
- Одна карта — одна мысль. Лицо ≤30 слов, оборот ≤45. Список из пяти пунктов
дробится на карты.
- Смесь типов. Примерно половина
qa, четвертьcloze(пропуск — цифра,
термин, ключевое слово; можно два пропуска), четверть explain («объясните своими словами» + 2–4 опорные мысли на обороте). explain учит понимать, а не угадывать.
- `why` на обороте: одна фраза, зачем это знать. Это наш ответ на кнопку
Explain у NotebookLM, только на самой карте.
- Неверные варианты для квиза правдоподобны и из того же источника, а не
очевидная чепуха. Без answer и choices карта в квиз не идёт, и это нормально.
- Цифры — как в источнике. Не округляйте и не пересчитывайте. Если доля
посчитана на малой выборке, скажите это в why.
- Узбекский: пишите
uz_latn(латиница 2021+, апострофʻU+02BB в oʻ/gʻ,
ʼ U+02BC). uz_cyrl соберётся сама из латиницы (scripts/translit_uz.py, исключения — месяцы, -tsiya → -ция, korrupsiya). Хотите проверить — задайте uz_cyrl явно. Узбекский текст наружу вычитывает носитель, это правило из humanizer-uz и uzbek-editor.
Шаг 3. Проверка и сборка
S=~/.claude/skills/flashcards/scriptspython3 $S/deck.py check ~/work/<колода>/deck.json # ошибки ✗ исправить, предупреждения ⚠ прочитатьpython3 $S/deck.py build ~/work/<колода>/deck.json ~/work/<колода>/outpython3 $S/deck.py render ~/work/<колода>/out # PNG и PDF
У компаньона браузера нет, поэтому render кладёт заявки в ~/work/render-queue/ (очередь хоста, раз в минуту). Готово, когда рядом с каждой заявкой появился .done с "ok": true. Папка колоды обязана лежать внутри ~/work. На 12 карт × 4 языка это ~100 заявок, минут 5–8. Одного языка для канала хватает: build … --lang ru.
Посмотрите 2–3 PNG глазами (Read), прежде чем отдавать: текст не вылез, пропуск виден, источник читается.
Шаг 4. Куда отдать
- Человеку на телефон —
trainer.htmlфайлом. Шрифты внутри, сеть не нужна,
прогресс хранится на его устройстве. Если попросят ссылку — просите старшую выложить страницу.
- В канал — 3–5 пар PNG каруселью (лицо, потом оборот) по правилам публикации
вашего владельца: пост наружу — после его «да».
- На занятие —
print-<язык>.pdf: печать двусторонняя, переворот по длинному краю. - В Anki —
anki-*.txt: Файл → Импорт, всё уже размечено. - Квиз в Telegram — сначала показ:
python3 $S/deck.py polls out/polls-ru.json --chat <id>, отправка — с --send. Отправлять только в чат, где владелец или ученик попросил квиз. Бот должен быть в этом чате. В группе ответы не анонимны: участники увидят, кто как ответил.
Картинка-иллюстрация (по желанию)
У карты может быть поле "image": "file.png" рядом с deck.json: рисунок встанет над вопросом. Рисунок делайте навыком genimage с фиксированным блоком стиля из mila-studio/prompts/style-sketch.md (карандашный скетч, masterpiece), без текста на картинке: весь текст карта ставит сама. Один рисунок стоит ≈ $0,14. На колоду хватит одного, для обложки или первой карты, а не на каждую карту.
Сколько стоит
Сборка, PNG, PDF, тренажёр, Anki и квизы — бесплатно: всё собирается у нас. Платны только иллюстрации genimage, ≈ $0,14 штука, по желанию. Колода без картинок стоит только вашего времени на deck.json.
Чего навык не делает
- Не выдумывает факты: всё берётся из источника, который дал человек.
- Не публикует сам: PNG в канал и квизы — только туда, где попросили.
- Не хранит прогресс ученика у нас: тренажёр пишет только в его браузер.