Антон Малявский Антон Малявский

Iskra

9 февраля 2026 г.

Что это?  Ссылка на этот раздел

Iskra — мой плагин для Obsidian, который ускоряет работу с изображениями для заметок и сайта: принимает файлы через drag&drop или выбор из окна, локально обрабатывает (ресайз, безопасное имя, md5, размеры), вставляет ссылки в нужное место заметки и при необходимости загружает результаты в CDN через rclone.

Iskra plugin
Нарисовал логотип плагина

Зачем?  Ссылка на этот раздел

  • Чтобы не гонять руками десятки картинок через отдельные скрипты.
  • Чтобы вставка в заметку шла строго в позицию курсора (через якорь), а не «куда-то вниз».
  • Чтобы загрузка в CDN шла в фоне, с очередью, паузой и повторными попытками.
  • Чтобы весь процесс был виден в status bar и не тормозил Obsidian.

Что умеет?  Ссылка на этот раздел

Импорт через модалку  Ссылка на этот раздел

  • Кнопка в Ribbon + команда Импорт изображений.
  • Drag&drop и клик для выбора файлов.
  • Прогресс по пачке, отмена и скрытие окна.

Обработка изображений (локально)  Ссылка на этот раздел

  • Работает на macOS через sips.
  • Поддерживает .jpg, .jpeg, .png, .webp, .heic/.heif.
  • Не делает апскейл (если исходник уже меньше целевой ширины).
  • Нейминг: <safe-name>_<md5>_<W>x<H>.<ext>.

Вставка в заметку без потери позиции  Ссылка на этот раздел

  • На старте пачки ставит якорь <!-- iskra:import:<jobId> --> в курсор.
  • После обработки заменяет якорь на блок ссылок.
  • Если якорь удалили вручную — вставляет блок в конец заметки.

Форматы ссылок  Ссылка на этот раздел

  • Markdown: ![](...).
  • Obsidian: ![[...]].
  • Для локальных ссылок используется путь без ведущего /.

Очередь загрузки в CDN (R2 через rclone)  Ссылка на этот раздел

  • Загрузка через rclone copyto.
  • Персистентная очередь (сохраняется между перезапусками).
  • Повторы с backoff при сетевых проблемах.
  • Пауза/продолжение и ручной retry.

Status bar и dashboard  Ссылка на этот раздел

  • Состояния: Idle, Active, Paused, Warning, Error.
  • Клик по иконке: import / pause / resume / retry (зависит от состояния).
  • Клик по числам: dashboard с деталями и управлением.
  • В dashboard есть таймер следующей попытки загрузки.
  • В dashboard убрана лишняя кнопка копирования ошибки; ошибки и детали смотрим через историю.
  • Кнопка паузы динамическая: Пауза / Продолжить по состоянию.
  • В idle по клику на иконку открывается меню: Импорт изображений, История, Настройки.

История синхронизации  Ссылка на этот раздел

  • Единая история событий вместо отдельного лога ошибок.
  • Фильтры: Все, Ошибки, Пропущенные.
  • Поиск по строкам истории (по имени файла, тексту ошибки, пути и т.д.).
  • Подсветка ошибок и пропущенных/предупреждений.
  • Live-обновление прямо в открытом окне (новые строки появляются на лету, без переоткрытия).
  • Очистка истории и копирование видимого списка.

Интеграция с AI Alt Plugin  Ссылка на этот раздел

  • Опционально можно запускать внешний плагин после вставки пачки изображений.
  • По умолчанию команда: ai-alt:ai-alt-fill-placeholders-in-note.
  • Команда настраивается в настройках Iskra.

Команды (Command palette)  Ссылка на этот раздел

  • Импорт изображений

Настройки  Ссылка на этот раздел

Обработка  Ссылка на этот раздел

  • Ширина (px) — целевая ширина ресайза.
  • JPEG качество — качество при конвертации в JPEG.
  • Параллелизм обработки — число одновременных задач.
  • PNG режим — оставлять PNG или условно конвертировать в JPEG.
  • Сортировать перед вставкой — natural sort по имени файла.
  • Формат вставки — Markdown или Obsidian.

Файлы  Ссылка на этот раздел

  • Папка назначения внутри vault — куда сохраняются обработанные файлы.

Ссылки  Ссылка на этот раздел

  • Стратегия ссылок — локальные или CDN.
  • Базовый URL CDN — база для внешних ссылок (если выбран CDN).

