8
n8n 한국어amn8n.com

내 워크플로 2

중급

이것은File Management, Multimodal AI분야의자동화 워크플로우로, 15개의 노드를 포함합니다.주로 Ftp, Set, Filter, EmailSend, ScheduleTrigger 등의 노드를 사용하며. 스마트 정리 및 이메일 알림이 포함된 자동 FTP 파일 마이그레이션

사전 요구사항
  • 특별한 사전 요구사항 없이 가져와 바로 사용 가능합니다
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "DaJFVETQef5qJMmB",
  "meta": {
    "instanceId": "ade915387b18f7a3b9a14fd8fb677fdbace0ade794de7914e8790d907cd285d0",
    "templateCredsSetupCompleted": true
  },
  "name": "My workflow 2",
  "tags": [],
  "nodes": [
    {
      "id": "dafe14b7-7719-41b7-b1a4-cf6765aa3db9",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -144
      ],
      "parameters": {
        "width": 400,
        "height": 712,
        "content": "# 🚀 FTP FILE MIGRATION WORKFLOW\n\n## Overview:\nAutomated file transfer between FTP servers with comprehensive error handling and notifications.\n\n## Key Features:\n✅ Scheduled execution (daily at 2 AM)\n✅ Smart file filtering\n✅ Secure transfer with validation\n✅ Source cleanup after success\n✅ Email notifications (success + error)\n✅ Comprehensive logging\n\n## Quick Start:\n1. Configure FTP credentials\n2. Adjust schedule and filters\n3. Set up email notifications\n4. Test with small files first\n5. Monitor execution logs\n\n⚠️ **IMPORTANT**: Test thoroughly before production!"
      },
      "typeVersion": 1
    },
    {
      "id": "f460e190-0e9f-4fb9-b023-2b4d37988a37",
      "name": "파일 처리",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        608,
        144
      ],
      "parameters": {
        "width": 380,
        "height": 280,
        "content": "## 📁 FILE PROCESSING PIPELINE\n\n### Current Filter: \n**Text & Data Files Only**\n- .txt, .csv, .json, .xml\n\n### Common Alternatives:\n📄 **Documents**: `\\.(pdf|doc|docx)$`\n🖼️ **Images**: `\\.(jpg|jpeg|png|gif)$`\n📊 **Data**: `\\.(csv|json|xml|xlsx)$`\n📦 **Archives**: `\\.(zip|rar|7z|tar)$`\n🎵 **Media**: `\\.(mp4|mp3|avi|mov)$`\n\n### Size Limits:\n- Small: < 10MB\n- Medium: 10MB - 100MB  \n- Large: > 100MB (adjust timeouts)\n\n### Processing Order:\n1️⃣ List files from source\n2️⃣ Filter by criteria\n3️⃣ Download to temp storage\n4️⃣ Upload to destination\n5️⃣ Validate transfer\n6️⃣ Clean up source\n\n🔄 **Remove Filter node to transfer ALL files**"
      },
      "typeVersion": 1
    },
    {
      "id": "d92ebb39-8697-4137-8770-dddf0cc3412a",
      "name": "보안",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        592
      ],
      "parameters": {
        "width": 382,
        "height": 792,
        "content": "## 🔒 SECURITY BEST PRACTICES\n\n### Connection Security:\n🔐 **Use SFTP** instead of FTP (port 22)\n🔑 **SSH Keys** preferred over passwords\n🌐 **IP Whitelisting** on FTP servers\n🔒 **VPN/Tunnel** for sensitive data\n\n### Credential Management:\n🗝️ **Dedicated Service Accounts**\n🔄 **Regular Rotation** (monthly/quarterly)\n📝 **Minimum Permissions** (read source, write dest)\n🚫 **No Shared Accounts**\n\n### Data Protection:\n🔐 **Encryption in Transit** (TLS/SSL)\n🗂️ **File Integrity Checks** (checksums)\n📋 **Audit Logging** (all operations)\n🕐 **Retention Policies** (log cleanup)\n\n### Access Control:\n👤 **Role-Based Access**\n🚪 **Principle of Least Privilege**\n📊 **Access Reviews** (quarterly)\n🔍 **Activity Monitoring**\n\n### Compliance:\n📜 **GDPR/CCPA** considerations\n📋 **SOX/HIPAA** requirements\n🏢 **Corporate Policies**\n📝 **Documentation Requirements**"
      },
      "typeVersion": 1
    },
    {
      "id": "42886faa-e0ec-4ccc-9bcf-fa289f27fea7",
      "name": "성능",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        -144
      ],
      "parameters": {
        "width": 444,
        "height": 568,
        "content": "## ⚡ PERFORMANCE OPTIMIZATION\n\n### File Size Considerations:\n📄 **Small Files** (< 10MB): Default settings\n📊 **Medium Files** (10-100MB): Increase timeouts\n📦 **Large Files** (> 100MB): Extended timeouts + monitoring\n🎬 **Huge Files** (> 1GB): Consider alternative methods\n\n### Timeout Settings:\n⏰ **Connection**: 30 seconds\n⏰ **Download**: 300 seconds (5 min)\n⏰ **Upload**: 300 seconds (5 min)\n⏰ **Large Files**: 600+ seconds (10+ min)\n\n### Network Optimization:\n🌐 **Peak Hours**: Schedule during off-peak\n📊 **Bandwidth**: Monitor usage patterns\n🔄 **Parallel Processing**: For multiple files\n📈 **Resume Support**: For interrupted transfers\n\n\n\n🎯 **Target**: < 5 min per 100MB file"
      },
      "typeVersion": 1
    },
    {
      "id": "51afbebf-2431-4d08-bd8e-74c0a9072eb1",
      "name": "문제 해결",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2304,
        -128
      ],
      "parameters": {
        "width": 480,
        "height": 912,
        "content": "## 🔧 TROUBLESHOOTING GUIDE\n\n### Common Issues & Solutions:\n\n🔌 **Connection Failures:**\n- Check server status & firewall\n- Verify credentials & permissions\n- Test network connectivity\n- Review SSL/TLS settings\n\n⏱️ **Timeout Errors:**\n- Increase timeout values\n- Check file sizes vs. settings\n- Monitor network speed\n- Split large transfers\n\n🔑 **Authentication Issues:**\n- Verify username/password\n- Check account lockouts\n- Test credential expiration\n- Review permission changes\n\n📁 **File Operation Errors:**\n- Confirm file existence\n- Check read/write permissions\n- Verify disk space availability\n- Test file locking status\n\n💾 **Memory/Performance:**\n- Monitor n8n server resources\n- Adjust concurrent executions\n- Implement file size limits\n- Consider batch processing\n\n### Debug Steps:\n1️⃣ **Check Logs**: Execution history\n2️⃣ **Test Credentials**: Manual FTP connection\n3️⃣ **Verify Paths**: Directory structure\n4️⃣ **Network Test**: Ping/telnet servers\n5️⃣ **Resource Check**: CPU/Memory/Disk\n\n📞 **Escalation**: Contact system administrators"
      },
      "typeVersion": 1
    },
    {
      "id": "d57222c3-5f3b-45ec-8410-3f49675bdf9b",
      "name": "구성",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        96
      ],
      "parameters": {
        "width": 380,
        "height": 320,
        "content": "## ⚙️ CONFIGURATION CHECKLIST\n\n### Pre-Deployment:\n☐ **FTP Credentials**: Source & destination tested\n☐ **SMTP Settings**: Email notifications configured\n☐ **File Filters**: Appropriate patterns set\n☐ **Paths**: Source & destination directories verified\n☐ **Schedule**: Cron expression configured\n☐ **Timeouts**: Adjusted for expected file sizes\n☐ **Permissions**: Read source, write destination\n☐ **Network**: Connectivity between all systems\n\n### Testing Phase:\n☐ **Disable Cleanup**: Comment out source deletion\n☐ **Small Files**: Test with 1-2 small files first\n☐ **Error Scenarios**: Test failure conditions\n☐ **Email Alerts**: Verify notifications work\n☐ **Logs Review**: Check execution history\n☐ **Performance**: Monitor transfer speeds\n\n### Production Deployment:\n☐ **Enable Cleanup**: Activate source deletion\n☐ **Monitor First Run**: Watch initial execution\n☐ **Set Alerts**: Configure monitoring thresholds\n☐ **Document Config**: Save settings & passwords\n☐ **Schedule Review**: Confirm timing works\n☐ **Backup Strategy**: Plan for rollback\n\n### Post-Deployment:\n☐ **Daily Monitoring**: Check success rates\n☐ **Weekly Reviews**: Analyze performance\n☐ **Monthly Audits**: Security & compliance\n☐ **Quarterly Updates**: Credential rotation"
      },
      "typeVersion": 1
    },
    {
      "id": "fd89ccc8-f083-4241-a869-dca7690bc591",
      "name": "일일 스케줄 (오전 2시)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "notes": "SCHEDULE TRIGGER CONFIGURATION:\n\n📅 CURRENT SCHEDULE: Daily at 2:00 AM (server time)\n\n⏰ SCHEDULE EXAMPLES:\n- Daily at specific time: 0 2 * * *\n- Every 6 hours: 0 */6 * * *\n- Weekdays at 8 AM: 0 8 * * 1-5\n- Weekly on Sunday 2 AM: 0 2 * * 0\n- Monthly on 1st at midnight: 0 0 1 * *\n\n🔧 CONFIGURATION STEPS:\n1. Click on this node to edit\n2. Modify 'Cron Expression' field\n3. Use cron expression generator if needed\n4. Test with 'Execute Node' button\n\n⚠️ IMPORTANT CONSIDERATIONS:\n- Server timezone affects execution time\n- Consider maintenance windows\n- Avoid peak business hours\n- Account for server load and resources\n- Plan for daylight saving time changes\n\n💡 TESTING TIP:\n- Use '*/5 * * * *' for every 5 minutes during testing\n- Change back to production schedule after validation\n\n🌍 TIMEZONE SETTINGS:\n- Current: Europe/Warsaw (GMT+1/+2)\n- Modify in workflow settings if needed\n- Ensure consistency across all environments",
      "position": [
        288,
        512
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 2 * * *"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0be802db-9255-45b5-8c93-ca85087969e5",
      "name": "파일 목록 - 원본 FTP",
      "type": "n8n-nodes-base.ftp",
      "notes": "SOURCE FTP SERVER CONFIGURATION:\n\n🔑 CREDENTIALS SETUP:\n1. Navigate to: Settings → Credentials → Create New\n2. Select 'FTP' credential type\n3. Name: 'Source FTP Server'\n4. Enter connection details:\n   - Host: source-ftp-server.com\n   - Port: 21 (FTP) or 22 (SFTP)\n   - Username: your_username\n   - Password: your_password\n5. Test connection before saving\n\n📁 PATH CONFIGURATION:\n- Absolute path: /home/user/files/\n- Relative path: files/folder/\n- Root directory: /\n- Current example: /source/directory/\n\n🔍 OPERATION SETTINGS:\n- Operation: 'List' (to discover files)\n- Recursive: true (includes subdirectories)\n- Returns file metadata: name, size, date, permissions\n\n⚙️ ADVANCED OPTIONS:\n- Connection timeout: 30 seconds (default)\n- Data timeout: 60 seconds\n- Keep connection alive: true\n- Passive mode: true (recommended)\n\n🛡️ SECURITY RECOMMENDATIONS:\n- Use SFTP (port 22) when possible\n- Enable key-based authentication\n- Implement IP whitelisting\n- Use dedicated service accounts\n- Regular credential rotation\n\n🐛 TROUBLESHOOTING:\n- Connection timeout: Check firewall settings\n- Permission denied: Verify user permissions\n- Path not found: Ensure directory exists\n- Authentication failed: Check credentials\n\n📊 EXPECTED OUTPUT:\n- Array of file objects\n- Each object contains: name, size, date, type\n- Empty array if no files found",
      "position": [
        512,
        512
      ],
      "parameters": {
        "path": "/source/directory/",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "0915fba4-e8a7-4070-bfe6-03d594163495",
      "name": "파일 필터링",
      "type": "n8n-nodes-base.filter",
      "notes": "FILE FILTERING & SELECTION:\n\n🔍 CURRENT FILTER LOGIC:\n- File Extension Match: \\.(txt|csv|json|xml)$\n- Case-sensitive matching enabled\n- Regex pattern matching\n\n📝 COMMON FILTER PATTERNS:\n\n📄 DOCUMENTS:\n- Office files: \\.(doc|docx|xls|xlsx|ppt|pptx)$\n- PDF files: \\.pdf$\n- Text files: \\.(txt|rtf|md)$\n\n🖼️ IMAGES:\n- Common formats: \\.(jpg|jpeg|png|gif|bmp)$\n- High-res images: \\.(tiff|tga|raw)$\n- Vector graphics: \\.(svg|eps|ai)$\n\n📊 DATA FILES:\n- Structured data: \\.(csv|json|xml|yaml)$\n- Database files: \\.(sql|db|sqlite)$\n- Log files: \\.(log|txt)$\n\n📦 ARCHIVES:\n- Compressed files: \\.(zip|rar|7z|tar|gz)$\n\n🔧 ADVANCED FILTERING OPTIONS:\n\n📏 SIZE-BASED FILTERING:\n- Add condition: {{ $json.size > 1048576 }} (> 1MB)\n- Small files only: {{ $json.size < 10240 }} (< 10KB)\n- Size range: {{ $json.size >= 1024 && $json.size <= 5242880 }}\n\n📅 DATE-BASED FILTERING:\n- Recent files: {{ $json.date > $now.minus({days: 7}) }}\n- Older files: {{ $json.date < $now.minus({months: 1}) }}\n- Specific date range: Use date comparisons\n\n📛 NAME PATTERN FILTERING:\n- Starts with: ^report_.*\n- Ends with: .*_backup$\n- Contains: .*important.*\n- Exclude pattern: ^(?!temp_).*\n\n⚠️ FILTER BYPASS:\n- Remove this node to transfer ALL files\n- Be cautious with unrestricted transfers\n- Consider disk space and bandwidth\n\n🎯 TESTING FILTERS:\n1. Use 'Execute Node' to test filter logic\n2. Check output to verify correct files selected\n3. Adjust regex patterns as needed\n4. Validate with different file types\n\n💡 PERFORMANCE TIP:\n- Specific filters reduce processing time\n- Avoid overly complex regex patterns\n- Test filters with representative data",
      "position": [
        736,
        512
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "file-filter-condition",
              "operator": {
                "type": "string",
                "operation": "regex"
              },
              "leftValue": "={{ $json.name }}",
              "rightValue": "\\.(txt|csv|json|xml)$"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "76837f02-91d3-47f9-aa45-4814c8fd32d1",
      "name": "파일 다운로드",
      "type": "n8n-nodes-base.ftp",
      "notes": "FILE DOWNLOAD OPERATION:\n\n📥 DOWNLOAD CONFIGURATION:\n- Operation: 'Download File'\n- Binary Property: 'file_data' (stores file content)\n- Dynamic path: {{ $json.name }} (from previous node)\n- Uses same credentials as listing operation\n\n🎯 IMPORTANT SETTINGS:\n- Path Expression: {{ $json.name }}\n- Binary Data Property: file_data\n- Timeout: 300 seconds (5 minutes)\n- Auto-retry: 3 attempts on failure\n\n📊 PERFORMANCE CONSIDERATIONS:\n\n⏱️ TIMEOUT SETTINGS:\n- Small files (<10MB): Default timeout (60s)\n- Medium files (10MB-100MB): 300 seconds\n- Large files (>100MB): 600+ seconds\n- Adjust based on network speed\n\n🗂️ FILE SIZE LIMITS:\n- n8n default: 150MB per execution\n- Large files may cause memory issues\n- Consider file size filtering\n- Split large transfers into batches\n\n🔄 RETRY LOGIC:\n- Automatic retry on network errors\n- 3 attempts with exponential backoff\n- Preserves original file on failure\n- Error details logged for debugging\n\n💾 MEMORY MANAGEMENT:\n- Files stored in n8n temporary memory\n- Automatic cleanup after workflow completion\n- Monitor server RAM usage for large files\n- Consider streaming for very large files\n\n⚠️ ERROR SCENARIOS:\n- Network interruption: Auto-retry enabled\n- File permissions: Check source server access\n- File locked: Retry after delay\n- Disk space: Monitor n8n server storage\n- Timeout: Increase timeout for large files\n\n🔍 MONITORING:\n- Check execution logs for download times\n- Monitor network bandwidth usage\n- Track success/failure rates\n- Set up alerts for repeated failures\n\n🛠️ TROUBLESHOOTING:\n- Download fails: Check file permissions\n- Slow downloads: Verify network speed\n- Timeout errors: Increase timeout setting\n- Memory errors: Reduce batch size or file size limit\n\n📈 OUTPUT DATA:\n- Binary data stored in 'file_data' property\n- Original filename preserved\n- File metadata available for next nodes\n- Ready for upload to destination server",
      "position": [
        960,
        512
      ],
      "parameters": {
        "path": "={{ $json.name }}",
        "options": {},
        "binaryPropertyName": "file_data"
      },
      "typeVersion": 1
    },
    {
      "id": "cee66200-dd84-4a31-b00b-81935cff7e86",
      "name": "대상에 업로드",
      "type": "n8n-nodes-base.ftp",
      "notes": "DESTINATION FTP UPLOAD:\n\n🎯 UPLOAD CONFIGURATION:\n- Operation: 'Upload File'\n- Source: Binary data from 'file_data' property\n- Dynamic destination path with filename preservation\n- Automatic directory creation enabled\n\n🔑 CREDENTIALS SETUP:\n1. Create separate FTP credential: 'Destination FTP Server'\n2. Verify write permissions on target server\n3. Test connectivity before production use\n4. Use different credentials than source for security\n\n📁 PATH STRUCTURE EXAMPLES:\n\n🗂️ PRESERVE ORIGINAL STRUCTURE:\n/destination/directory/{{ $json.name }}\n\n📅 DATE-BASED ORGANIZATION:\n/files/{{ $now.format('YYYY/MM/DD') }}/{{ $json.name }}\n\n📊 TYPE-BASED ORGANIZATION:\n/files/{{ $json.name.split('.').pop() }}/{{ $json.name }}\n\n👤 USER-BASED ORGANIZATION:\n/users/{{ $json.owner || 'system' }}/{{ $json.name }}\n\n⚙️ UPLOAD OPTIONS:\n\n✅ ENABLED FEATURES:\n- createDirectories: true (auto-create missing folders)\n- preserveTimestamp: true (maintain original dates)\n- overwriteExisting: false (prevent accidental overwrites)\n\n🔄 ADDITIONAL OPTIONS:\n- Resume broken uploads: true\n- Verify after upload: true\n- Atomic upload: true (temp file → rename)\n- Permission setting: 644 (read/write owner, read others)\n\n🛡️ SECURITY MEASURES:\n- Separate credentials for source/destination\n- Write-only permissions where possible\n- Regular credential rotation\n- Audit trail maintenance\n\n⚡ PERFORMANCE OPTIMIZATION:\n- Parallel uploads for multiple files\n- Compression for large text files\n- Resume capability for interrupted transfers\n- Bandwidth limiting for peak hours\n\n🎯 SUCCESS VALIDATION:\n- File existence check after upload\n- Size comparison (source vs destination)\n- Checksum verification (optional)\n- Timestamp preservation validation\n\n⚠️ ERROR SCENARIOS & SOLUTIONS:\n- Disk full: Monitor destination storage\n- Permission denied: Verify write access\n- Connection lost: Auto-retry with backoff\n- Filename conflicts: Use unique naming\n\n📊 MONITORING METRICS:\n- Upload speed (MB/s)\n- Success rate percentage\n- Average file size\n- Total data transferred\n- Error frequency and types\n\n🔧 TROUBLESHOOTING GUIDE:\n- Upload fails: Check destination permissions\n- Slow uploads: Verify network connectivity\n- Directory errors: Ensure path format is correct\n- Authentication issues: Validate credentials\n- File corruption: Enable checksum verification\n\n📈 OUTPUT INFORMATION:\n- Upload success status\n- Destination file path\n- Transfer duration\n- File size confirmation\n- Any warnings or errors",
      "position": [
        1184,
        512
      ],
      "parameters": {
        "path": "/destination/directory/{{ $json.name }}",
        "options": {},
        "binaryPropertyName": "file_data"
      },
      "typeVersion": 1
    },
    {
      "id": "df6e949f-839e-4ab5-80c8-243b16409720",
      "name": "업로드 성공?",
      "type": "n8n-nodes-base.filter",
      "notes": "SUCCESS VALIDATION:\n\nCHECKS PERFORMED:\n- Upload operation success status\n- File transfer completion\n- No error conditions\n\nNEXT STEPS:\n- TRUE: Proceed to cleanup (delete source)\n- FALSE: Route to error handling\n\nADDITIONAL VALIDATIONS:\n- File size comparison\n- Checksum verification\n- Timestamp validation\n\nCONFIGURATION:\n- Adjust condition based on FTP node output\n- May need to check different properties\n- Test with actual transfer results",
      "position": [
        1408,
        512
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "success-condition",
              "operator": {
                "type": "boolean",
                "operation": "equal"
              },
              "leftValue": "={{ $json.success }}",
              "rightValue": true
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "8e3a057f-f21c-4129-a43d-17960b58b26a",
      "name": "원본 파일 삭제",
      "type": "n8n-nodes-base.ftp",
      "notes": "SOURCE FILE CLEANUP:\n\nOPERATION: DELETE\n- Removes file from source server\n- Only after successful upload\n- Prevents duplicate processing\n\nSAFETY MEASURES:\n- Only runs after upload verification\n- Maintains transfer logs\n- Consider backup retention period\n\nALTERNATIVE STRATEGIES:\n1. MOVE to 'processed' folder instead of delete\n2. RENAME with timestamp suffix\n3. ARCHIVE to compressed format\n\nRISK MITIGATION:\n- Test thoroughly before production\n- Implement rollback procedures\n- Monitor deletion operations\n\nIMPORTANT: Disable this step for testing!",
      "position": [
        1632,
        512
      ],
      "parameters": {
        "path": "={{ $json.name }}",
        "options": {}
      },
      "typeVersion": 1
    },
    {
      "id": "4c15a875-60ab-462e-a780-1e50337f7ca3",
      "name": "성공 로그 기록",
      "type": "n8n-nodes-base.set",
      "notes": "SUCCESS LOGGING:\n\nLOG FIELDS:\n- Timestamp: ISO format with timezone\n- Filename: Original file name\n- Status: SUCCESS indicator\n- File Size: In bytes for monitoring\n- Operation: Type of migration performed\n\nLOGGING ENHANCEMENTS:\n- Add source/destination server info\n- Include transfer duration\n- Record file checksums\n- Track user/process info\n\nOUTPUT OPTIONS:\n1. Database logging (add database node)\n2. File logging (append to CSV/JSON)\n3. External API (webhook notification)\n4. Email notifications\n\nMONITORING:\n- Use for operational dashboards\n- Generate migration reports\n- Track performance metrics",
      "position": [
        1856,
        512
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "log-timestamp",
              "name": "timestamp",
              "type": "string",
              "value": "={{ $now.format('YYYY-MM-DD HH:mm:ss') }}"
            },
            {
              "id": "log-filename",
              "name": "filename",
              "type": "string",
              "value": "={{ $json.name }}"
            },
            {
              "id": "log-status",
              "name": "status",
              "type": "string",
              "value": "SUCCESS"
            },
            {
              "id": "log-filesize",
              "name": "file_size_bytes",
              "type": "number",
              "value": "={{ $json.size }}"
            },
            {
              "id": "log-operation",
              "name": "operation",
              "type": "string",
              "value": "MIGRATE_AND_DELETE"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "18f4a55b-d5d5-4c44-8116-70614e4b01c6",
      "name": "이메일 성공 알림 전송",
      "type": "n8n-nodes-base.emailSend",
      "notes": "EMAIL SUCCESS NOTIFICATION:\n\n📧 SUCCESS NOTIFICATION SETTINGS:\n- Sends confirmation email for successful transfers\n- Includes transfer details and file information\n- Uses same SMTP credentials as error notifications\n- Helps maintain audit trail of all operations\n\n✅ EMAIL CONTENT:\n- Timestamp of successful completion\n- Filename and size of transferred file\n- Operation type and status confirmation\n- Summary of all workflow steps completed\n\n📬 NOTIFICATION FREQUENCY:\n- One email per successful file transfer\n- Can be modified to send daily/weekly summaries\n- Consider batch notifications for high-volume transfers\n\n⚙️ CUSTOMIZATION OPTIONS:\n\n📊 SUMMARY REPORTS:\n- Change to HTML format for better presentation\n- Include charts or statistics\n- Add file thumbnails for images\n- Include transfer speed metrics\n\n📝 CONTENT MODIFICATIONS:\n- Add recipient-specific information\n- Include business context or next steps\n- Add links to file locations\n- Include compliance or audit information\n\n👥 RECIPIENT MANAGEMENT:\n- Multiple recipients with CC/BCC\n- Different notifications for different teams\n- Role-based notification content\n- Escalation for VIP files or large transfers\n\n🔕 NOTIFICATION CONTROL:\n- Add conditions to skip notifications for certain files\n- Time-based notification suppression (e.g., only during business hours)\n- File size thresholds for notifications\n- Success rate thresholds (only notify if multiple successes)\n\n📈 REPORTING INTEGRATION:\n- Can feed into business intelligence systems\n- Generate compliance reports\n- Track SLA compliance\n- Monitor operational efficiency\n\nNOTE: For high-volume environments, consider implementing batch notifications to avoid email flooding",
      "position": [
        2080,
        512
      ],
      "webhookId": "aef3fd9a-2a48-4e76-9900-5a48015a67cf",
      "parameters": {
        "options": {
          "allowUnauthorizedCerts": false
        },
        "subject": "✅ FTP Migration Success - {{ $now.format('YYYY-MM-DD HH:mm') }}",
        "toEmail": "admin@yourcompany.com",
        "fromEmail": "noreply@yourcompany.com"
      },
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "ff89656f-95ee-4c16-a998-16763e6a5b23",
  "connections": {
    "4c15a875-60ab-462e-a780-1e50337f7ca3": {
      "main": [
        [
          {
            "node": "18f4a55b-d5d5-4c44-8116-70614e4b01c6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0915fba4-e8a7-4070-bfe6-03d594163495": {
      "main": [
        [
          {
            "node": "76837f02-91d3-47f9-aa45-4814c8fd32d1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "76837f02-91d3-47f9-aa45-4814c8fd32d1": {
      "main": [
        [
          {
            "node": "cee66200-dd84-4a31-b00b-81935cff7e86",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "df6e949f-839e-4ab5-80c8-243b16409720": {
      "main": [
        [
          {
            "node": "8e3a057f-f21c-4129-a43d-17960b58b26a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8e3a057f-f21c-4129-a43d-17960b58b26a": {
      "main": [
        [
          {
            "node": "4c15a875-60ab-462e-a780-1e50337f7ca3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fd89ccc8-f083-4241-a869-dca7690bc591": {
      "main": [
        [
          {
            "node": "0be802db-9255-45b5-8c93-ca85087969e5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cee66200-dd84-4a31-b00b-81935cff7e86": {
      "main": [
        [
          {
            "node": "df6e949f-839e-4ab5-80c8-243b16409720",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0be802db-9255-45b5-8c93-ca85087969e5": {
      "main": [
        [
          {
            "node": "0915fba4-e8a7-4070-bfe6-03d594163495",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "18f4a55b-d5d5-4c44-8116-70614e4b01c6": {
      "main": [
        []
      ]
    }
  }
}
자주 묻는 질문

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

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

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

중급 - 파일 관리, 멀티모달 AI

유료인가요?

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

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

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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34