{
  "source_file": "0930",
  "source_platform": "Dev.to",
  "author": "Nishikanta Ray",
  "title_listed": "SwiftCut: AI-Powered Video Silence Remover Built with GitHub Copilot CLI",
  "keywords": "",
  "domain": "机器学习",
  "content_type": "深度技术解析",
  "is_paid_flag": "否",
  "url": "https://dev.to/nishikantaray/swiftcut-ai-powered-video-silence-remover-built-with-github-copilot-cli-3dj7",
  "publish_date": "2026-01-26",
  "corpus_stage": "",
  "notes": "",
  "id": "3590bfe4d7b4",
  "collected_at": "2026-10-02T14:04:49",
  "title": "SwiftCut: AI-Powered Video Silence Remover Built with GitHub Copilot CLI - DEV Community",
  "body_markdown": "This is a submission for the\nGitHub Copilot CLI Challenge\nWhat I Built\nSwiftCut\nis a local-first desktop application that automates the \"Rough Cut\" phase of video editing. It uses AI-powered audio analysis to instantly detect and remove silent segments from videos — no cloud uploads, no subscriptions, complete privacy.\nThe Problem I Solved\nAs a content creator, I spent\nhours\nmanually cutting out silent pauses from my podcast recordings, tutorial videos, and vlogs. The workflow was:\nImport video into heavy editing software\nScrub through timeline looking for silence\nManually mark and delete each silent segment\nRepeat 50+ times per video 😩\nSwiftCut automates this entire process in seconds.\nKey Features\n🎯\nSmart Silence Detection\n— FFmpeg-powered audio analysis with configurable thresholds\n⚡\nInstant Results\n— Process a 10-minute video in under 5 seconds\n🔒\n100% Local & Private\n— Your videos never leave your machine\n🎚️\nContent Presets\n— Optimized settings for Podcasts, Tutorials, Vlogs, and Interviews\n🤖\nAI Natural Language Commands\n— Tell it what to do: \"Remove all silences\" or \"Make a 30-second clip\"\n🎬\nReel Cutter\n— Split long videos into Instagram Reels, TikTok, or YouTube Shorts\n🎙️\nVoice Commands\n— Speak your edits using Web Speech API\n↩️\nFull Undo/Redo\n— Never lose your work\nTech Stack\nLayer\nTechnology\nFramework\nTauri v2 (Rust + WebView)\nFrontend\nReact 19 + TypeScript\nStyling\nTailwind CSS v4\nState\nZustand\nVideo Processing\nFFmpeg\nAI\nMulti-provider (Local, Ollama, OpenAI, Copilot SDK)\nDemo\n🎥 Video Walkthrough\n▶️ Watch SwiftCut in Action\nScreenshots\nLanding Page — Clean, focused interface\nSilence Detection — Visual timeline with detected segments\nAI Commands — Natural language video editing\nReel Cutter — Split videos for social media\nTry It Yourself\n# Clone the repo\ngit clone https://github.com/yourusername/swiftcut.git\ncd\nswiftcut\n# Install dependencies\nnpm\ninstall\n# Run in development\nnpm run tauri dev\n# Build for production\nnpm run tauri:build\nEnter fullscreen mode\nExit fullscreen mode\nRequirements:\nNode.js 22+, Rust 1.93+, FFmpeg\nMy Experience with GitHub Copilot CLI\nHow Copilot CLI Transformed My Development\nBuilding SwiftCut would have taken\nweeks\nwithout GitHub Copilot CLI. Here's how I used it:\n1.\nFFmpeg Command Generation\nFFmpeg has notoriously complex syntax. Instead of Googling for hours, I asked Copilot:\ngh copilot suggest\n\"ffmpeg command to detect silence below -30dB lasting more than 0.5 seconds\"\nEnter fullscreen mode\nExit fullscreen mode\nResult:\nffmpeg\n-i\ninput.mp4\n-af\n\"silencedetect=noise=-30dB:d=0.5\"\n-f\nnull -\nEnter fullscreen mode\nExit fullscreen mode\nThis became the core of my silence detection algorithm.\n2.\nRust Backend Development\nI'm primarily a TypeScript developer. Writing Rust for Tauri was daunting, but Copilot CLI helped:\ngh copilot explain\n\"how to parse FFmpeg stderr output in Rust and extract timestamps\"\nEnter fullscreen mode\nExit fullscreen mode\nIt gave me a complete regex pattern and parsing logic that I adapted for my\nlib.rs\n.\n3.\nComplex Filter Chains\nBuilding the export filter was tricky. I needed to keep non-silent segments and remove gaps:\ngh copilot suggest\n\"ffmpeg select filter to keep multiple time ranges and close gaps\"\nEnter fullscreen mode\nExit fullscreen mode\nResult:\n-vf\n\"select='between(t,0,5)+between(t,8,20)',setpts=N/FRAME_RATE/TB\"\n-af\n\"aselect='between(t,0,5)+between(t,8,20)',asetpts=N/SR/TB\"\nEnter fullscreen mode\nExit fullscreen mode\n4.\nAI Planner System Prompt\nI used Copilot to help design the system prompt for my AI planner:\ngh copilot suggest\n\"system prompt for an AI that converts natural language to FFmpeg commands\"\nEnter fullscreen mode\nExit fullscreen mode\nThis helped me structure the\nSWIFTCUT_SYSTEM_PROMPT\nthat powers the natural language interface.\n5.\nCross-Platform Build Configuration\nSetting up GitHub Actions for multi-platform builds:\ngh copilot suggest\n\"github actions workflow to build tauri app for mac windows and linux\"\nEnter fullscreen mode\nExit fullscreen mode\nGot a working CI/CD pipeline in minutes instead of hours.\nImpact on Development Experience\nMetric\nWithout Copilot CLI\nWith Copilot CLI\nFFmpeg learning curve\n2-3 days\n2 hours\nRust backend\n1 week\n2 days\nTotal development time\n~3 weeks\n~5 days\nStack Overflow visits\n100+\n~10\nThe \"Aha!\" Moment\nThe breakthrough came when I realized I could use Copilot CLI as a\nplanning agent\nwithin the app itself. The system prompt I developed with Copilot's help now powers SwiftCut's AI command interface:\nUser: \"Remove all silences longer than 1 second\"\n     ↓\nAI Planner (Copilot-inspired prompt)\n     ↓\nFFmpeg: select='between(t,0,5)+between(t,8,20)...'\n     ↓\nExported video with silences removed!\nEnter fullscreen mode\nExit fullscreen mode\nWhat I'd Tell Other Developers\nDon't just ask for code\n— Ask Copilot CLI to\nexplain\nconcepts first\nUse\nsuggest\nfor commands\n— Especially for complex CLI tools like FFmpeg, Docker, Git\nIterate with\nexplain\n— If the first suggestion isn't perfect, ask it to explain and refine\nBuild your own prompts\n— The system prompts Copilot uses are great templates for your AI features\nTechnical Deep Dive\nHow Silence Detection Works\nORIGINAL VIDEO (10 minutes)\n▓▓▓▓▓░░░▓▓▓▓▓▓▓░░▓▓▓▓░░░░▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓░░░▓▓▓▓▓\n     ▲       ▲       ▲           ▲         ▲\n  silence silence silence    silence   silence\n\n                    ↓ FFmpeg silencedetect\n\nEXPORTED VIDEO (7 minutes)  \n▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n(All silence removed — 30% shorter!)\nEnter fullscreen mode\nExit fullscreen mode\nAI Provider Architecture\nSwiftCut supports multiple AI backends:\ntype\nAIProvider\n=\n'\nlocal\n'\n|\n'\ncopilot\n'\n|\n'\nollama\n'\n|\n'\nopenai\n'\n;\n// Switch providers in settings\nsetAIProvider\n({\nprovider\n:\n'\nollama\n'\n,\nbaseUrl\n:\n'\nhttp://localhost:11434\n'\n,\nmodelName\n:\n'\nllama3.2\n'\n});\nEnter fullscreen mode\nExit fullscreen mode\nProvider\nUse Case\nLocal\nOffline, rule-based processing\nOllama\nPrivacy-focused local LLM\nOpenAI\nMost capable, requires API key\nCopilot SDK\nComing soon!\nWhat's Next\n[ ] Waveform visualization in timeline\n[ ] Transcript-based editing (\"Find where I say 'demo'\")\n[ ] Batch processing multiple videos\n[ ] Plugin system for custom filters\n[ ] Mobile companion app\nLinks\n🔗\nGitHub:\ngithub.com/NishikantaRay/swiftcut\n📺\nDemo Video:\nyoutube.com/watch?v=tXmQofWy3P0\nAcknowledgments\nBuilt with ❤️ using:\nTauri\n— Amazing desktop framework\nFFmpeg\n— The backbone of video processing\nGitHub Copilot CLI\n— My AI pair programmer\nWhat editing task takes you the longest? Let me know in the comments — maybe SwiftCut can help!",
  "metadata": {
    "title": "SwiftCut: AI-Powered Video Silence Remover Built with GitHub Copilot CLI - DEV Community",
    "description": "This is a submission for the GitHub Copilot CLI Challenge           What I Built   SwiftCut is a... Tagged with devchallenge, githubchallenge, cli, githubcopilot.",
    "keywords": "devchallenge, githubchallenge, cli, githubcopilot, software, coding, development, engineering, inclusive, community",
    "author": null,
    "og:type": "article",
    "og:url": "https://dev.to/nishikantaray/swiftcut-ai-powered-video-silence-remover-built-with-github-copilot-cli-3dj7",
    "og:title": "SwiftCut: AI-Powered Video Silence Remover Built with GitHub Copilot CLI",
    "og:description": "This is a submission for the GitHub Copilot CLI Challenge           What I Built   SwiftCut is a...",
    "og:site_name": "DEV Community",
    "og:image": "https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvdspsbms4lyywuctgcw.gif",
    "twitter:site": "@thepracticaldev",
    "twitter:creator": "@",
    "twitter:title": "SwiftCut: AI-Powered Video Silence Remover Built with GitHub Copilot CLI",
    "twitter:description": "This is a submission for the GitHub Copilot CLI Challenge           What I Built   SwiftCut is a...",
    "twitter:card": "summary_large_image",
    "twitter:widgets:new-embed-design": "on",
    "twitter:image:src": "https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdvdspsbms4lyywuctgcw.gif"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [
    {
      "file": "attachments/3590bfe4d7b4/code/body-000.txt",
      "chars": 204,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-001.txt",
      "chars": 96,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-002.txt",
      "chars": 68,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-003.txt",
      "chars": 86,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-004.txt",
      "chars": 86,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-005.txt",
      "chars": 132,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-006.txt",
      "chars": 95,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-007.txt",
      "chars": 90,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-008.txt",
      "chars": 196,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-009.txt",
      "chars": 327,
      "language": "text"
    },
    {
      "file": "attachments/3590bfe4d7b4/code/body-010.txt",
      "chars": 201,
      "language": "text"
    }
  ],
  "images": [
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p6sijgqlmb1um65tw1v.png",
      "bytes": 68424,
      "reused": true,
      "local_path": "attachments/3590bfe4d7b4/images/002.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p6sijgqlmb1um65tw1v.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12zoawijn8e79536ulow.png",
      "bytes": 58546,
      "reused": true,
      "local_path": "attachments/3590bfe4d7b4/images/003.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12zoawijn8e79536ulow.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd8gmq3asfv7sd48vk7i.png",
      "bytes": 52700,
      "reused": true,
      "local_path": "attachments/3590bfe4d7b4/images/004.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd8gmq3asfv7sd48vk7i.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0463o53wwnkhiceye3ht.png",
      "bytes": 53528,
      "reused": true,
      "local_path": "attachments/3590bfe4d7b4/images/005.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0463o53wwnkhiceye3ht.png",
      "alt": " ",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floh6prfy1tckb2l8ko5z.png",
      "bytes": 53146,
      "reused": true,
      "local_path": "attachments/3590bfe4d7b4/images/006.png",
      "src": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floh6prfy1tckb2l8ko5z.png",
      "alt": " ",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [
    {
      "url": "https://www.youtube.com/watch?v=tXmQofWy3P0",
      "status": "ok",
      "local_path": "attachments/3590bfe4d7b4/videos/tXmQofWy3P0.mp4",
      "bytes": 3003588,
      "valid": true,
      "height": 720,
      "width": 1108,
      "duration": "82.241000"
    }
  ],
  "links": [
    {
      "href": "https://dev.to/challenges/github-2026-01-21",
      "label": "GitHub Copilot CLI Challenge",
      "type": "a"
    },
    {
      "href": "https://youtu.be/tXmQofWy3P0?si=X1xxPl8yD-OTNM1M",
      "label": "▶️ Watch SwiftCut in Action",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p6sijgqlmb1um65tw1v.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12zoawijn8e79536ulow.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcd8gmq3asfv7sd48vk7i.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0463o53wwnkhiceye3ht.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Floh6prfy1tckb2l8ko5z.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://github.com/NishikantaRay/swiftcut",
      "label": "github.com/NishikantaRay/swiftcut",
      "type": "a"
    },
    {
      "href": "https://youtu.be/tXmQofWy3P0",
      "label": "youtube.com/watch?v=tXmQofWy3P0",
      "type": "a"
    },
    {
      "href": "https://tauri.app/",
      "label": "Tauri",
      "type": "a"
    },
    {
      "href": "https://ffmpeg.org/",
      "label": "FFmpeg",
      "type": "a"
    },
    {
      "href": "https://githubnext.com/projects/copilot-cli",
      "label": "GitHub Copilot CLI",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:49:52Z",
  "source_url": "https://dev.to/nishikantaray/swiftcut-ai-powered-video-silence-remover-built-with-github-copilot-cli-3dj7",
  "papers": [],
  "actual_video_files": [
    {
      "local_path": "attachments/3590bfe4d7b4/videos/tXmQofWy3P0.mp4",
      "bytes": 3003588,
      "valid": true,
      "height": 720,
      "width": 1108,
      "duration": "82.241000",
      "status": "ok"
    }
  ],
  "body_chars": 6533,
  "expected_body_images": 5,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/3590bfe4d7b4/pages/source.html",
  "local_html": "attachments/3590bfe4d7b4/pages/article.html",
  "body_base_path": "attachments/3590bfe4d7b4/pages/",
  "body_markdown_path": "attachments/3590bfe4d7b4/pages/article.md"
}