API Журнала научился загружать изображения
Журнал Знаний получил новую возможность — загрузку изображений через API. Теперь статьи можно публиковать не только с текстом, но и с иллюстрациями, диаграммами и скриншотами — и всё одной программной командой.
Зачем это нужно
До сих пор API Журнала умел только одно: принимать markdown-текст и превращать его в статью. Картинки приходилось закидывать вручную через файловую систему — открываешь сервер, создаёшь папку, оптимизируешь, прописываешь путь. Для автоматизации это лишний шаг.
Новый эндпоинт POST /journal/api/v1/images решает проблему. Загрузка и оптимизация — один запрос.
Как это работает
Отправляешь изображение в теле запроса, а API делает всю работу:
- Оптимизация — исходник автоматически конвертируется в WebP, формат в 3–5 раз легче PNG и JPEG при том же качестве.
- Адаптивные варианты — создаётся три размера: 480px для мобильных, 960px для планшетов, 1400px для десктопов.
- Responsive-разметка — фронтенд Журнала автоматически подставляет
<picture>сsrcset, чтобы браузер выбирал подходящий вариант под экран.
В ответе приходит готовый markdown для вставки в статью — один путь, никаких ручных вычислений.
Пример запроса
Загрузка картинки — один curl:
POST /journal/api/v1/images
Authorization: Bearer <token>
Content-Type: image/jpeg
X-Slug: my-post-slug
X-Name: diagram
Тело запроса — бинарные данные изображения. В ответе — JSON с тремя вариантами (480, 960, 1400) и полем markdown с готовой строкой для вставки в статью.
Безопасность
API не просто принимает файлы — он проверяет:
- Magic bytes — содержимое файла должно соответствовать заявленному Content-Type. Переименованный
.exeне пройдёт. - SVG-санитизация — из SVG вырезаются script, iframe, обработчики событий и javascript-ссылки.
- Лимиты — растровые изображения до 10 МБ, SVG до 2 МБ.
- Защита от path traversal — параметры slug и name валидируются.
Workflow: картинка + статья
Правильная последовательность простая:
- Загрузить изображение через
POST /images— получить markdown-путь. - Вставить путь в текст статьи.
- Опубликовать статью через
POST /posts.
Два HTTP-запроса — и статья с иллюстрацией готова. Именно так опубликована эта статья: картинка загружена через API, а потом текст с ней отправлен через API.
Что дальше
API Журнала постепенно обрастает возможностями. Сначала — создание статей. Теперь — загрузка медиа. Следующий логичный шаг — поддержка нескольких изображений в одной статье и автоматическая генерация OG-обложки из первой картинки.
Каждая новая фишка API — это шаг к полной автоматизации пайплайна публикации. Задача — чтобы агент мог подготовить и опубликовать полноценную статью с иллюстрациями без единого ручного действия на сервере.