# Faceless Video Editor - installer for Windows # Run in PowerShell: irm https://skill.thefalconmotion.com/install.ps1 | iex # Optional: set $env:FM_KEY = "fsk_..." first to skip the prompt. & { $ErrorActionPreference = 'Stop' $Base = 'https://skill.thefalconmotion.com' function Say($t, $c = 'Gray') { Write-Host $t -ForegroundColor $c } Say '' Say ' Faceless Video Editor - The Falcon Motion' 'White' Say '' $Key = $env:FM_KEY if (-not $Key) { $Key = Read-Host ' Paste your access key (fsk_...)' } $Key = "$Key".Trim() if ($Key -notmatch '^fsk_[A-Za-z0-9_-]{20,}$') { Say ' That does not look like an access key. It starts with fsk_' 'Red'; return } Say ' [1/4] Checking your key...' try { $acc = Invoke-RestMethod -Uri "$Base/api/account" -Method Post -ContentType 'application/json' -Body (@{ key = $Key } | ConvertTo-Json) } catch { Say ' Key not found. Copy the whole key and try again.' 'Red'; return } if ($acc.status -ne 'active') { Say " This key is not active ($($acc.status)). Check $Base/account" 'Red'; return } Say " OK - licensed to $($acc.name)" 'Green' Say ' [2/4] Checking the tools on this computer...' $need = [ordered]@{ claude = 'Claude Code https://claude.com/claude-code' node = 'Node.js 20+ https://nodejs.org' ffmpeg = 'ffmpeg winget install Gyan.FFmpeg' python = 'Python 3.11+ https://python.org (tick "Add to PATH")' } $missing = @($need.Keys | Where-Object { -not (Get-Command $_ -ErrorAction SilentlyContinue) }) if ($missing.Count) { Say ' Please install these, open a NEW PowerShell window and run the installer again:' 'Yellow' foreach ($m in $missing) { Say (" - " + $need[$m]) 'Yellow' } return } $nodeMajor = [int]((node -v) -replace '^v(\d+).*', '$1') if ($nodeMajor -lt 20) { Say " Node.js $(node -v) is too old. Install Node 20 or newer." 'Yellow'; return } Say ' OK' 'Green' Say ' [3/4] Connecting Claude Code to the skill...' & claude mcp remove faceless --scope user *> $null & claude mcp add --transport http --scope user faceless "$Base/mcp" --header "Authorization: Bearer $Key" *> $null if ($LASTEXITCODE -ne 0) { Say ' Could not register with Claude Code. Run "claude" once to sign in, then try again.' 'Red'; return } Say ' OK' 'Green' Say ' [4/4] Installing the skill...' $dest = Join-Path $env:USERPROFILE '.claude\skills\faceless-video-editor' New-Item -ItemType Directory -Force $dest | Out-Null Invoke-WebRequest -Uri "$Base/SKILL.md" -OutFile (Join-Path $dest 'SKILL.md') -UseBasicParsing Say ' OK' 'Green' Say '' Say ' All set. Make an empty folder, open a terminal in it, run "claude" and ask, for example:' 'White' Say ' "Make a 60 second vertical Short about the sinking of the Titanic."' Say '' Say " Guide: $Base/docs" 'DarkGray' }