pagecraft-s3
Загрузка файлов (картинки, видео, PDF, любые бинарники) в S3-хранилище сайта PageCraft с получением публичного URL — обычно перед вставкой медиа в блоки через скилл pagecraft-pages. Используй, когда пользователь говорит «залей файл в S3», «загрузи картинку для блока», «положи ассет в S3 PageCraft».
How do I install this agent skill?
npx skills add https://page-craft.4partners.io --skill pagecraft-s3Is this agent skill safe to install?
No partner audit is available yet. Read the source before installing.
What does this agent skill do?
PageCraft S3 Storage
Этот skill учит агента работать с S3-хранилищем сайта в PageCraft через V1 REST API: проверять подключение и заливать файлы.
Когда применять
- В брифе пользователя есть локальные пути к ассетам (картинки, видео, PDF), которые надо разместить в блоках.
- Нужно положить файл в S3 и получить публичный URL для подстановки в
placeholder_valuesблока. - Перед стартом работы с лендингом — узнать, подключён ли S3 у сайта.
Жёсткие правила
-
Перед первой заливкой ВСЕГДА вызывай
node scripts/s3-status.mjs <site_id>.- Если
configured: false— S3 не подключён. Сообщи пользователю: «В UI PageCraft → Настройки сайта → S3 нужно подключить хранилище. Я не могу залить файлы без этого». Останови работу с S3. - Если
configured: true, writable: false— выведиerrorпользователю и не пытайся грузить (заливка точно упадёт). Возможные причины: невалидные credentials, нет write-permission, недоступный endpoint. - Если
configured: true, writable: true— можно грузить.
- Если
-
Лимит размера — 100 MB. Большие файлы nginx отрежет с кодом 413. Если у тебя файл крупнее — попроси пользователя сжать или захостить отдельно.
-
Не пытайся угадать MIME-тип или валидировать «опасные» типы. Сервер определит MIME через finfo (читает magic bytes), любые расширения принимаются. Это политика владельца bucket'а, а не наша.
-
URL из ответа сохраняй. Полученный
urlподставляй в поля типаimage/urlвplaceholder_valuesблока (см. skillpagecraft-pages, Шаг 4). Не хардкодь локальные пути.
Окружение
PAGECRAFT_API_KEY— обязательная переменная: API-ключpb_xxxx...(создаётся в UI PageCraft → API keys).PAGECRAFT_API_URL— опциональная: базовый host, по умолчаниюhttps://page-craft.4partners.io(префикс/api/v1добавляется автоматически). Legacy-имяPAGE_CRAFT_API(host с/api/v1) ещё поддерживается как fallback.
Скрипты
| Команда | Endpoint | Когда вызывать |
|---|---|---|
node scripts/s3-status.mjs <site_id> | GET /sites/{id}/s3/status | Шаг 1 — обязательно перед заливкой |
node scripts/s3-upload.mjs <site_id> <file> | POST /sites/{id}/s3/upload | Шаг 2 — для каждого файла |
Workflow
Шаг 1. Проверить подключение S3
node scripts/s3-status.mjs 1
Ответ:
{ "configured": true, "writable": true, "error": null }
Возможные кейсы:
{ "configured": false, ... }— S3 не настроен. Stop. Сообщи пользователю.{ "configured": true, "writable": false, "error": "Access Denied" }— проблема с правами или credentials. Stop. Покажиerror.{ "configured": true, "writable": true, ... }— go.
Шаг 2. Залить файл
node scripts/s3-upload.mjs 1 /path/to/image.jpg
Ответ:
{ "url": "https://bucket.s3.amazonaws.com/uploads/20260605_a1b2c3d4e5f6g7h8.jpg" }
Сохрани url.
Шаг 3. Использовать в блоках
В pagecraft-pages (см. соседний skill) этот URL идёт в placeholder_values блока:
{
"block_id": 5,
"placeholder_values": {
"image_url": "https://bucket.s3.amazonaws.com/uploads/20260605_a1b2c3d4e5f6g7h8.jpg"
}
}
Композиция с pagecraft-pages
Типичный полный сценарий:
pagecraft-s3(этот skill) — для каждого локального файла из брифа:s3-status→s3-upload.pagecraft-pages— собрать страницу из блоков, подставляя полученные URLs вplaceholder_values.
Не пытайся залить файлы через pagecraft-pages — там нет такой команды. Не пытайся хардкодить локальные пути в placeholder_values — на проде их не будет.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/page-craft.4partners.io/pagecraft-s3">View pagecraft-s3 on skillZs</a>