Darmowy szablon automatyzacji

Pobierz dynamiczne monity z GitHub i automatycznie wypełnij wyrażenia n8n w monicie

2242
2 mies. temu
17
bloków


Dla kogo jest ten szablon?

Ten workflow został zaprojektowany dla inżynierów AI, specjalistów automatyzacji oraz twórców treści, którzy potrzebują skalowalnego systemu do dynamicznego zarządzania promptami przechowywanymi w GitHub. Eliminuje on ręczne aktualizacje, wymusza sprawdzanie wymaganych zmiennych i zapewnia, że interakcje AI zawsze otrzymują w pełni przetworzone prompty.

Rozwiązywany problem

Ręczne zarządzanie promptami AI może być nieefektywne i podatne na błędy. Ten workflow:

  • Pobiera dynamiczne prompty z GitHub
  • Automatycznie wypełnia placeholdery wartościami z węzła setVars
  • Zapewnia obecność wszystkich wymaganych zmiennych przed wykonaniem
  • Przetwarza sformatowany prompt przez agenta AI

Jak działa ten workflow

Workflow składa się z trzech głównych gałęzi, zapewniających płynne pobieranie promptów, walidację zmiennych i przetwarzanie AI.

1. Pobieranie promptu z GitHub

Workflow rozpoczyna się ręcznie lub przez zewnętrzny trigger. Pobiera tekstowy prompt przechowywany w repozytorium GitHub. Węzeł Extract from File pobiera zawartość pliku z GitHub, a SetPrompt przechowuje prompt, udostępniając go do przetwarzania.

2. Ekstrakcja i automatyczne wypełnianie zmiennych

Węzeł Code skanuje prompt w poszukiwaniu placeholderów w formacie wyrażeń n8n. Workflow porównuje wymagane zmienne z węzłem setVars i w przypadku braków zwraca błąd. Węzeł Replace Variables zastępuje wszystkie placeholdery wartościami z setVars.

3. Przetwarzanie AI i wyjście

Węzeł Set Completed Prompt przechowuje finalny, przetworzony prompt. Węzeł AI Agent przetwarza prompt, a Prompt Output zwraca w pełni sformatowaną odpowiedź.

Przykłady zastosowań

Ten szablon automatyzacji może być wykorzystany w wielu scenariuszach związanych z generowaniem treści i zarządzaniem promptami AI. Oto kilka potencjalnych zastosowań:

  • Automatyczne generowanie spersonalizowanych wiadomości marketingowych
  • Tworzenie dynamicznych odpowiedzi chatbotów
  • Generowanie treści blogowych na podstawie szablonów
  • Przygotowywanie spersonalizowanych ofert handlowych
  • Automatyzacja tworzenia opisów produktów w e-commerce
  • Generowanie raportów i podsumowań na podstawie danych
  • Tworzenie spersonalizowanych emaili w kampaniach marketingowych

Instrukcja konfiguracji

  1. Podłącz swoje repozytorium GitHub
  2. Skonfiguruj węzeł SetVars
  3. Przetestuj i uruchom workflow

Dostosowywanie workflow

Możesz zintegrować węzeł setVars z Airtable, Google Sheets lub HubSpot API, aby dynamicznie pobierać zmienne. Możesz także zmodyfikować model AI, zastępując Ollama Chat Model przez OpenAI, Claude lub własny endpoint LLM.

