← на главную

Как добавить новый лендинг

Полный workflow от идеи до продакшена за 3 минуты — локально собрать, одной командой задеплоить на lendings.xezero.com.

TL;DR:  node pipeline/build.js --domain=X --geo=FR --offer=Y  →  node pipeline/deploy.js --site=X  →  https://lendings.xezero.com/X/

1 Параметры лендинга

Тебе нужно решить 4 вещи:

ПараметрЧто этоПример
domainИмя папки и публичный URLluckyspin-fr.com
geoГео-таргетFRAUNZDE
offerБренд-оффер из _shared/offers/LuckySpin · PrimaPlay · MafiaCasino
paletteЦветовая схемаdark-gold · red-black · neon-purple · vegas-neon

2 Локальная сборка

Один лендинг

cd D:\claw\landings
node pipeline/build.js \
  --domain=luckyspin-fr.com \
  --geo=FR \
  --offer=LuckySpin \
  --palette=dark-gold \
  --ref=lucky8fr.fr

→ за миллисекунды появится папка sites/luckyspin-fr.com/ с index.html (~21 КБ), картинками, SEO-обвязкой и отчётом.

Через дашборд

cd D:\claw\landings
npm start
# открой http://localhost:3000
# жми «+ Новый лендинг», заполни форму, получи лог сборки в реальном времени

Готовые демо-пресеты

npm run demo:fr    # FR LuckySpin dark-gold
npm run demo:au    # AU PrimaPlay red-black
npm run demo:nz    # NZ MafiaCasino neon-purple
npm run demo:de    # DE LuckySpin vegas-neon
npm run demo:all   # все 4 подряд

3 Деплой на lendings.xezero.com

Один скрипт deploy.js заливает на cPanel-хостинг через Fileman API + ephemeral PHP-распаковщик (он сам себя удаляет после).

Один лендинг

npm run deploy:site -- --site=luckyspin-fr.com

https://lendings.xezero.com/luckyspin-fr.com/

Все лендинги (sites/* кроме _hub)

npm run deploy:all

Обновить главную страницу хаба

npm run deploy:hub

https://lendings.xezero.com/ (после правки sites/_hub/index.html)

Обновить ТЗ

npm run deploy:tz

https://lendings.xezero.com/tz.html

Всё разом

npm run deploy:everything

4 Что под капотом deploy.js

  1. Собирает tarball с нужными файлами (через системный tar)
  2. Логинится в cPanel server3.firsthost.lv:2083 с creds из .env
  3. Заливает архив + одноразовый unpack.php через Fileman/upload_files
  4. Дёргает unpack.php?k=<random-secret> — он:
    • распаковывает архив через PharData (нативный PHP)
    • удаляет архив
    • удаляет сам себя
  5. Проверяет публичные URL через HEAD-запросы
⚠️
Почему такой костыль с PHP?
Fileman/extract API в этой сборке cPanel не установлен. SSH-22 закрыт. Поэтому деплой через PHP-распаковщик. Работает быстро (~3-5 секунд на лендинг) и безопасно (одноразовый секрет, файл удаляет себя).

5 Добавить новый оффер

Если казино-бренд новый и его ещё нет в _shared/offers/:

cp _shared/offers/_TEMPLATE.json _shared/offers/MyBrand.json

Заполни:

{
  "brand": "MyBrand",
  "tracking": {
    "type": "redirect",
    "url": "https://aff.tracker.com/?c=MYBRAND&s={SUBID}"
  },
  "bonus": {
    "main": "100% jusqu'à 500€",       // FR
    "main_au": "100% up to A$500",     // AU
    "main_de": "100% bis zu 500€",     // DE
    "extra": "+200 Free Spins",
    "min_deposit": 20,
    "currency": "EUR",
    "wager": "x35",
    "code": "WELCOME"
  },
  "license": "Curacao 8048/JAZ",
  "payments": ["VISA", "Mastercard", "Skrill", "Bitcoin"],
  "geos_allowed": ["FR", "AU", "NZ", "DE"],
  "geos_restricted": ["US", "UK"],
  "min_age": 18,
  "year": 2026
}

Дальше используй --offer=MyBrand в build.js.

6 Включить настоящие картинки (Gemini)

Без ключа — лендинги собираются с SVG-плейсхолдерами. С ключом GEMINI_API_KEY в .env или env-vars автоматом включается Gemini 3.1 Flash Image:

Стоимость: ~$0.50 за лендинг (12 картинок × $0.04). Кэш — логотипы и иконки переиспользуются между лендингами одного бренда.

7 Полный workflow одной строкой

🚀
npm run build && npm run deploy:site -- --site=<domain>
сборка → деплой → готово к показу

8 Где что лежит

Локально
D:\claw\landings\
Сервер
/home/gogetspin/public_html/lendings.xezero.com/
cPanel
server3.firsthost.lv:2083 · login gogetspin
GitHub
Public URL
Дашборд
npm startlocalhost:3000
Полное ТЗ

🎰 Lendings Factory · D:\claw\landings · 39-agent crew