Проверять обратные ссылки вашего сайта в n8n или в обычном Python?
Холст из 25 узлов для трехшаговой задачи — это частая ошибка. Скрипт, который никто другой не сможет редактировать — другая. Используйте дерево решений.
Редакция Linkzoid ·
Дерево решений, сверху вниз
Будет ли кто-то нетехнический редактировать поток или читать его запуски? Выберите n8n или Make.
Вмещается ли задача в 60 строк и живет ли она в репозитории? Выберите Python.
Нужен ли пост в Slack и строка в таблице, но без сравнения изменений? Выберите n8n с одним узлом HTTP Request.
Сравниваете ли вы десятки доменов, храните историю или юнит-тестите парсинг? Выберите Python с SQLite.
Уже ли вы платите за облачные выполнения в n8n? Посчитайте их: цикл по 40 доменов может съесть тарифный план.
Ничто из вышеперечисленного не подходит? Начните с curl в shell-скрипте и посмотрите, что будет проблемой.
Когда визуальный поток оправдывает себя
Холст стоит своего беспорядка в некоторых задачах. Если нетехническому специалисту нужно видеть каждый шаг и его последний запуск, визуальный поток лучше репозитория, который они никогда не откроют. Держите его коротким.
Большинство задач по обратным ссылкам — это получение данных, проверка и запись. Четыре узла справляются с этим хорошо. Если ваша задача — ежемесячно проверять обратные ссылки вашего сайта для клиента, такая форма подходит для холста. Проблемы начинаются, когда кто-то добавляет пагинацию, повторные попытки и сравнение, потому что каждое из них создает свою ветку.
Выбирайте холст для читателя, а не для автора.
Кто читает поток
Маркетологи и продавцы читают поток по его выводам, и им нужен последний запуск на виду. Холст дает им это без создания тикета. Они читают вывод, а не код. Скрипт дает им лог-файл, который они не откроют.
Дайте потоку понятное имя и однострочное описание, чтобы следующий читатель знал, чего ожидать, прежде чем открывать его. Узел с неясной меткой обойдется дороже, чем любая отсутствующая функция.
Ветки, которые видны с первого взгляда
Узел IF на ok легко понять. Три таких узла на одной странице все еще читаемы, если каждая ветка имеет понятное имя. За этим пределом линии пересекаются, и рецензенту нужно десять минут, чтобы убедиться, какая ветка сработает при пустом результате.
Когда холст становится обузой
Циклы по множеству доменов, общее состояние между запусками и юнит-тесты — это обычные точки напряжения. Холст справляется с каждым из них через обходные пути, и каждый обходной путь — это место, где поток может отклониться от задуманного.
Если вы обнаруживаете, что экспортируете JSON, чтобы исправить поток, задача уже вышла за рамки холста. Перенесите логику в код, а холст оставьте для уведомлений.
Настройка n8n в четырех строках
Один узел HTTP Request, метод GET, URL https://linkzoid.pro/api.php. Добавьте параметры запроса action, q, key. Любой, кто хочет проверить обратные ссылки вашего сайта таким образом, может скопировать это за пять минут.
Храните ключ в учетных данных, а не в узле. Добавьте узел IF на ok и отправьте ветку false в рабочий процесс ошибок, который отправит вам уведомление.
Разделите массив rows с помощью узла Item Lists или Split Out, затем запишите в Google Sheets или Postgres. Следите за счетчиком выполнений, потому что каждый элемент может считаться шагом на некоторых тарифах.
Это вся задача. Она ломается, когда появляется пагинация: циклы в n8n работают, но читаются хуже, чем примерно десять узлов.
Создайте поток n8n из пяти узлов
Каждый узел выполняет одну задачу, и каждый из них можно протестировать отдельно перед добавлением следующего.
01
Создайте узел HTTP Request
Метод GET и URL https://linkzoid.pro/api.php. Добавьте action, q и per как параметры запроса, а ключ оставьте для следующего шага.
02
Привяжите ключ как учетные данные
Сохраните его в учетных данных n8n и ссылйтесь на него из запроса. Ключ, введенный прямо в поле URL, может попасть в логи и экспорты.
03
Фильтр по флагу ok
Добавьте узел IF, который читает ok. Отправьте ветку false в рабочий процесс ошибок, который публикует тело ответа в месте, где вы его увидите.
04
Разделите строки
Используйте Split Out для массива rows, чтобы каждый домен стал отдельным элементом. Записывайте эти элементы в таблицу или базу данных, а не весь ответ в одну ячейку.
05
Протестируйте сначала на бесплатном действии
Направьте узел на overview, которому не нужен ключ, и подтвердите структуру ответа, прежде чем переключаться на платное действие.
Таблица устранения неполадок
Симптом
Причина в n8n
Причина в Python
Приходит только 10 строк
Не установлен параметр per в узле
То же самое, проверьте строку запроса
Запуск успешен, таблица пуста
Строки не разделены на элементы
Записан словарь вместо rows
402 после недели
Рабочий процесс зацикливается на триггере
Cron срабатывает дважды
Ключ утекает в логи
Вставлен в поле URL
Выведен полный URL
Пробелы в данных от месяца к месяцу
Хранение выполнений удалило старые запуски
Никогда не сохранялась история
Стоимость запуска
С нашей стороны стоимость одинакова в обоих случаях: 2 кредита за страницу refdomains. Различия в стоимости возникают у создателя.
Самостоятельно размещенный n8n бесплатен в использовании. Облачные планы учитывают выполнения. Обычный скрипт в cron ничего не стоит.
Каким бы ни был ваш выбор, сохраняйте dated-копию каждого запуска вне инструмента. Еженедельные снимки в Actions — одно аккуратное место для этого, а сравнение пакетов объясняет, почему ваша собственная история стоит того.
Посчитайте выполнения на домен
Цикл по сорока доменам — это сорок запусков на плане, который учитывает выполнения. Проверьте, как ваш план считает цикл, прежде чем ставить его в расписание, потому счет следует за количеством, а не за кредитами.
Запишите ожидаемое количество рядом с расписанием. Сюрприз в счете легче объяснить, если оценка уже была в файле.
Самостоятельный хостинг имеет свою цену
Самостоятельно размещенный n8n стоит сервер, обновления и резервные копии. База данных ваша, и вы должны поддерживать ее в живом состоянии. Обычный скрипт на маленькой машине имеет меньше движущихся частей, что является одной из причин выбрать его для фиксированной ежемесячной задачи.
Что обычно ломается первым
В n8n это пагинация и количество элементов. В Python это то, что никто не тестировал: пустой rows, таймаут, поле, которое называется иначе, чем вы предполагали.
Ни один инструмент не ошибается. Выбирайте по тому, кто будет поддерживать это через шесть месяцев. Если это вы, один, код легче искать. Если это маркетинговая команда, которая уже живет в холсте, небольшой поток, который они могут видеть, лучше репозитория, которого они боятся.
Смешанные настройки тоже работают. Пусть Python записывает CSV по расписанию, а n8n читает файл и публикует в Slack. Каждый инструмент делает ту часть, которую он обрабатывает лучше всего, и ни один поток не вырастает больше десяти шагов.
Сохранение читаемости версии Python
Обычный случай для кода — что кто-то другой должен будет изменить его через шесть месяцев. Сделайте это легко. Короткий скрипт с понятными именами и сохраненным ответом лучше, чем умная однострочная конструкция, к которой никто не смеет прикоснуться.
Протестируйте парсер на сохраненном ответе
Сохраните один реальный ответ в файл и направьте на него юнит-тест. Парсер затем запускается без траты кредита, а переименованное поле упадет в тестовом запуске, а не в понедельник утром.
Держите сохраненный ответ небольшим, так как дюжина строк достаточно. Укажите дату, когда вы его взяли, чтобы знать, когда имена полей менялись в последний раз.
Держите настройки в одном месте
Домены, действия и размер страницы принадлежат небольшому блоку конфигурации, а не разбросаны по скрипту. Тогда коллега сможет изменить список целей, не касаясь логики парсинга строк.
Держите секреты вне этого блока тоже. Загружайте их из окружения, тем же способом, каким загружается ключ.
Запустите двухнедельное испытание перед тем, как принять решение
Не решайте это на бумаге. Создайте минимальную версию задачи в каждом инструменте, запускайте ее каждый день в течение двух недель и посмотрите, какой из них вы открываете без запроса.
Посмотрите, что ломается. Посчитайте количество раз, когда вам приходилось что-то редактировать вручную, и количество раз, когда вывод был неверным без ошибки. Инструмент, который требует меньше ручных исправлений, — тот, который нужно оставить.
Логгируйте каждое ручное исправление
Ведите простой список каждого раза, когда вы трогали поток или скрипт вручную. Короткий список после двух недель скажет вам больше, чем любая таблица функций.
Отмечайте, кто просил изменения
Если запросы поступали от людей, которые не умеют читать код, холс может выиграть. Если они поступили от вас, репозиторий легче поддерживать.
Любой ответ хорош, пока вы можете на него сослаться. Напишите причину рядом с потоком или репозиторием и пересмотрите ее, когда задача вырастет.
Короткие ответы для разработчиков
Работает ли Make или Zapier с этим API?
Да. Любое приложение, которое может отправить HTTPS GET с параметрами запроса, работает, включая Make, Zapier, Pipedream и Apps Script. Используйте общий HTTP-модуль, поместите ключ в сохраненное соединение и прочитайте массив JSON rows на следующем шаге.
Может ли AI агент вызвать его вместо этого?
Технически да, так как это обычный HTTP API. Для фиксированной ежемесячной задачи скрипт дешевле и предсказуемее, а агент добавляет счет за модель и шанс неверного параметра. Используйте агента только для разовых вопросов.
Какой самый дешевый способ начать?
Shell-скрипт с curl и бесплатным действием overview, запущенный из cron. Без ключа, без стоимости, и вы изучите структуру ответа. Переходите на Python, когда появится первое неудобное парсинг JSON.