Dlaczego warto użyć tego workflow?

  • Brak konieczności ręcznych aktualizacji - prompty są pobierane dynamicznie z GitHub
  • Zapobiega wysyłaniu niekompletnych promptów - sprawdza obecność wymaganych zmiennych
  • Uniwersalne zastosowanie - obsługuje prompty do chatów AI, wiadomości marketingowych i skryptów chatbotów
  • Kompatybilność ze wszystkimi wersjami n8n - działa w wersjach Cloud, Self-Hosted i Desktop


   Skopiuj kod szablonu   
{"id":"QyMyf3zraY0wxXDf","meta":{"instanceId":"ba3fa76a571c35110ef5f67e5099c9a5c1768ef125c2f3b804ba20de75248c0b","templateCredsSetupCompleted":true},"name":"Load Prompts from Github Repo and auto populate n8n expressions","tags":[],"nodes":[{"id":"34781446-b06e-41eb-83b8-b96bda1a5595","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-80,0],"parameters":{},"typeVersion":1},{"id":"c53b7243-7c82-47e0-a5ee-bd82bc51c386","name":"GitHub","type":"n8n-nodes-base.github","position":[600,0],"parameters":{"owner":{"__rl":true,"mode":"name","value":"={{ $json.Account }}"},"filePath":"={{ $json.path }}{{ $json.prompt }}","resource":"file","operation":"get","repository":{"__rl":true,"mode":"name","value":"={{ $json.repo }}"},"additionalParameters":{}},"credentials":{"githubApi":{"id":"ostHZNoe8GSsbaQM","name":"The GitHub account"}},"typeVersion":1},{"id":"9976b199-b744-47a7-9d75-4b831274c01b","name":"Extract from File","type":"n8n-nodes-base.extractFromFile","position":[840,0],"parameters":{"options":{},"operation":"text"},"typeVersion":1},{"id":"26aa4e6a-c487-4cdf-91d5-df660cf826a6","name":"setVars","type":"n8n-nodes-base.set","position":[180,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"150618c5-09b1-4f8b-a7b4-984662bf3381","name":"Account","type":"string","value":"TPGLLC-US"},{"id":"22e8a3b0-bd53-485c-b971-7f1dd0686f0e","name":"repo","type":"string","value":"PeresPrompts"},{"id":"ab94d0a1-ef3a-4fe9-9076-6882c6fda0ac","name":"path","type":"string","value":"SEO/"},{"id":"66f122eb-1cbd-4769-aac8-3f05cdb6c116","name":"prompt","type":"string","value":"keyword_research.md"},{"id":"03fe26a3-04e6-439c-abcb-d438fc5203c0","name":"company","type":"string","value":"South Nassau Physical Therapy"},{"id":"c133d216-a457-4872-a060-0ba4d94549af","name":"product","type":"string","value":"Manual Therapy"},{"id":"584864dd-2518-45e2-b501-02828757fc3a","name":"features","type":"string","value":"pain relief"},{"id":"0c4594cc-302a-4215-bdad-12cf54f57967","name":"sector","type":"string","value":"physical therapy"}]}},"typeVersion":3.4},{"id":"9d92f581-8cd9-448c-aa1d-023a96c1ddda","name":"replace variables","type":"n8n-nodes-base.code","position":[1900,-20],"parameters":{"jsCode":"// Fetch the prompt textnconst prompt = $('SetPrompt').first().json.data; // Ensure the prompt contains placeholders like {{ some.node.value }}nn// Example variables objectnconst variables = {n company: $('setVars').first().json.company,n features: "Awesome Software",n keyword: "2025-02-07"n};nn// Function to replace placeholders dynamicallynconst replaceVariables = (text, vars) => {n return text.replace(/{{(.*?)}}/g, (match, key) => {n const trimmedKey = key.trim();n n // Extract last part after the last dotn const finalKey = trimmedKey.split('.').pop();nn // Replace if key exists, otherwise leave placeholder unchangedn return vars.hasOwnProperty(finalKey) ? vars[finalKey] : match;n });n};nn// Replace and return resultnreturn [{n prompt: replaceVariables(prompt, variables)n}];n"},"typeVersion":2},{"id":"6c6c4fde-6ee5-47a8-894d-44d1afcedc2a","name":"If","type":"n8n-nodes-base.if","position":[1560,0],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"2717a7e5-095a-42bf-8b5b-8050c3389ec5","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.success }}","rightValue":"={{ $('Check All Prompt Vars Present').item.json.keys()}}"}]}},"typeVersion":2.2},{"id":"3b7712b8-5152-4f60-9401-03c89c39e227","name":"Check All Prompt Vars Present","type":"n8n-nodes-base.code","position":[1280,0],"parameters":{"jsCode":"// Get prompt textnconst prompt = $json.data;nn// Extract variables inside {{ }} dynamicallynconst matches = [...prompt.matchAll(/{{(.*?)}}/g)];nconst uniqueVars = [...new Set(matches.map(match => match[1].trim().split('.').pop()))];nn// Get variables from the Set Nodenconst setNodeVariables = $node["setVars"].json || {};nn// Log extracted variables and Set Node keysnconsole.log("Extracted Variables:", uniqueVars);nconsole.log("Set Node Keys:", Object.keys(setNodeVariables));nn// Check if all required variables are present in the Set Nodenconst missingKeys = uniqueVars.filter(varName => !setNodeVariables.hasOwnProperty(varName));nnconsole.log("Missing Keys:", missingKeys);nn// Return false if any required variable is missing, otherwise return truenreturn [{n success: missingKeys.length === 0,n missingKeys: missingKeysn}];n"},"typeVersion":2},{"id":"32618e10-3285-4c16-9e78-058dde329337","name":"SetPrompt","type":"n8n-nodes-base.set","position":[1060,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"335b450d-542a-4714-83d8-ccc237188fc5","name":"data","type":"string","value":"={{ $json.data }}"}]}},"typeVersion":3.4},{"id":"4d8b34ca-50dd-4f37-b4f7-542291461662","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","position":[1900,200],"parameters":{"errorMessage":"=Missing Prompt Variables : {{ $('Check All Prompt Vars Present').item.json.missingKeys }}n"},"typeVersion":1},{"id":"a78c1e17-9152-4241-bcdf-c0d723da543b","name":"Set Completed Prompt","type":"n8n-nodes-base.set","position":[2220,-20],"parameters":{"options":{},"assignments":{"assignments":[{"id":"57a9625b-adea-4ee7-a72a-2be8db15f3d4","name":"Prompt","type":"string","value":"={{ $json.prompt }}"}]}},"typeVersion":3.4},{"id":"51447c90-a222-4172-a49b-86ec43332559","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[2440,-20],"parameters":{"text":"={{ $json.Prompt }}","options":{},"promptType":"define"},"typeVersion":1.7},{"id":"f15b6af1-7af2-4515-be8f-960211118dce","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[60,-120],"parameters":{"width":340,"height":260,"content":"# Set The variables in your prompt here"},"typeVersion":1},{"id":"163db6cc-5b06-4ae6-ac97-5890b37cdb18","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[520,-120],"parameters":{"color":5,"content":"## The repo is currently public for you to test with"},"typeVersion":1},{"id":"83ff6a86-a759-42a9-ace4-e20d57b906db","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1780,-200],"parameters":{"width":360,"height":260,"content":"## Replaces the values in the prompt with the variables in the n# 'setVars' Node"},"typeVersion":1},{"id":"7dd61153-84ac-4b59-b449-333825476c33","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2000,180],"parameters":{"color":3,"content":"## If you're missing variables they will be listed here"},"typeVersion":1},{"id":"1f070dc3-3d25-41d8-b534-912ba7c8b2b0","name":"Prompt Output","type":"n8n-nodes-base.set","position":[2800,-20],"parameters":{"options":{},"assignments":{"assignments":[{"id":"01a30683-c348-4712-a3b1-739fc4a17718","name":"promptResponse","type":"string","value":"={{ $json.output }}"}]}},"typeVersion":3.4},{"id":"2d12a6e2-7976-41b0-8cb2-01466b28269d","name":"Ollama Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOllama","position":[2480,200],"parameters":{"options":{}},"credentials":{"ollamaApi":{"id":"ERfZ8mAfQ1b0aoxZ","name":"Ollama account"}},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"4327a337-59e7-4b5b-98e8-93c6be550972","connections":{"If":{"main":[[{"node":"replace variables","type":"main","index":0}],[{"node":"Stop and Error","type":"main","index":0}]]},"GitHub":{"main":[[{"node":"Extract from File","type":"main","index":0}]]},"setVars":{"main":[[{"node":"GitHub","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"Prompt Output","type":"main","index":0}]]},"SetPrompt":{"main":[[{"node":"Check All Prompt Vars Present","type":"main","index":0}]]},"Extract from File":{"main":[[{"node":"SetPrompt","type":"main","index":0}]]},"Ollama Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"replace variables":{"main":[[{"node":"Set Completed Prompt","type":"main","index":0}]]},"Set Completed Prompt":{"main":[[{"node":"AI Agent","type":"main","index":0}]]},"Check All Prompt Vars Present":{"main":[[{"node":"If","type":"main","index":0}]]},"When clicking ‘Test workflow’":{"main":[[{"node":"setVars","type":"main","index":0}]]}}}
  • cpde
  • Javascript
  • JS
  • Python
  • Script
  • Custom Code
  • Function
  • LangChain
  • Chat
  • Conversational
  • Plan and Execute
  • ReAct
  • Tools
Planeta AI 2025 
magic-wandmenu linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram