7

N8N - автоматизации для дома и работы

Хотел найти на пикабу статьи по N8N, но поиск выдал... ничего. Неожиданно, т.к. тема набирает обороты, но раз ничего, то я буду первым.

Что-ж это за зверь такой, N8N?
По факту, это модульный конструктор автоматизаций без кода(ну почти =) ). Вся логика выстраивается как конструктор из кубиков. По очереди. Множество проектов можно собрать вообще не написав ни одной строки кода, а если вдруг оно нужно будет, тут за вас это за секунду сделает любая нейросеть, хоть ChatGPT, хоть Gemini, хоть... Deepseek... Если как обычно не уснет во время ответа))
Давайте сразу пример, чтобы было интереснее. У меня есть основная электронная почта, которой уже куча лет. И там творится полный... Хаос. Назовем это так) Там и спам, и реклама, и че только нет. И разгребать ручками мне это надоело, да и куча уведомлений на телефон отвлекают. Я сделал автоматизацию, это ИИ сам разбирает мою почту, решает что важно, а что нет, и сообщает мне только о важном. И теперь у меня почта разбирается сама, реклама\спам удаляются сразу, а я получаю только важные уведомления, которых не так-то и много... Кстати... Я тут говорил давайте сразу пример, а в итоге налил 3 ведра воды. Эт норма, привыкайте, если еще читаете =)
Вот, теперь точно сразу пример. Вот так выглядит вся автоматизация. Весьма короткая. Для тех, кто вообще не в теме, сейчас все расскажу)

Итак, давайте по очереди. Видите ноду Schedule Trigger?.. Ах да. Нода, это... тот самый кубик, о котором я говорил выше. И из этих кубиков строим башню. Каждая нода отвечает за свой функционал. Она может что-то делать сама, а может слушать, что ей сказали другие ноды, которые уже выполнили свою часть работы. надеюсь понятно объяснил.
Итак. Schedule Trigger. По факту, это нода расписания, когда она будет будить следующую ноду, чтобы наша автоматизация начала работать. У меня стоит 20 секунд в настройках. Можно указывать интервал в секундах, минутах, часах, днях, неделях, месяцах и в CRON(линуксойды оценят).

Да. Все на английском, и русского нет. Но он и не особо нужен т.к. сейчас любой браузер умеет переводить на русский без проблем, так что не проблема.
Дальше мы видим ноду "Получаем 1 письмо". Она просто обращается к моему почтовому ящику по IMAP и забирает оттуда все непрочитанные письма из папки "Входящие". А почему в названии указано получаем 1 письмо, а по факту получаем все? А вот, потому что нэйминг это важно, но я иногда этим пренебрегаю в своих проектах т.к. понимаю че происходит. Но так делать не хорошо!
Вот нам нода отдала все непрочитанные сообщения. Дальше мы запускаем цикл... Ах да, цикл.. Цикл, это такое действие... Как бы объяснить... Вот у тебя есть пакет с продуктами. И тебе нужно из него все выложить. Вот твое действие выкладывания продуктов это цикл. Ты засунул руку в пакет, взял продукт, положил на стол, засунул руку в пакет... Вот это и есть цикл. Повторяющееся действие раз за разом, пока ты не придешь к цели. Твоя цель - выложить все продукты. Надеюсь теперь тебе стало понятнее)
Вот мы запускаем цикл, наша задача в нем брать по 1 непрочитанному сообщению до момента, пока этих самых непрочитанных сообщений не останется.
Мы берем первое сообщение, а дальше отдаем его ноде "Разбираем письмо". Это AI Agent. Ага, роботы на службе кожаных, хорошо, что пока так, а не наоборот) Вот эта нода, это логика какого-либо ИИ действия. Она может обрабатывать информацию, сохранять в память, читать из памяти, изменять информацию, придумывать и еще 100500 опций. Умная она короче. Но ей нужны мозги. Видишь снизу от нее "Google Gemini Chat Model"? Вот это как раз мозги. Для того, чтобы сортировать письма по полезности, мы будем скармливать письмо ИИ, и оно будет решать насколько это важно. А как оно будет решать? В AI Agent ноде мы пишем промт. Ага... Промт... Промт, это условие. Например ты говоришь: Вася, вот дрова лежат, их нужно порубить топором, на пне, и отнести в дровяную. И Вася понимает, что ему нужно сделать и как. Что пень выкидывать не нужно, да и топор на кашу пускать тоже. Промт пишется на русском. Просто как бы ты это объяснил человеку, так и объясняй ИИ. Для старта этого будет достаточно.
Вот что я написал у себя:

Классифицируй письмо: важное | полезное | спам.
Классифицируй строго на русском языке и маленькими буквами! Строго как я написал!
Верни строго JSON {"class":"...","reason":"..."} без текста вокруг.

ПРАВИЛА КЛАССИФИКАЦИИ:
1️⃣ ВАЖНОЕ — письма, связанные с:
- Steam (любые уведомления, подтверждения, коды, безопасность)
- Госуслуги (всё: заявления, ответы, уведомления, задолженности, налоги, коды подтверждения, ссылки для подтверждения входа/регистрации)
- Любые письма с кодами подтверждения, подтверждением почты, регистрации, восстановления пароля
- Ответы от госорганов и официальных сервисов
- письма от no-reply@oplata.info

