惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
WordPress大学
WordPress大学
The Cloudflare Blog
云风的 BLOG
云风的 BLOG
博客园 - Franky
D
Docker
小众软件
小众软件
阮一峰的网络日志
阮一峰的网络日志
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
U
Unit 42
M
MIT News - Artificial intelligence
B
Blog
GbyAI
GbyAI
C
Check Point Blog
P
Proofpoint News Feed
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
IT之家
IT之家
Google DeepMind News
Google DeepMind News
V
V2EX
Stack Overflow Blog
Stack Overflow Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Перевёл 16 курсов Anthropic Academy на русский и собрал п...
StudyQA · 2026-05-14 · via Все публикации подряд на Хабре

Anthropic выпустили бесплатные курсы по работе с Claude на Skilljar. Claude 101, Claude Code, API, MCP, субагенты, AI Fluency. 440 уроков, 325 видео. Проблема: всё на английском, сервис в России заблокирован.

Я прошёл все курсы, перевёл и выложил на university.stadika.ru/anthropic-academy. Здесь расскажу, как устроено внутри.

Что переводили и чем

16 курсов, 448 уроков в JSON, 325 видео (5.6 ГБ), 2170 файлов субтитров.

Текстовый контент переводил через Gemini 2.5 Flash. Не Claude, хотя курсы про Claude. Причина прагматичная: Gemini дешевле для массового перевода, длинный контекст, достаточное качество для учебных текстов.

Пайплайн

  1. Парсинг оригинального контента из JSON

  2. Перевод через Gemini API (translate-content.py)

  3. Генерация субтитров из аудиодорожек видео (transcribe-gemini.py)

  4. Конвертация SRT в VTT для браузерного плеера

  5. Склейка фрагментированных уроков (rewrite-fragments.py). Оригинал Skilljar дробит один урок на 5-10 фрагментов по 2-3 абзаца. Удобно для их LMS, неудобно для чтения. Gemini собирал фрагменты в цельный текст

  6. Генерация итоговых тестов по каждому курсу (generate-quizzes.py)

Валидация перевода

Промпт простой: “переведи на русский, сохрани форматирование, не переводи термины API/SDK/MCP/prompt”. Главное было не сломать HTML-разметку внутри JSON. Gemini справлялся, но примерно в 5% случаев ломал теги. Добавил валидацию на выходе: скрипт проверяет парность тегов, сравнивает количество <code>, <pre>, <a> до и после перевода.

Стек

Фронтенд: React 19 + Vite, SPA с BrowserRouter. Без UI-фреймворков, без SSR. Бандл ~110 КБ gzip. Каталог курсов и программы уроков зашиты в JSON, контент уроков подгружается по требованию.

Бэкенд: PHP, без фреймворков. 10 файлов в папке /api/. Без базы данных.

Хостинг: Beget, shared, 150 руб/мес. .htaccess делает маршрутизацию: lesson-gate для премиум-защиты контента, SPA fallback для всего остального.

Telegram-бот (авторизация): отдельный VPS, Hetzner, Docker, aiogram.

Авторизация через Telegram

Стандартный Telegram Login Widget не подходил: требует HTTPS callback и верификацию на бэкенде. На shared-хостинге неудобно. Сделал проще:

  1. Пользователь нажимает “Войти через Telegram” на сайте

  2. Открывается бот @StadikaCoursesBot с deep link, содержащим одноразовый токен

  3. Бот получает /start с токеном, сохраняет связку token-user

  4. Фронтенд поллит API каждые 2 секунды: “пришёл ли пользователь с таким токеном?”

  5. Когда бот подтверждает, фронтенд сохраняет данные в localStorage + cookie

Без OAuth, без JWT. Для учебной платформы это избыточно. Cookie aa_uid нужен для серверной проверки оплаты, localStorage для фронтенда. Пользователь тратит 5 секунд.

Зачем авторизация, если контент бесплатный? Контакт пользователя для коммуникации и привязка оплаты к аккаунту.

Paywall и оплата

70% уроков каждого курса бесплатные. Оставшиеся 30% + итоговый тест закрыты. Разблокировка: 900 руб., разовая оплата, навсегда.

Оплата через Robokassa. Интеграция минимальная: pay-init.php формирует URL с подписью SHA-512, pay-result.php принимает callback и создаёт файл-маркер /paid/{user_id}_{course}. Файловая “база данных”. При 100 платящих пользователях это 1600 файлов по 0 байт. Упрётся в лимиты inodes только при десятках тысяч.

Фискализация по 54-ФЗ: чек передаётся в параметре Receipt URL Робокассы.

Серверный гейт

Фронтовый paywall сам по себе бесполезен. JSON-файлы лежали на диске и были доступны напрямую. Любой мог открыть /content/claude-101/lessons/14.json и прочитать premium-урок.

Поэтому добавил серверный гейт: .htaccess перехватывает все запросы к lesson JSON и проксирует через PHP, который проверяет позицию урока и наличие оплаты. Бесплатные уроки отдаются сразу, premium без оплаты возвращают 403.

RewriteRule ^content/([a-z0-9\-]+)/lessons/([0-9]+)\.json$
  api/lesson-gate.php?course=$1&lesson=$2 [QSA,L]

Что можно улучшить

Файловая система вместо БД. Пока работает, но при росте нагрузки стоит перейти на SQLite. Один файл, zero config, PHP имеет встроенную поддержку.

Субтитры. Сгенерированы через Gemini из аудио. Качество 85-90%, есть ошибки в терминологии. Можно прогнать второй раз с терминологическим словарём.

Тесты. Пока простые: 8 вопросов, множественный выбор, ответ скрыт под тегом details/summary. Полноценный quiz-движок с подсчётом баллов и сертификатом ещё не сделан.

Видео. Хостятся на том же Beget. 5.6 ГБ. Shared-хостинг это выдерживает, но при нагрузке стоит вынести на CDN или S3-совместимое хранилище.

Ссылка

university.stadika.ru/anthropic-academy

16 курсов, 448 уроков, от Claude 101 до продвинутого MCP. 70% бесплатно. Видео на английском с русскими субтитрами, текст полностью на русском.


Пишу о разработке, AI-инструментах и автоматизации в своём Telegram-канале @popovvii. Если нужна разработка под ваш проект, пишите.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

0%Да, на английском0

0%Попробую русскую версию0

100%Не знал, что есть курсы2

50%Учусь по документации, курсы не нужны1

Проголосовали 2 пользователя. Воздержавшихся нет.