Skip to content

Импорт, экспорт и “поделиться” workflow

Импорт и экспорт рабочих процессов

Рабочие процессы можно сохранять локально в виде JSON-файла. В таком виде его можно импортировать в любой n8n-аккаунт и работать с ним, как со своим.

Следите за экспортом Credentials

По утверждению справки n8n, при экспорте workflow вместе с ним экспортируются все вовлеченные в него учетные данные: API-ключи, логины-пароли и прочие чувствительные данные. Опытным путем установлено, что как минимум у некоторых учетных данных экспортируется только их название в вашем аккаунте. Вам необходимо самостоятельно удалять их из JSON-файла.

Операции экспорта и импорта возможны как через редактор, так и через командную строку. Мы рассмотрим только первый вариант.

Экспорт. В левой панели WorkflowDownload.

Прочерки при экспорте

Если название вашего рабочего процесса набрано на русском языке, оно не сохранится, вместо символов появятся прочерки. Так что при сохранении либо переименуйте курс на латинице, либо уже переименовывайте JSON-файл. Теги workflow тоже не сохраняются

Импорт: В левой панели WorkflowImport from File

Импорт происходит в текущий холст

При импорте workflow не будет создан новый процесс. Все узлы и их связи просто упадут на текущий холст. Все узлы, которые были на холсте, также останутся

Импорт через вставку кода. Можно импортировать workflow, просто вставив скопированный заранее JSON-код (Ctrl+V или Cmd+V). Например, скопировав код в редакторе. Или, как будет показано далее, скопировав код из библиотеки рабочих процессов.

Сообщество и библиотека рабочих процессов

В n8n очень живое комьюнити, которое делится своими наработками на странице n8n.io/workflows. Это законченные рабочие процессы с описанием их работы — можно брать и использовать!

Конечно, вы тоже можете поделиться своим workflow. Только не берите шаблон из курса — вряд ли он кому-то, кроме Никиты, интересен, 🙂

Как поделиться своим worflow (если придумали что-то интересное)

  1. Залогиньтесь на n8n.io
  2. Нажмите на кнопку + Share New Workflow
  3. В Name введите название вашего workflow. Оно должно давать представление, что именно делает процесс.
  4. В Description опишите ваш рабочий процесс и прикрепите скриншот
    • Скриншот должен содержать снимок всего редактора
    • Описание должно содержать перечень всех узлов workflow с описанием их функций
    Можно воспользоваться шаблоном описания здесь
  5. В своем редакторе выделите все узлы (Ctrl+A или Cmd+A) и скопируйте их (Ctrl+C или Cmd+C)
  6. Кликните в поле Workflow Code вашей заявки, удалите текущий код, и вставьте свой (Ctrl+V или Cmd+V)
  7. Нажмите на кнопку Publish Workflow to Share, чтобы отправить своё предложение
Поделиться рабочим процессом
Поделиться рабочим процессом

Команда n8n рассмотрит шаблон, и если сочтет его подходящим для общей библиотеки, опубликует его.

Бонус

Ниже находится код из нашей задачи с университетами. Вы уже знаете, как его можно посмотреть

{
  "name": "Universities - Telegram",
  "nodes": [
    {
      "parameters": {},
      "name": "Start",
      "type": "n8n-nodes-base.start",
      "typeVersion": 1,
      "position": [
        620,
        200
      ]
    },
    {
      "parameters": {},
      "name": "NoOp",
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1560,
        440
      ],
      "notesInFlow": true,
      "notes": "Ничего не делаем"
    },
    {
      "parameters": {
        "url": "https://datausa.io/api/data?CIP=500602&measures=Completions&drilldowns=Sector,University",
        "options": {},
        "queryParametersUi": {
          "parameter": [
            {
              "name": "year",
              "value": "latest"
            }
          ]
        }
      },
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        860,
        340
      ],
      "notesInFlow": true,
      "notes": "Получаем данные с Data USA"
    },
    {
      "parameters": {
        "operation": "append",
        "application": "apphD8WPBGnEiIocB",
        "table": "Университеты",
        "addAllFields": false,
        "fields": [
          "Название",
          "Количество выпускников"
        ],
        "options": {}
      },
      "name": "Airtable",
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 1,
      "position": [
        2000,
        340
      ],
      "credentials": {
        "airtableApi": {
          "id": "12",
          "name": "Airtable account"
        }
      }
    },
    {
      "parameters": {
        "keys": {
          "key": [
            {
              "currentKey": "=University",
              "newKey": "Название"
            },
            {
              "currentKey": "=Completions",
              "newKey": "Количество выпускников"
            }
          ]
        }
      },
      "name": "Rename Keys",
      "type": "n8n-nodes-base.renameKeys",
      "typeVersion": 1,
      "position": [
        1800,
        220
      ],
      "notesInFlow": true,
      "notes": "Переименовываем для поля"
    },
    {
      "parameters": {
        "fieldToSplitOut": "data",
        "options": {}
      },
      "name": "Split Out",
      "type": "n8n-nodes-base.itemLists",
      "typeVersion": 1,
      "position": [
        1080,
        340
      ],
      "notesInFlow": true,
      "notes": "Извлекаем массив данных"
    },
    {
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{$json["Sector"]}}",
              "value2": "Private not-for-profit, 4-year or above"
            }
          ]
        }
      },
      "name": "If",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        1320,
        340
      ],
      "notesInFlow": true,
      "notes": "Оставляем целевые программы"
    },
    {
      "parameters": {
        "updates": [
          "message"
        ],
        "additionalFields": {}
      },
      "name": "Telegram Trigger",
      "type": "n8n-nodes-base.telegramTrigger",
      "typeVersion": 1,
      "position": [
        620,
        500
      ],
      "webhookId": "15996e9e-ae93-41aa-abd3-bba045b8de0d",
      "credentials": {
        "telegramApi": {
          "id": "4",
          "name": "Telegram account"
        }
      }
    },
    {
      "parameters": {
        "chatId": "={{$node["Telegram Trigger"].json["message"]["chat"]["id"]}}",
        "text": "=Лучшие университеты для обучения киноискусству: {{$item(0).$node["Rename Keys"].json["Название"]}},  {{$item(1).$node["Rename Keys"].json["Название"]}} и {{$item(2).$node["Rename Keys"].json["Название"]}}",
        "additionalFields": {}
      },
      "name": "Telegram",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1,
      "position": [
        2000,
        100
      ],
      "executeOnce": true,
      "credentials": {
        "telegramApi": {
          "id": "4",
          "name": "Telegram account"
        }
      }
    },
    {
      "parameters": {
        "operation": "sort",
        "sortFieldsUi": {
          "sortField": [
            {
              "fieldName": "Completions",
              "order": "descending"
            }
          ]
        },
        "options": {}
      },
      "name": "Sort",
      "type": "n8n-nodes-base.itemLists",
      "typeVersion": 1,
      "position": [
        1560,
        220
      ],
      "notes": "Сортируем по числу выпускников"
    }
  ],
  "connections": {
    "HTTP Request": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Sort",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "NoOp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Rename Keys": {
      "main": [
        [
          {
            "node": "Airtable",
            "type": "main",
            "index": 0
          },
          {
            "node": "Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sort": {
      "main": [
        [
          {
            "node": "Rename Keys",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Telegram Trigger": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "id": 97
}

Следующий урок → Заключение — и что делать дальше
Предыдущий урок → 9. Отправляем сообщение с помощью узла Телеграм
К курсу → Вводный курс по сервису автоматизации n8n

Вышел мой новый курс по ChatGPT и созданию GPT-приложений!