8
n8n 한국어amn8n.com

RapidAPI 및 Google Sheets를 사용한 자동 표절 감지 및 이메일 보고서

고급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 19개의 노드를 포함합니다.주로 If, Code, EmailSend, HttpRequest, GoogleSheets 등의 노드를 사용하며. RapidAPI 및 Google Sheets를 사용한 자동 표절 감지 및 이메일 보고서

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "806a295f-8337-4459-bdc7-5e3b9f3634de",
      "name": "Google 시트의 새 행 트리거",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        1120,
        288
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "k",
          "cachedResultName": "Plagiarism "
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "id": "FpH9aIBJX3kMRYBZ",
          "name": "Google Sheets Trigger account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a9057c26-4936-48d4-a8d5-23efe3bb528d",
      "name": "Plagiarism API에 콘텐츠 전송",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1456,
        288
      ],
      "parameters": {
        "url": "https://plagiarism-checker-ai-powered.p.rapidapi.com/plagiarism.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "content",
              "value": "={{ $('Trigger - New Row in Google Sheet').item.json.Content }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "plagiarism-checker-ai-powered.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "Your key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "0438c692-bd49-455f-a1a9-afb0ef853b0a",
      "name": "API 응답 성공 확인",
      "type": "n8n-nodes-base.if",
      "position": [
        1712,
        144
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "0ce9b91f-8d33-4ca9-b7bc-67421d0ab1a9",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.success }}",
              "rightValue": ""
            },
            {
              "id": "5963f077-ab3a-4658-a55f-57ea89db5901",
              "operator": {
                "type": "array",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.data.results.results }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "ff20ec20-e67d-42bb-a903-7452f0801389",
      "name": "표절 검사 결과 추출",
      "type": "n8n-nodes-base.code",
      "position": [
        2000,
        64
      ],
      "parameters": {
        "jsCode": "return $input.first().json.data.results.results;"
      },
      "typeVersion": 2
    },
    {
      "id": "0fb5c95c-1182-4f1c-9bb5-a58218518976",
      "name": "HTML 표절 보고서 생성",
      "type": "n8n-nodes-base.code",
      "position": [
        2288,
        48
      ],
      "parameters": {
        "jsCode": "const results = $input.all();\n\nlet html = `<h2>📝 Plagiarism Report</h2>`;\nhtml += `<p>The following content has been analyzed. Below is the similarity report:</p>`;\n\nfor (const item of results) {\n  const phrase = item.json.phrase;\n  const matches = item.json.results;\n\n  html += `<hr/>`;\n  html += `<p><strong>Original Phrase:</strong><br>\"${phrase}\"</p>`;\n\n  if (!matches || matches.length === 0) {\n    html += `<p style=\"color:green;\">✅ No matches found</p>`;\n    continue;\n  }\n\n  html += `<ul>`;\n  for (const match of matches) {\n    const title = match.title;\n    const link = match.link;\n    const score = match.scores?.[0]?.score?.toFixed(2);\n    const matchedSentence = match.scores?.[0]?.sentence;\n\n    html += `\n      <li>\n        <p><strong>Matched Source:</strong> <a href=\"${link}\" target=\"_blank\">${title}</a></p>\n        <p><strong>Similarity Score:</strong> ${score}</p>\n        <p><em>\"${matchedSentence}\"</em></p>\n      </li>\n    `;\n  }\n  html += `</ul>`;\n}\n\nreturn [\n  {\n    json: {\n      subject: \"📄 Plagiarism Report\",\n      body: html\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ef430ff6-e774-4aff-b66d-0b0000aa0d15",
      "name": "이메일로 사용자에게 보고서 전송",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2592,
        112
      ],
      "webhookId": "e4772861-5743-476f-83ef-82e3f15cf5a2",
      "parameters": {
        "html": "={{ $json.body }}",
        "options": {},
        "subject": "={{ $json.subject }}",
        "toEmail": "=user@test.com",
        "fromEmail": "admin@test.com"
      },
      "credentials": {
        "smtp": {
          "id": "nPwKPPgVavimTJX4",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "d70d998c-cbb7-4478-bf41-56f027da2a07",
      "name": "Google 시트에 상태: 성공 표시",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2992,
        288
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Success ",
            "Content": "={{ $('Trigger - New Row in Google Sheet').item.json.Content }}"
          },
          "schema": [
            {
              "id": "Content",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Content"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": "Plagiarism "
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rt0RWApx8PL9t0RF",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "61535540-0df7-43d6-afe5-76f2fe0f5b62",
      "name": "IT 부서에 실패 알림 전송",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2112,
        576
      ],
      "webhookId": "183ad2a4-3ab5-44b3-9cc8-9ac5dff65137",
      "parameters": {
        "html": "=<h2>🚨 Plagiarism Check Failure Alert</h2>\n\n<p><strong>System:</strong> Plagiarism Checker AI</p>\n<p><strong>Status:</strong> <span style=\"color:red;\">❌ Failed to complete the plagiarism check</span></p>\n\n<h3>🔍 Failure Details</h3>\n<ul>\n  <li><strong>Timestamp:</strong> {{ $now }}</li>\n  <li><strong>User Content:</strong></li>\n</ul>\n<blockquote style=\"background-color:#f9f9f9;padding:10px;border-left:3px solid #ccc;\">\n  {{ $json[\"content\"] || \"No content received\" }}\n</blockquote>\n\n<h3>⚠️ Recommended Actions</h3>\n<ul>\n  <li>Check API availability and key validity</li>\n  <li>Inspect server/network logs</li>\n  <li>Ensure correct data formatting from the form submission</li>\n</ul>\n\n<hr>\n<p style=\"color:gray;font-size:12px;\">This message was automatically generated by the n8n workflow: <strong>Plagiarism Checker AI</strong>.</p>\n",
        "options": {},
        "subject": "ALERT: Plagiarism Check Failed – Immediate Attention Required",
        "toEmail": "it@test.com",
        "fromEmail": "admin@test.com"
      },
      "credentials": {
        "smtp": {
          "id": "nPwKPPgVavimTJX4",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "7784e381-f704-4981-96bc-005c1ce5064a",
      "name": "Google 시트에 상태: 실패 표시",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2448,
        576
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Failed",
            "Content": "={{ $('Trigger - New Row in Google Sheet').item.json.Content }}"
          },
          "schema": [
            {
              "id": "Content",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Content",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "number",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Content"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "",
          "cachedResultName": "Plagiarism "
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "Rt0RWApx8PL9t0RF",
          "name": "Google Docs account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "182d4104-b1ca-4731-8bdb-76ef606b6060",
      "name": "스티키 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        160
      ],
      "parameters": {
        "height": 272,
        "content": "Watches for a new row added to a specific Google Sheet.\nTriggers the workflow when new content is submitted for plagiarism checking."
      },
      "typeVersion": 1
    },
    {
      "id": "998ab663-310d-44eb-9b24-230fc52042a7",
      "name": "스티키 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1376,
        160
      ],
      "parameters": {
        "height": 272,
        "content": "Sends the submitted content to the external plagiarism-checking API.\nUses a POST request with necessary headers and the content in the body."
      },
      "typeVersion": 1
    },
    {
      "id": "ba69627c-cfb6-4426-a706-b959c717e033",
      "name": "스티키 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1648,
        -16
      ],
      "parameters": {
        "height": 272,
        "content": "Checks if the API returned a successful response and valid results.\nRoutes the flow either to process results or handle the failure."
      },
      "typeVersion": 1
    },
    {
      "id": "9e964af6-213d-42c6-9e44-57f47ed61ae0",
      "name": "스티키 노트3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1936,
        -32
      ],
      "parameters": {
        "height": 272,
        "content": "Extracts the results array from the API response.\nPrepares raw data for formatting in the next step."
      },
      "typeVersion": 1
    },
    {
      "id": "61e70bcd-4fa6-42ba-9889-ed7f1d55af53",
      "name": "스티키 노트4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2224,
        -80
      ],
      "parameters": {
        "height": 272,
        "content": "Formats the extracted plagiarism data into a readable HTML report.\nBuilds a styled email-friendly structure with links, scores, and matched sentences."
      },
      "typeVersion": 1
    },
    {
      "id": "4586d451-cc69-4105-976d-387a37232133",
      "name": "스티키 노트5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2544,
        -32
      ],
      "parameters": {
        "height": 304,
        "content": "Sends the generated plagiarism report to the user via email.\nUses SMTP credentials to deliver the HTML content."
      },
      "typeVersion": 1
    },
    {
      "id": "036e05fc-c6c8-4f13-b31d-68573e801af7",
      "name": "스티키 노트6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2880,
        176
      ],
      "parameters": {
        "height": 288,
        "content": "Updates the status column of the original row as \"Success\".\nConfirms that the content was checked and report sent."
      },
      "typeVersion": 1
    },
    {
      "id": "94a0a7ce-8568-4694-967c-6ad29597114b",
      "name": "스티키 노트7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2080,
        448
      ],
      "parameters": {
        "height": 272,
        "content": "Sends an alert email to IT when the API check fails.\nIncludes content and troubleshooting suggestions in the email."
      },
      "typeVersion": 1
    },
    {
      "id": "7a23855d-1487-4da6-8c4a-de1aebef57a1",
      "name": "스티키 노트8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2400,
        480
      ],
      "parameters": {
        "height": 240,
        "content": "Marks the row in the Google Sheet with \"Failed\" status.\nHelps track unsuccessful API checks for follow-up."
      },
      "typeVersion": 1
    },
    {
      "id": "3f9b076d-a7cc-4e13-adff-7e57d9dedfd6",
      "name": "스티키 노트9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        48
      ],
      "parameters": {
        "width": 672,
        "height": 944,
        "content": "\n# 🚀 Automated Plagiarism Checker Workflow in n8n\n\n## ✅ **Short Summary**\n\nAn automated plagiarism detection workflow using n8n, Google Sheets, and a third-party API. It checks submitted text for plagiarism, sends a formatted report via email, and logs results in real-time.\n\n---\n\n## 💼 **Use Case**\n\n* Ideal for educators, content teams, academic institutions, or editors who need to verify originality of text submitted via a Google Sheet form.\n\n\n## 🎯 **Key Benefits**\n\n* 🔁 **Fully Automated**: No manual checking — it triggers on new Google Sheet entries.\n* 📩 **Instant Reports**: Sends clean, detailed HTML reports directly to the user's inbox.\n* 📊 **Status Tracking**: Logs success or failure directly in your Google Sheet.\n* 🚨 **IT Alerts**: Notifies your IT team if API or checks fail.\n\n\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "61535540-0df7-43d6-afe5-76f2fe0f5b62": {
      "main": [
        [
          {
            "node": "7784e381-f704-4981-96bc-005c1ce5064a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0438c692-bd49-455f-a1a9-afb0ef853b0a": {
      "main": [
        [
          {
            "node": "ff20ec20-e67d-42bb-a903-7452f0801389",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "61535540-0df7-43d6-afe5-76f2fe0f5b62",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ff20ec20-e67d-42bb-a903-7452f0801389": {
      "main": [
        [
          {
            "node": "0fb5c95c-1182-4f1c-9bb5-a58218518976",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ef430ff6-e774-4aff-b66d-0b0000aa0d15": {
      "main": [
        [
          {
            "node": "d70d998c-cbb7-4478-bf41-56f027da2a07",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a9057c26-4936-48d4-a8d5-23efe3bb528d": {
      "main": [
        [
          {
            "node": "0438c692-bd49-455f-a1a9-afb0ef853b0a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0fb5c95c-1182-4f1c-9bb5-a58218518976": {
      "main": [
        [
          {
            "node": "ef430ff6-e774-4aff-b66d-0b0000aa0d15",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "806a295f-8337-4459-bdc7-5e3b9f3634de": {
      "main": [
        [
          {
            "node": "a9057c26-4936-48d4-a8d5-23efe3bb528d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

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

유료인가요?

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

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

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34