2️⃣ ПОЛЕЗНОЕ — письма, содержащие:
- Кассовый чек
- Акт оказанных услуг
- Документы, счета, квитанции, отчёты, билеты, брони, гарантийные талоны

3️⃣ СПАМ — всё остальное, включая:
- Напоминания о входе на сайт, о доставке, о действиях ребёнка
- Уведомления о входе в аккаунт (без кода подтверждения)
- Новости, рассылки, акции, маркетплейсы, голосования, реклама, обновления условий

Как видишь все просто) Обычный спам он и так поймет и удалит, но я под себя еще фильтры сделал. И вот он определил тип важности сообщения, дальше мы видим ноду "Code in JavaScript". Внутри код, который разбирает ответ от ИИ и делает из него только 1 строку. важное \ полезное \ спам. Это не обязательно, как я уже сейчас знаю, но это был мой самый первый проект, так что там есть косячки) Где я взял скрипт для ноды? Просто отдал Gemini то, что отвечает ИИ и сказал что мне нужно получить только 1 слово на выходе. Дальше тупо скопировал ответ и вставил. Сам я там ниче не писал. Удобненько)
Дальше у нас нода "Switch". По факту это как дорожный знак. Указывает куда тебе нужно) Как видите там 3 пункта, тех самых что нам отдал AI Agent)
Логика простая, поняли, что письмо спам = переместили в папку "Удаленные"
Поняли что просто полезное, переместили в папку "полезное". Я на почте себе отдельно папку создал с таким названием, чтобы удобненько там лежали)
И самое интересное, это письма категории "важное") Если нам нода сообщила, что вот это письмо важное, то это письмо передается такому-же AI Agent, как и до этого, но только теперь он должен сделать из этого письма короткую выжимку только основного, чтобы не читать 100500 букв, как сейчас это делаешь именно ты =) Он сам поймет что важно в сообщении, а что мусор, и сожмет это буквально в 1-2 предложения)
Дальше у нас идет нода HTML. Опять же, там код... Который я тоже не писал руками) Я попросил ИИ сделать так, чтобы этот код оформлял мне сообщение для того, чтобы его можно было отправить в телеграм. У телеграм по умолчанию нельзя просто взять и отправить письмо, т.к. есть символы, которые он считает, например, за оформление текста. А мне это не нужно. И ИИ мне честно этот код дал, я его скопировал и вставил и все заработало))
Дальше уже финал! Мы берем ноду "Сообщение в телеграм" чтобы отправить сообщение в телеграм и... Отправляем его! Но, тут есть нюанс, нужно же его отправить от кого-то, верно? Вот тут нам нужно будет в телеграм сделать бота, который нам будет присылать сообщения) Благо это делается за минуту, мы в телеграм идем в отцу ботов(с праздничком, кстати =) ) @botfather и там нажимаем создать нового бота. Там нас спрашивают как назвать бота и потом какая ссылка будет. Все) Нам выдают API токен. Вот он то нам и нужен. ВАЖНО!! Не показывай и не пересылай его никому! Представь что это твой паспорт. Будешь его всем показывать? Вот и это не показывай)) Дальше открываешь ноду телеграм, и там в самом верху есть строка "Credential to connect with". Тут выбираешь New Credentials и вставляешь свой API ключ. Ну, ты только что научился работать с ботами, поздравляю=) Теперь твое письмо уйдет тебе. Почему тебе? А там ниже есть еще поле "Chat ID". Вот в него ты должен написать свой ID телеграм) Только на него и будет приходить информация. Но ты не переживай, если где-то будет ошибка тебе обязательно напишут и ошибку и как ее исправить) И.. Последняя нода "Читаем важное". Делает элементарное действие, помечает это письмо прочитанным) Все, цикл завершен и мы возвращаемся в начало цикла и проходим все эти шаги, пока у нас не останется непрочитанных писем)
Ты еще тут? Красавчик) Как видишь, схема простая, что по реализации, что по логике, если выкинуть тонну воды из моего текста, то там останется то... Но я так не умею)
Что еще можно сделать на N8N? Да фактически все, на что фантазии хватит. Я, например, написал автоматизации, которые ведут у меня одновременно 14! групп в телеграм) Там боты сами знают тематики каналов, сами думают над текстом, генерируют по теме будущего поста изображения, потом все это публикуют. Я там участвую ровно никак) 100% автоматизация) Вообще все, что ты делаешь руками, ты можешь автоматизировать на 100% или близко к этому значению. И это круто!
Вот тебе еще пример того, что я сделал буквально вчера, чтобы ты мог посмотреть:)
Календарь пастафарианцев: https://t.me/SvyatyeLapshi где ежедневно будут публиковаться праздники пастафариан. Всем пастафарианам отдельный привет =)
Канал #МамаПонимает https://t.me/MamaPonimaet где я сказал ИИ, что он это профессиональный психолог, консультант по детско-родительским отношениям и автор популярного Telegram-канала. Ну там, на самом деле, очень длинный промт, с нюансами, как он должен писать, что он должен проверять инфу и т.п. и .т.д.
Но, как видишь даже такие вещи уже реальны) Если вдруг зайдет статья. Могу написать потом как я реализовал этот проект по автопубликации тем, там тоже не сложно, на самом деле)
Всех обнял, приподнял =)