Загрузка (R2 через rclone)  Ссылка на этот раздел

  • Загрузка в CDN (R2) — включить/выключить upload.
  • Путь к rclone — бинарь rclone.
  • Доп. параметры rclone — произвольные CLI-флаги.
  • Target — удалённая папка вида r2:bucket/path.
  • Пачка загрузки за один проход — размер цикла отправки.
  • Интервал авто-повтора — базовый retry для не-сетевых ошибок.
  • Проверить подключение — быстрый тест rclone lsf.

История  Ссылка на этот раздел

  • Debug логирование — добавляет в историю технические подробности.
  • Открыть историю / Очистить историю.

Интеграция  Ссылка на этот раздел

  • Запуск AI Alt Plugin после вставки — toggle.
  • ID команды AI Alt Plugin — настраиваемый command id.

Как это устроено (логика)?  Ссылка на этот раздел

  1. Пользователь добавляет файлы через модалку импорта.
  2. Плагин ставит якорь в активную заметку.
  3. Файлы обрабатываются локально через sips и сохраняются в целевую папку.
  4. Якорь заменяется на блок ссылок одним изменением текста.
  5. Если включена загрузка в CDN — файлы попадают в очередь rclone.
  6. Status bar показывает состояние, dashboard даёт управление процессом.
  7. При включённой интеграции запускается команда AI Alt Plugin.

История событий  Ссылка на этот раздел

История пишется в iskra-history.log в данных плагина:

  • события обработки и загрузки,
  • ошибки и предупреждения,
  • ключевые переходы состояний,
  • итоговые сообщения (Все изображения синхронизированы).

История ограничена по объёму/строкам и не растёт бесконечно.

Типовой воркфлоу  Ссылка на этот раздел

  1. Открываю заметку и ставлю курсор в нужное место.
  2. Запускаю Импорт изображений.
  3. Перетаскиваю пачку файлов.
  4. Получаю готовые ссылки в заметке.
  5. При включённом upload жду, пока очередь уйдёт в CDN.
  6. При включённой AI Alt интеграции запускается заполнение alt.

Устранение неполадок  Ссылка на этот раздел

sips недоступен  Ссылка на этот раздел

Плагин рассчитан на macOS. Проверь, что sips доступен в системе.

Не загружается в CDN  Ссылка на этот раздел

Проверь rclone path, target, CLI-флаги и подключение через кнопку проверки.

Нет интернета  Ссылка на этот раздел

Очередь переходит в warning и повторяет попытки по backoff.

Якорь удалили вручную  Ссылка на этот раздел

Пачка всё равно вставится в конец заметки.

Глоссарий (для себя)  Ссылка на этот раздел

  • Пачка: набор файлов, добавленных за один запуск модалки.
  • Якорь: временный комментарий в заметке для точной вставки результата.
  • Очередь: список файлов, ожидающих загрузки в CDN.

Обновления  Ссылка на этот раздел

0.3.1  Ссылка на этот раздел

  • История в модальном окне переведена в live-режим: обновляется на лету (интервал 500 мс).
  • Улучшено окно состояния загрузки: убрана кнопка Скопировать ошибку, сделана более компактная компоновка.
  • Кнопка управления паузой в dashboard теперь контекстная: Пауза / Продолжить.
  • Исправлен текст уведомления при возобновлении: Iskra: продолжаем.

0.3.0  Ссылка на этот раздел

  • Добавлено окно истории синхронизации с фильтрами, поиском, копированием и очисткой.
  • История стала единым журналом событий (обработка + загрузка), вместо отдельного лога ошибок.
  • В status bar для idle добавлено меню: Импорт изображений, История, Настройки.
  • В настройках раздел Логи заменён на История.
  • Окно истории сделано компактнее и ближе к нативному UI Obsidian.

0.2.0  Ссылка на этот раздел

  • Базовый релиз Iskra как no-build плагина (main.js, manifest.json, styles.css).
  • Модалка импорта с drag&drop, прогрессом, отменой и скрытием.
  • Обработка изображений через sips с неймингом safe_md5_WxH и правилом no-upscale.
  • Вставка по якорю с fallback в конец заметки.
  • Локальные и CDN ссылки, настраиваемый формат вставки.
  • Очередь rclone с персистентностью, retry, паузой и status bar.
  • Dashboard состояния, лог с ограничением роста, русификация UI.
  • Интеграция с AI Alt Plugin по команде после вставки пачки.

0.1.0  Ссылка на этот раздел

  • Черновой каркас плагина и первичная реализация импорта/обработки.
Есть что сказать? Напишите мне!
Комментировать по почте
Понравилось? Подпишитесь на меня!
RSS Телеграм