8
n8n 한국어amn8n.com

ASKREDDIT:第一期-忏悔

중급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Code, Merge, HttpRequest, GoogleSheets, ManualTrigger 등의 노드를 사용하며. 사용 GPT-4o와 Google Sheets로 Reddit 게시물로 바이러스적인 YouTube 콘텐츠 생성

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "y5gejWMNwzlGytFB",
  "meta": {
    "instanceId": "c3b0251a128564113908a06ec7f09f4887dd4566ea2a99241f8d36f04bbeef42"
  },
  "name": "ASKREDDIT: PHASE 1-CONFESSION",
  "tags": [],
  "nodes": [
    {
      "id": "9c8ba3f0-8f62-476e-8f0d-1af27da4c271",
      "name": "'워크플로 테스트' 클릭 시",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -900,
        -320
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1fbba9af-2a49-43f9-aeae-fc5b009e51a9",
      "name": "AskReddit 게시물 가져오기",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -680,
        -320
      ],
      "parameters": {
        "url": "https://www.reddit.com/r/confession/hot.json?limit=30",
        "options": {
          "response": {
            "response": {
              "responseFormat": "json"
            }
          }
        },
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "n8n-askreddit-scraper"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "301ccc14-a647-4e4b-918b-6d2ffe0bac33",
      "name": "AskReddit 데이터 필터링",
      "type": "n8n-nodes-base.code",
      "position": [
        -460,
        -320
      ],
      "parameters": {
        "jsCode": "return items[0].json.data.children\n  .filter(post => {\n    const title = post.data.title.toLowerCase();\n    return !title.includes(\"trump\") &&\n           !title.includes(\"president\") &&\n           !title.includes(\"war\") &&\n           !title.includes(\"israel\");\n  })\n  .map(post => {\n    const data = post.data;\n    return {\n      json: {\n        post_id: data.id,\n        title: data.title,\n        selftext:data.selftext,\n        score: data.score,\n        num_comments: data.num_comments,\n        over_18: data.over_18 // to filter NSFW later\n      }\n    };\n  });\n"
      },
      "typeVersion": 2
    },
    {
      "id": "20b6d540-0241-4fcd-a5d1-9bd836953edd",
      "name": "바이럴 가능성 필터링",
      "type": "n8n-nodes-base.code",
      "position": [
        -240,
        -320
      ],
      "parameters": {
        "jsCode": "return items.filter(item => {\n  const { score, num_comments, over_18 } = item.json;\n  return score > 60 && num_comments > 40 && over_18 === false;\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "de14ca44-907d-4fc5-a67f-66a76318cec5",
      "name": "병합",
      "type": "n8n-nodes-base.merge",
      "position": [
        140,
        -600
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "78d810f4-8d49-440f-975f-1520d4a41714",
      "name": "중복 항목 필터링",
      "type": "n8n-nodes-base.code",
      "position": [
        380,
        -600
      ],
      "parameters": {
        "jsCode": "const inputData = $input.all(); // gets all input items\n\nconst redditPosts = inputData.filter(i => i.json.post_id);\nconst existingRows = inputData.filter(i => i.json[\"Reddit Post ID\"]);\n\nconst existingPostIds = new Set(\n  existingRows\n    .map(row => row.json[\"Reddit Post ID\"])\n    .filter(id => id !== undefined && id !== null)\n    .map(id => id.toString())\n);\n\nreturn redditPosts.filter(item =>\n  !existingPostIds.has(item.json.post_id.toString())\n);\n"
      },
      "typeVersion": 2
    },
    {
      "id": "91f6516f-3fd6-42ab-9f3d-815159158e76",
      "name": "번호 매기기 추가",
      "type": "n8n-nodes-base.code",
      "position": [
        580,
        -600
      ],
      "parameters": {
        "jsCode": "let count = 1;\nreturn items.map(item => {\n  return {\n    json: {\n      number: count++,\n      ...item.json\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "82c8e67f-3f68-4aaa-9616-eb2ae9da3541",
      "name": "병합1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1040,
        -580
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3
    },
    {
      "id": "f3fa1876-7a35-4307-989a-1b2b5df7ff66",
      "name": "바이럴 점수 부여",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        760,
        -300
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o",
          "cachedResultName": "GPT-4O"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "assistant",
              "content": "You're an expert in viral content analysis. Rate the virality potential (1–10) of this Reddit question based on emotional engagement, curiosity, and relatability: {{$json.title}}. Respond with just the number.\n"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "KYpghcwzGWb5fHZN",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "357ae2b6-972d-432e-a6e4-ef9f291717ba",
      "name": "바이럴 점수 추가",
      "type": "n8n-nodes-base.code",
      "position": [
        1280,
        -580
      ],
      "parameters": {
        "jsCode": "return items.map((item, index) => {\n  return {\n    json: {\n      ...item.json,\n      virality_score: item.json.message?.content.trim()\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "65d1201d-59c6-43af-a4da-8d45a02fac9c",
      "name": "점수별 필터링",
      "type": "n8n-nodes-base.code",
      "position": [
        1520,
        -580
      ],
      "parameters": {
        "jsCode": "return items.filter(item => {\n  const score = parseInt(item.json.virality_score, 10);\n  return score >= 6;\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "f37cf1c6-2d0a-4183-a702-6bbf87eaf593",
      "name": "스티커 메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        -1425
      ],
      "parameters": {
        "color": 5,
        "width": 3000,
        "height": 1340,
        "content": "THIS IS THE FIRST PHASE. IT SCRAPS REDDIT DATA AND WRITES IN EXCEL"
      },
      "typeVersion": 1
    },
    {
      "id": "95197a4e-63c2-4e88-af7c-7a9e2d0a57de",
      "name": "고백 세부사항 작성",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1720,
        -580
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{new Date().toISOString().slice(0, 10)}}",
            "TYPE": "CONFESSION",
            "Number": "={{ $json.number }}",
            "Status": "TODO",
            "Upvotes": "={{ $json.score }}",
            "Answer 1": "={{ $json.selftext }}",
            "Comments": "={{ $json.num_comments }}",
            "Question": "={{ $json.title }}",
            "Reddit Post ID": "={{ $json.post_id }}",
            "Virality Score": "={{ $json.virality_score }}"
          },
          "schema": [
            {
              "id": "Number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Question",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Question",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Virality Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Virality Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Upvotes",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Upvotes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comments",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Comments",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Reddit Post ID",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Reddit Post ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Answer 1",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Answer 1",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Answer 2",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Answer 2",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Answer 3",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Answer 3",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Answer 4",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Answer 4",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Answer 5",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Answer 5",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Answer 6",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Answer 6",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "AUDIO ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "AUDIO ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YouTube Video Title",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "YouTube Video Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YouTube Description",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "YouTube Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YouTube Tags",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "YouTube Tags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YouTube Video ID",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "YouTube Video ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "YouTube Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "YouTube Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CTR (Click-Through Rate)",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "CTR (Click-Through Rate)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Average View Duration",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Average View Duration",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Audience Retention %",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Audience Retention %",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Likes",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Likes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Comments Count",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Comments Count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Thumbnail Version",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Thumbnail Version",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title Version",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Title Version",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Optimization Notes",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Optimization Notes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Last Updated",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Last Updated",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "TYPE",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "TYPE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1850949286,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1GXJPrrD5AcZQQV_LG_NadDnWfGFUdQG0g_be-xdEtW4/edit#gid=1850949286",
          "cachedResultName": "ASKREDDIT"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1GXJPrrD5AcZQQV_LG_NadDnWfGFUdQG0g_be-xdEtW4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1GXJPrrD5AcZQQV_LG_NadDnWfGFUdQG0g_be-xdEtW4/edit?usp=drivesdk",
          "cachedResultName": "n8n Resume Studio"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "TjiNKWHrJGm1tfU9",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "da7d00b2-64dd-46ec-a90f-f355b129fef5",
      "name": "시트에서 행 가져오기",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        0,
        -260
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1850949286,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1GXJPrrD5AcZQQV_LG_NadDnWfGFUdQG0g_be-xdEtW4/edit#gid=1850949286",
          "cachedResultName": "ASKREDDIT"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1GXJPrrD5AcZQQV_LG_NadDnWfGFUdQG0g_be-xdEtW4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1GXJPrrD5AcZQQV_LG_NadDnWfGFUdQG0g_be-xdEtW4/edit?usp=drivesdk",
          "cachedResultName": "n8n Resume Studio"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "TjiNKWHrJGm1tfU9",
          "name": "Google Sheets account"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.5
    },
    {
      "id": "09d2099d-1610-4833-869c-e4785b95234f",
      "name": "스티커 메모1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -920,
        -1340
      ],
      "parameters": {
        "width": 960,
        "height": 660,
        "content": "📝 Description\n\nThis workflow automates the collection, filtering, and scoring of trending AskReddit posts for viral potential. It pulls posts from Reddit, removes duplicates, calculates a custom virality score, and writes the final candidates into Google Sheets for later use in content creation.\n\nThis is Phase 1 of the AskReddit → YouTube Shorts automation pipeline. It prepares clean, high-quality data that can be used in the next phases (script generation, AI video creation, and publishing).\n\n⚙️ Setup Steps\n\nImport Workflow into your n8n instance.\n\nReddit API:\n\nAdd your Reddit API credentials in the \"Get AskReddit Posts\" node.\n\nGoogle Sheets:\n\nConnect your Google account.\n\nPoint the \"Write Candidates\" node to your target Google Sheet.\n\nVirality Scoring:\n\nThe \"Add Virality Score\" node assigns weights (e.g., upvotes, comments).\n\nAdjust the scoring logic as needed for your niche.\n\nRun Workflow:\n\nExecute manually or schedule with Cron.\n\nVerify that trending AskReddit posts appear in your sheet, scored and cleaned."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": "{\"executionOrder\":\"v1\"}",
  "versionId": "3a9f7928-6531-4cc5-bbb4-ce8c71a73ad5",
  "connections": {
    "de14ca44-907d-4fc5-a67f-66a76318cec5": {
      "main": [
        [
          {
            "node": "78d810f4-8d49-440f-975f-1520d4a41714",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "82c8e67f-3f68-4aaa-9616-eb2ae9da3541": {
      "main": [
        [
          {
            "node": "357ae2b6-972d-432e-a6e4-ef9f291717ba",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "91f6516f-3fd6-42ab-9f3d-815159158e76": {
      "main": [
        [
          {
            "node": "f3fa1876-7a35-4307-989a-1b2b5df7ff66",
            "type": "main",
            "index": 0
          },
          {
            "node": "82c8e67f-3f68-4aaa-9616-eb2ae9da3541",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "65d1201d-59c6-43af-a4da-8d45a02fac9c": {
      "main": [
        [
          {
            "node": "95197a4e-63c2-4e88-af7c-7a9e2d0a57de",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "78d810f4-8d49-440f-975f-1520d4a41714": {
      "main": [
        [
          {
            "node": "91f6516f-3fd6-42ab-9f3d-815159158e76",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "357ae2b6-972d-432e-a6e4-ef9f291717ba": {
      "main": [
        [
          {
            "node": "65d1201d-59c6-43af-a4da-8d45a02fac9c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f3fa1876-7a35-4307-989a-1b2b5df7ff66": {
      "main": [
        [
          {
            "node": "82c8e67f-3f68-4aaa-9616-eb2ae9da3541",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "1fbba9af-2a49-43f9-aeae-fc5b009e51a9": {
      "main": [
        [
          {
            "node": "301ccc14-a647-4e4b-918b-6d2ffe0bac33",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "da7d00b2-64dd-46ec-a90f-f355b129fef5": {
      "main": [
        [
          {
            "node": "de14ca44-907d-4fc5-a67f-66a76318cec5",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "301ccc14-a647-4e4b-918b-6d2ffe0bac33": {
      "main": [
        [
          {
            "node": "20b6d540-0241-4fcd-a5d1-9bd836953edd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "95197a4e-63c2-4e88-af7c-7a9e2d0a57de": {
      "main": [
        []
      ]
    },
    "20b6d540-0241-4fcd-a5d1-9bd836953edd": {
      "main": [
        [
          {
            "node": "de14ca44-907d-4fc5-a67f-66a76318cec5",
            "type": "main",
            "index": 0
          },
          {
            "node": "da7d00b2-64dd-46ec-a90f-f355b129fef5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "9c8ba3f0-8f62-476e-8f0d-1af27da4c271": {
      "main": [
        [
          {
            "node": "1fbba9af-2a49-43f9-aeae-fc5b009e51a9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 콘텐츠 제작, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

관련 워크플로우 추천

워크플로우 정보
난이도
중급
노드 수15
카테고리2
노드 유형7
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34