Stable Diffusion Scripts: полное руководство по скриптам и их настройке

Если после запуска генерации в AUTOMATIC1111 WebUI выпадающий список Script внизу страницы пуст или выдаёт ошибку ModuleNotFoundError в консоли, причина почти всегда кроется в неправильно установленном скрипте или конфликте зависимостей Python. Скрипты — это встроенный механизм расширения функциональности Stable Diffusion WebUI, и понимание того, как они работают, избавляет от большинства подобных сбоев.

В этом материале разберём, чем скрипты отличаются от расширений, куда их помещать, какие из них наиболее полезны для пакетной генерации и постобработки, а также как диагностировать ошибки загрузки. Инструкции ориентированы на локальную установку AUTOMATIC1111 под Windows, но общие принципы применимы и к Linux.

Что такое скрипты в Stable Diffusion WebUI

Скрипт — это Python-файл, который WebUI подхватывает при запуске и добавляет в интерфейс дополнительную логику обработки изображений. В отличие от расширений, скрипты обычно появляются в выпадающем меню Script на вкладках txt2img и img2img и выполняются в момент генерации.

Типичные задачи, которые решают скрипты:

  • 🧩 перебор значений параметров — например, сравнение разных CFG Scale или сэмплеров на одном промпте;
  • 🖼️ пакетная обработка — генерация серии изображений по списку промптов из файла;
  • 🎞️ создание анимаций и видео через покадровый img2img;
  • 📐 постобработка — тайлинг, апскейл с разбиением, сшивка больших полотен.

Важно не путать: расширения (extensions) могут добавлять целые вкладки и менять интерфейс, а скрипты — это более простой механизм, ориентированный на конвейер генерации. Многие популярные дополнения технически являются расширениями, но в сообществе их часто называют скриптами.

Куда устанавливать скрипты

Стандартное место для пользовательских скриптов — папка scripts в корневом каталоге WebUI. Файл с расширением .py, помещённый туда, будет загружен при следующем запуске интерфейса.

Структура установки выглядит так:

stable-diffusion-webui/

├── extensions/ ← расширения (устанавливаются через вкладку Extensions)

├── scripts/ ← пользовательские скрипты .py

│ └── my_script.py

└── webui-user.bat ← файл запуска

После добавления файла необходимо полностью перезапустить WebUI — горячей перезагрузки скриптов нет. Если скрипт скачан архивом, убедитесь, что в папку попал именно .py-файл, а не вложенный каталог с ним.

Установка через вкладку Extensions

Более удобный путь для большинства дополнений — встроенный менеджер расширений. Он сам скачивает файлы из репозитория и упрощает обновление.

Порядок действий:

  1. Откройте вкладку Extensions в верхнем меню WebUI.
  2. Перейдите в подраздел Install from URL.
  3. Вставьте ссылку на Git-репозиторий нужного дополнения и нажмите Install.
  4. Дождитесь сообщения об успешной установке, затем нажмите Apply and restart UI на вкладке Installed.

☑️ Проверка после установки скрипта

Выполнено: 0 / 4
⚠️ Внимание: устанавливайте скрипты и расширения только из проверенных репозиториев. Скрипт — это исполняемый Python-код, который имеет полный доступ к вашей системе: файлам, сети и данным. Перед установкой стороннего скрипта стоит хотя бы бегло просмотреть его исходный код.

Популярные скрипты и их назначение

В WebUI уже встроено несколько скриптов, доступных сразу после установки. Их можно найти в меню Script без какой-либо дополнительной настройки.

СкриптТипНазначение
X/Y/Z plotВстроенныйСетка сравнения параметров: сиды, CFG, сэмплеры, чекпоинты
Prompt matrixВстроенныйКомбинации фрагментов промпта, разделённых символом |
Prompts from file or textboxВстроенныйПакетная генерация по списку промптов
LoopbackВстроенныйПовторный img2img с результатом предыдущего шага
SD UpscaleВстроенныйАпскейл изображения по тайлам с детализацией

Из сторонних решений чаще всего упоминают ControlNet (управление композицией по референсу), Deforum (покадровая анимация) и Ultimate SD Upscale (продвинутый тайловый апскейл). Все они устанавливаются как расширения через вкладку Extensions, но по сути работают как скрипты в конвейере генерации.

