안녕하세요.
영진닷컴 『코딩은 처음이라 with 파이썬』 저자 남박사입니다.
C/C++, 파이썬, 그리고 AI를 활용한 자동화 시스템(AI Agent) 개발을 주로 하고 있습니다.
제 강의를 보시는 모든 분들, 끝까지 "화이팅" 입니다!
💡개인블로그: https://blog.naver.com/nkj2001
💡AI 블로그: https://blogagent.kr
🎞Youtube: https://www.youtube.com/@blographer/featured
📖도서 구매: 영진 닷컴 『코딩은 처음이라 with 파이썬』
강의
수강평
- AI 디자이너 입문: 이미지·영상 제작부터 자동화까지, ComfyUI + n8n
- AI 디자이너 입문: 이미지·영상 제작부터 자동화까지, ComfyUI + n8n
- 전문 사주팔자 AI Agent 만들기 - 풀스택 n8n+Python
- AI 디자이너 입문: 이미지·영상 제작부터 자동화까지, ComfyUI + n8n
- 수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화
게시글
질문&답변
수업자료는 어디서 받나요
안녕하세요, 영희님.첨부된 json 파일은 해당 강의에서 사용한 comfyui 용 워크플로우 파일입니다. comfyui 의 파일 메뉴를 통해 Open 하시면 사용하실 수 있는 파일입니다.(사진)수업에 사용된 HTML 수업자료는 위 스샷에서 처럼 강의 하단의 수업노트 보기 혹은 스크롤다운을 하시면 수업노트가 나오고 해당 수업노트의 수업내 사이트 링크 섹션에 다운로드 링크를 걸어놨습니다. 해당 링크를 참조하시면 확인하실 수 있습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 7
질문&답변
이지지 생성 노드를 커스텀 햇는데 워드프레스에 이미지 업로드가 안됨
안녕하세요, aiblog님.일단 올려주신 내용은 잘 봤습니다. 그런데 스샷의 이미지 주소 https://files.blogagent.kr/view/80308755-dfa6-4028-a9c3-d7cd2b948139.png 를 접속해보면 해당 이미지가 존재하지 않습니다. 실제 생성된 주소로 접속 해보시고 이미지가 제대로 나오는지 먼저 확인해보시고 만약 이미지가 나오지 않는다면 파일 업로드 서버에 어떤 오류 로그가 찍히는지를 확인해봐야 할 듯 합니다. 그리고 실제 서버상에 해당 파일이 저장되었는지도 체크해보시기 바랍니다. 파일서버에 저장하는 기능의 문제인지, 저장은 잘 되었으나 view 를 해주는 기능의 문제인지, 서버에 저장도 잘 되었고 브라우저 직접 접속시 문제없이 이미지가 보인다면 그러면 블로그에 업로드 하는 내용을 확인해봐야 할 듯 합니다. 정리하자면...파일 서버에 파일이 정상적으로 저장되었는지,파일 서버에 파일이 존재 한다면 브라우저 직접 접속시 보여지는데 문제가 있는지,저장도 문제없고 보이는데도 문제가 없다면 블로그 글 작성시 글의 내용에 이미지 태그가 정상적으로 작성되고 있는지위 부분을 모두 체크해보셔야 할 듯 합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 17
질문&답변
n8n에서 오류가 발생했는데 어떻게 풀어야할까요?
안녕하세요, kinyu85님.(사진)(사진)일단 저도 똑같은 상황으로 위 스샷에서 처럼 제미나이 3.5 플래시 모델을 사용해서 구동을 해봤습니다만 저한테서는 그런 문제가 발생을 하지 않았습니다.(사진)참고로 저는 1.123.9 버전에서 테스트 해본 상태입니다.(사진)추가적으로 제미나이 3.6 플래시 모델에서도 문제가 없었습니다.현재 사용중이신 n8n 버전 문제인지 어떤 이유에서인지 저도 이유를 알 수 없습니다만 n8n 깃헙 커뮤니티에 비슷한 증상을 이야기하는 글이 있긴 합니다만 kinyu85님과 똑같은 증상은 아니며 버전도 2.x 버전에서 발생한 문제로 보입니다만 맥락은 비슷해 보이긴 합니다. [참조링크]일단 AI 모델을 제미나이 다른 버전으로 변경해보시고 아예 다른 챗지피나 클로드 소넷 같은걸로도 한번 테스트 해보시기 바랍니다. 꼭 제미나이 3.5 플래시를 사용해야겠다하면 n8n 의 AI Agent 노드를 버리고 직접 API를 호출 하는 형태로 사용할 수도 있긴 합니다. 직접 API를 구현하는 샘플은 아래의 코드 전체를 복사하시어 n8n 에서 Ctrl + V 로 붙여넣기 해보시면 해당 부분만 작성한 노드 구성을 보실 수 있습니다.{ "nodes": [ { "parameters": {}, "type": "n8n-nodes-base.manualTrigger", "typeVersion": 1, "position": [ -272, -160 ], "id": "0dad43de-7813-4ef0-a3f6-ac6d45eb48f4", "name": "When clicking ‘Execute workflow’" }, { "parameters": { "assignments": { "assignments": [ { "id": "788773c1-5f4f-4816-99c5-47ed2c57cdae", "name": "today", "value": "={{ $now.format('yyyy-MM-dd HH:mm:ss') }}", "type": "string" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ -112, -160 ], "id": "a2f66d98-35ac-48b9-b8c5-8e6edb2fa33c", "name": "Set NOW" }, { "parameters": { "operation": "search", "base": { "__rl": true, "value": "appqBoRd6PoK1XYGE", "mode": "list", "cachedResultName": "Blog", "cachedResultUrl": "https://airtable.com/appqBoRd6PoK1XYGE" }, "table": { "__rl": true, "value": "tblg5aoT05scKiIZm", "mode": "list", "cachedResultName": "클러스터링", "cachedResultUrl": "https://airtable.com/appqBoRd6PoK1XYGE/tblg5aoT05scKiIZm" }, "filterByFormula": "{reserved_post}='yes'", "returnAll": false, "limit": 1, "options": {} }, "type": "n8n-nodes-base.airtable", "typeVersion": 2.1, "position": [ 32, -160 ], "id": "ea68e7a3-71d1-4e9d-9374-a3367ed1ce08", "name": "Get Reserved Data", "credentials": { "airtableTokenApi": { "id": "31QF0d5eTUonxBpl", "name": "Airtable Personal Access Token account" } } }, { "parameters": { "method": "POST", "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent", "sendQuery": true, "queryParameters": { "parameters": [ { "name": "key", "value": "=--제미나이 API--" } ] }, "sendBody": true, "specifyBody": "json", "jsonBody": "={{\n {\n contents: [\n {\n role: \"user\",\n parts: [\n {\n text: `\n다음 정보를 분석하여 웹 검색에 사용할 검색어 하나를 생성하세요.\n\n클러스터: ${$json.cluster}\n카테고리: ${$json.category}\n관련 키워드: ${$json.keywords}\n대상 독자: ${$json.target}\n핵심 키워드: ${$json.primary_keyword}\n검색 의도: ${$json.intent}\n\n반드시 Search_WEB 도구를 호출하세요. 직접 답변하지 마세요.\n`\n }\n ]\n }\n ],\n tools: [\n {\n functionDeclarations: [\n {\n name: \"Search_WEB\",\n description: \"인터넷에서 최신 정보와 사실을 검색합니다.\",\n parameters: {\n type: \"OBJECT\",\n properties: {\n query: {\n type: \"STRING\",\n description: \"웹 검색에 사용할 구체적인 검색어\"\n }\n },\n required: [\"query\"]\n }\n }\n ]\n }\n ],\n toolConfig: {\n functionCallingConfig: {\n mode: \"ANY\",\n allowedFunctionNames: [\"Search_WEB\"]\n }\n }\n }\n}}", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 192, -160 ], "id": "047a51cb-f04e-4868-978c-8029a04b2d6f", "name": "Gemini API" }, { "parameters": { "method": "POST", "url": "https://api.blogagent.kr/search", "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "sendBody": true, "bodyParameters": { "parameters": [ { "name": "query", "value": "={{ $json.candidates[0].content.parts[0].functionCall.args.query }}" } ] }, "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 352, -160 ], "id": "734901c4-8093-4fea-aff5-7116f37324c6", "name": "Search WEB1", "credentials": { "httpHeaderAuth": { "id": "eDWpokiVVp9P8pkU", "name": "Search API Key" } } }, { "parameters": { "method": "POST", "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent", "sendQuery": true, "queryParameters": { "parameters": [ { "name": "key", "value": "--제미나이 API--" } ] }, "sendBody": true, "specifyBody": "json", "jsonBody": "={{\n {\n contents: [\n {\n role: \"user\",\n parts: [\n {\n text: `\n다음 정보를 바탕으로 블로그 콘텐츠 기획안을 작성하세요.\n\n클러스터: ${$('Get Reserved Data').item.json.cluster}\n카테고리: ${$('Get Reserved Data').item.json.category}\n관련 키워드: ${$('Get Reserved Data').item.json.keywords}\n대상 독자: ${$('Get Reserved Data').item.json.target}\n핵심 키워드: ${$('Get Reserved Data').item.json.primary_keyword}\n검색 의도: ${$('Get Reserved Data').item.json.intent}\n\n웹 검색 결과를 근거로 최종 기획안을 작성하세요.\n`\n }\n ]\n },\n\n $('Gemini API').item.json.candidates[0].content,\n\n {\n role: \"user\",\n parts: [\n {\n functionResponse: {\n id: $('Gemini API').item.json.candidates[0].content.parts[0].functionCall.id,\n name: $('Gemini API').item.json.candidates[0].content.parts[0].functionCall.name,\n response: {\n result: $json\n }\n }\n }\n ]\n }\n ]\n }\n}}", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.3, "position": [ 528, -160 ], "id": "c490eb4a-2b6c-4f14-8e04-101443014aac", "name": "Gemini Result" } ], "connections": { "When clicking ‘Execute workflow’": { "main": [ [ { "node": "Set NOW", "type": "main", "index": 0 } ] ] }, "Set NOW": { "main": [ [ { "node": "Get Reserved Data", "type": "main", "index": 0 } ] ] }, "Get Reserved Data": { "main": [ [ { "node": "Gemini API", "type": "main", "index": 0 } ] ] }, "Gemini API": { "main": [ [ { "node": "Search WEB1", "type": "main", "index": 0 } ] ] }, "Search WEB1": { "main": [ [ { "node": "Gemini Result", "type": "main", "index": 0 } ] ] } }, "pinData": {}, "meta": { "instanceId": "558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a" } }
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 27
질문&답변
2강설치관련 문의
안녕하세요, guessfem님.하이퍼 브이 기능이 없어도 사실 상관없습니다. 홈에디션이라 하더라도 wsl2 는 지원되고 엄밀히 따지면 wsl2 방식이 더 신규 방식이긴 합니다. 도커를 문제없이 설치하셨고 도커가 문제없이 실행되었다면 그 이후에 발생하는 문제는 하이퍼브이 기능과는 아무런 상관이 없는 부분이라 생각됩니다. start kit 설치가 왜 안되시는지는 정보가 없어서 제가 뭐라 답변드릴수는 없겠지만 도커가 설치되었다면 현재 문제는 전혀 다른 문제일 듯 합니다. 하이퍼 브이는 도커를 설치 하기 위해서 필요한 환경일뿐 그 이후의 상황에는 전혀 관여하지 않는 부분입니다. AI 한테 현재 상황을 스샷과 설명으로 제공하고 답변을 받아보시는것도 좋을듯 합니다. 아니면 저한테 좀 더 자세한 정보를 전달해 주셔도 좋습니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 58
질문&답변
로컬호스트에 웹훅으로 불어오기 오류
안녕하세요, hanul.baro님.지금 상태를 봤을때 n8n 웹훅 자체를 아예 호출을 못하고 있는걸로 보입니다. 주소가 정확한지 등등 여러가지 상태를 모두 체크해보셔야 할 듯 합니다. (사진)보여주신 위의 스샷에서의 서버 200 OK 로그는 단순 상태를 체크하는 내부 호출이 성공했음을 의미하는 것 일 뿐 n8n쪽 로그와는 아무런 연관이 없는 부분입니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 58
질문&답변
워드프레스 502 Bad Gateway 오류
안녕하세요, aiblog님.해당 질문에 대한 대답은 제가 단순하게 댓글로 달아서 답변을 드릴 수 있는 내용은 아닙니다. 강의를 다시 차근 차근 보시면서 이해를 해야 하는 부분이고 전체적인 설정을 모두 다 확인해야 하는 내용이라 강의에서 제가 설명한것보다 더 자세하게 글자로서 답변을 드릴 수 있는 부분은 아닌듯 싶습니다.일단 눈에 보이는 몇가지만 말씀드리면 81번 포트는 https로 접속하는 포트가 아닙니다. 81번 포트는 http 로 접속을 하셔야 하는 부분입니다. 또한 강의를 어디까지 진행하셨고 얼마나 설정을 하셨는지 모르기에 나머지 부분에 대해선 제가 위에 써놓은 내용처럼 답변을 드리기 어려운 부분입니다.(사진)올려주신 스샷에서의 주소 역시 http://air-geumwoo.com:81/ 포트로 접속하면 위 스샷에서 처럼 문제없이 접속됩니다. 따라서 강의 내용을 다시한번 차근차근 살펴보시고 어느지점에서 어떤 설정에 문제가 있는지 찾아보셔야 할 듯 합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 67
질문&답변
제미나이 이미지생성 노드를사용했고 n8n에서 생성된 이미지를 해당 서버로 자동 업로드할때 value에 값을 어떤걸 넣어줘야 할까요>?
첫번째 스샷 우측 상단의 바이너리 탭에 보시면 현재 제미나이 노드로 생성한 이미지는 바이너리 상태로 다운로드 되어있는 상황입니다. 따라서 두번째 스샷에서 처럼 해당 이미지를 업로드 할때는 url 로 전달할 수 없습니다. (사진)따라서 위 스샷에서 처럼 업로드 노드에서 전달되는 body 가 변경되어야 합니다. 물론 서버 코드에 바이너리 파일을 전달받을 수 있게 기능이 구현되어있어야 하며 제가 수업노트로 제공하는 소스코드를 참고해보시기 바랍니다. 또한 chatgpt나 제미나이, 클로드 같은 AI 에게도 똑같은 질문을 해보고 ai 답변도 한번 꼭 참고해보시기 바랍니다.
- 좋아요수
- 0
- 댓글수
- 1
- 조회수
- 48
질문&답변
제미나이 이미지 생성 대체
안녕하세요, aiblog님.일단 다른 질문에 답변을 달긴했습니다만, 지금 보여주신 스샷에서 처럼 AI Agent노드를 사용해서 이미지를 생성할수는 없습니다.(사진)노드 추가 더하기 버튼을 눌러 AI 메뉴를 선택 합니다.(사진)그 다음에 Google Gemini 를 선택합니다.(사진)그 다음에 Generate an image 를 선택합니다.(사진)그러면 해당 노드에서 적당한 이미지 생성 모델을 선택하시고 프롬프트를 입력해서 구글 이미지 생성모델을 사용하여 이미지를 생성하실 수 있습니다. 단, 비용을 꼭 체크해보시기 바랍니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 83
질문&답변
퍼블릭시티를 ai agent 제미나이로 대채
안녕하세요, aiblog님.글쎄요... 일단 퍼플렉시티와 제미나이는 사용 목적이 달라서 추천하지는 않습니다. 해당 강의에서 퍼플렉시티는 검색 도구처럼 활용하는게 목적인데 제미나이는 그런 능력을 퍼플렉시티 처럼 제공하지 않습니다. 물론 제미나이도 검색도구를 사용해서 동작하는 기능이 탑재되어있긴 하지만 퍼플렉시티랑 비교했을때 동작 방식이 전혀 다릅니다. 그래서 노드가 반환하는 값 자체도 달라지기 때문에 프롬프트를 수정한다고 해서 퍼플렉시티의 능력을 대체할 수는 없을듯 합니다. 오히려 그런 관점이라면 클로드의 Web 검색 옵션을 키고 사용해볼수도 있긴 한데 물론 이 경우에도 결과를 보고 그에 맞게 코드 노드의 내용 전체를 수정해야 합니다. 또한 클로드는 비용이 비싸기 때문에 퍼플렉시티를 대체하면서까지 써야할 이유나 명분도 부족하기도 합니다.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 89
질문&답변
섹션2-18
안녕하세요, n8n 자동화님.일단 fal.ai 의 Generate media using AI model 노드의 구조가 어떻게 생겼는지 제가 확신할 수 없어 정확한 답변을 드리긴 어렵습니다만 만약 노드 내부에서 requsts -> wait/poll -> response 형태로 요청하고 상태 확인 후 상태 결과에 따른 응답을 하는 구조라면 강의에서 처럼 노드를 여러개 사용할 필요 없이 간편하게 작성이 가능합니다. 그렇게 되면 이 이후 노드는 fal.ai 의 결과를 보고 그에 맞게 이미지를 가져오는 부분만 수정해서 진행하시면 될 듯 합니다. 오히려 강의에서 보다 더 간편해질듯 하네요.
- 좋아요수
- 0
- 댓글수
- 2
- 조회수
- 57