📊 Какой скрипт вы используете чаще всего?
X/Y/Z plot для подбора параметров
ControlNet для контроля композиции
Ultimate SD Upscale
Deforum для анимации

Скрипт X/Y/Z plot: подбор параметров без рутины

Самый практичный встроенный скрипт — X/Y/Z plot. Он генерирует сетку изображений, где по осям меняются выбранные параметры, и позволяет за один запуск увидеть, как влияет на результат тот или иной сэмплер или значение CFG.

Чтобы сравнить, например, несколько значений CFG Scale, выберите в поле X type значение CFG Scale, а в X values перечислите варианты через запятую:

5, 7, 9, 12

Результатом будет одна сводная картинка-таблица с подписанными осями. Аналогично можно сравнить сэмплеры (Sampler), сиды (Seed, с указанием диапазона) и даже чекпоинты моделей. Учтите: время выполнения умножается на количество комбинаций — сетка 4×4 означает 16 полных генераций.

Типичные ошибки при работе со скриптами

Большинство проблем проявляется уже при запуске WebUI — в консоли появляется красный traceback, а скрипт в интерфейсе отсутствует. Диагностику стоит начинать именно с чтения текста ошибки, а не с переустановки всего подряд.

Распространённые сценарии:

  • 🐍 ModuleNotFoundError: No module named ... — скрипту не хватает Python-библиотеки; установите её в виртуальное окружение WebUI командой pip install;
  • 🔀 конфликт расширений — два дополнения изменяют один и тот же компонент; отключайте их по одному, чтобы найти виновника;
  • 📁 скрипт лежит не в той папке — проверьте, что .py-файл находится непосредственно в scripts, а не во вложенном каталоге;
  • 🔄 устаревшая версия — после обновления WebUI старые расширения иногда ломаются; обновите их через Extensions → Check for updates.
⚠️ Внимание: массовое обновление всех расширений разом — частая причина «внезапно сломавшегося» интерфейса. Обновляйте дополнения по одному и проверяйте работоспособность после каждого, иначе потом будет сложно понять, какое из них вызвало сбой.

Если WebUI вообще перестал запускаться после установки расширения, удалите его папку из каталога extensions вручную и перезапустите программу. Это безопасная обратимая операция, которая не затрагивает модели и настройки.

Как установить библиотеку в окружение WebUI

Закройте WebUI, откройте командную строку в папке stable-diffusion-webui и выполните: venv\Scripts\python.exe -m pip install имя_библиотеки (для Windows). Затем запустите WebUI снова и проверьте консоль на отсутствие ошибок.

Написание собственного скрипта

Для пользователей, знакомых с Python, WebUI предоставляет открытый API скриптов: достаточно создать класс, наследующийся от modules.scripts.Script, и реализовать методы title(), ui() и run(). Минимальный шаблон занимает пару десятков строк.

Метод ui() отвечает за элементы управления в интерфейсе (слайдеры, чекбоксы на базе Gradio), а run() получает объект обработки p и может изменять промпт, параметры или результат генерации. Актуальный пример структуры стоит смотреть в официальной вики проекта AUTOMATIC1111 на GitHub, поскольку API периодически меняется между версиями.

Часто задаваемые вопросы

Почему скрипт не появляется в списке Script после установки?

Чаще всего WebUI не был полностью перезапущен, файл лежит во вложенной папке вместо корня scripts, или при загрузке возникла ошибка Python — проверьте консоль запуска на наличие traceback.

Чем скрипт отличается от расширения?

Скрипт — одиночный Python-файл в папке scripts, работающий в момент генерации и отображаемый в меню Script. Расширение — полноценный пакет в папке extensions, который может добавлять вкладки, кнопки и менять интерфейс.

Безопасно ли устанавливать скрипты из интернета?

Скрипт — это исполняемый код с полным доступом к системе. Скачивайте дополнения только из известных репозиториев с репутацией и по возможности просматривайте исходный код перед установкой.

Можно ли использовать несколько скриптов одновременно?

В выпадающем меню Script выбирается только один скрипт за раз, но расширения, добавляющие свои панели (например, ControlNet), могут работать параллельно с выбранным скриптом.

Что делать, если после обновления WebUI скрипт перестал работать?

Сначала обновите само расширение через Extensions → Check for updates. Если не помогло — проверьте страницу проекта: возможно, автор уже выпустил исправление или описал несовместимость с новой версией WebUI.