← 返回 Skills 市场
alouhaou

face swap

作者 alouhaou · GitHub ↗ · v1.0.5 · MIT-0
cross-platform ⚠ suspicious
485
总下载
3
收藏
0
当前安装
6
版本数
在 OpenClaw 中安装
/install face-swap
功能描述
AI Face Swap - Swap face in video, deepfake face replacement, face swap for portraits. Use from command line. Supports local video files, YouTube, Bilibili U...
使用说明 (SKILL.md)

faceswap - AI Face Swap Service

You are a CLI assistant for AI face swap. Users can use you to call verging.ai's AI face swap functionality.

User Input Format

Users will provide commands like:

/faceswap --video \x3Cvideo file or URL> --face \x3Cface image or URL> [options]

Options

Option Short Description Default
--video -v Target video file path or URL Required
--face -f Face image file path or URL Required
--start -s Video start time in seconds 0
--end -e Video end time in seconds Video duration
--hd -h HD mode (3 credits/sec vs 1 credit/sec) false
--api-key -k Your API Key VERGING_API_KEY env
--output -o Result save path Current directory
--download -d Auto download result to local false

Environment Variables

Variable Description
VERGING_API_KEY Your API Key
VERGING_API_URL API base URL (default: https://verging.ai/api/v1)

API Endpoints

Endpoint Method Format Purpose
/api/v1/auth/me GET - Get user info (including credits)
/api/v1/upload-video POST Form Data Get R2 presigned upload URL
/api/v1/faceswap/create-job POST Form Data Create face swap job
/api/v1/faceswap/jobs GET - Query job status

Authentication

All API requests require authentication via the Authorization header:

Authorization: ApiKey \x3Cyour_api_key>

⚠️ Important: There is a space between "ApiKey" and your key!

Example:

# ✅ Correct
Authorization: ApiKey vrg_sk_123456...

# ❌ Wrong (missing space)
Authorization: ApiKeyvrg_sk_123456...

You can get your API key from https://verging.ai (Login → Click avatar → API Keys).

Authentication Examples

# Check user info
curl -H "Authorization: ApiKey $VERGING_API_KEY" \
  https://verging.ai/api/v1/auth/me

# Step 1: Get presigned upload URL for video
curl -X POST -H "Authorization: ApiKey $VERGING_API_KEY" \
  -F "video_file_name=video.mp4" \
  -F "job_type=face-swap" \
  https://verging.ai/api/v1/upload-video

# The response contains:
# {
#   "result": {
#     "url": "https://...r2.cloudflarestorage.com/...mp4?X-Amz-...",
#     "public_url": "https://img.panpan8.com/face-swap/2026-03-11/xxx.mp4"
#   }
# }

# Step 2: Upload video file to the presigned URL
curl -X PUT -T /path/to/video.mp4 \
  "https://...presigned-url-from-step-1..."

# Step 3: Get presigned upload URL for face image (same method)
curl -X POST -H "Authorization: ApiKey $VERGING_API_KEY" \
  -F "video_file_name=face.jpg" \
  -F "job_type=face-swap" \
  https://verging.ai/api/v1/upload-video

# Step 4: Upload face image to presigned URL
curl -X PUT -T /path/to/face.jpg \
  "https://...presigned-url..."

# Step 5: Create face swap job
# Use the public_url from Step 2 and Step 4
curl -X POST -H "Authorization: ApiKey $VERGING_API_KEY" \
  -F "swap_image=@/path/to/face.jpg" \
  -F "file_name=face.jpg" \
  -F "target_video_url=https://img.panpan8.com/face-swap/2026-03-11/xxx.mp4" \
  -F "user_video_duration=10" \
  -F "is_hd=false" \
  https://verging.ai/api/v1/faceswap/create-job

# Query job status
curl -H "Authorization: ApiKey $VERGING_API_KEY" \
  "https://verging.ai/api/v1/faceswap/jobs?job_ids=123"

# List all jobs
curl -H "Authorization: ApiKey $VERGING_API_KEY" \
  https://verging.ai/api/v1/faceswap/jobs

Important:

  • Replace $VERGING_API_KEY with your actual API key or set it as an environment variable
  • The Authorization header uses format: ApiKey \x3Ckey> (not Bearer \x3Ckey>)

Dependencies

This skill requires:

  • Remote video download capability (only when user provides a URL like YouTube, Bilibili, etc.):
    • Preferred: install yt-dlp skill first: npx skills add lwmxiaobei/yt-dlp-skill --skill yt-dlp
    • Alternative: npx skills add mapleshaw/yt-dlp-downloader-skill --skill yt-dlp-downloader
    • Alternative: use yt-dlp directly if already available on the system
    • If no download tool is available, prompt the user to download the video locally first
  • ffmpeg/ffprobe: For video trimming (optional, only when --start or --end specified)
  • curl: Usually built-in

Processing Flow

When the user executes the /faceswap command, please follow these steps:

0. Check Dependencies

  • If user provides a remote video URL, check if yt-dlp is available: which yt-dlp
  • For local videos without trimming, no additional tools needed

1. Parse Arguments

  • Parse --video and --face parameters
  • If remote URL, need to download to local
  • Parse time range --start and --end

2. Download Remote Resources

  • If user provides a remote video URL (YouTube, Bilibili, etc.):
    • Try yt-dlp "URL" -o /tmp/verging-faceswap/video.mp4
    • If yt-dlp is not available, suggest installing the yt-dlp skill: npx skills add lwmxiaobei/yt-dlp-skill --skill yt-dlp
    • If installation is not possible, ask the user to download the video locally first
  • For images: use curl to download
  • Temp directory: /tmp/verging-faceswap/

3. Get Video Duration

  • Use ffprobe: ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "video.mp4"

4. Trim Video (if --start or --end specified)

  • If user specifies --start or --end parameters, first trim the video
  • Use ffmpeg to trim specified time range:
    ffmpeg -i input.mp4 -ss \x3Cstart> -to \x3Cend> -c copy output.mp4
    
  • Or re-encode for accurate frames:
    ffmpeg -i input.mp4 -ss \x3Cstart> -to \x3Cend> -c:v libx264 -c:a aac output.mp4
    
  • Use trimmed video as the file to upload

5. Check User Credits

  • Call /api/v1/auth/me to get user info
  • Calculate required credits: Normal mode 1 credit/sec, HD mode 3 credits/sec
  • If insufficient credits, prompt user to recharge

6. Upload Video to R2

  • Call /api/v1/upload-video with Form Data (video_file_name, job_type)
  • Get presigned upload URL from response
  • Upload video file to presigned URL using PUT method
  • Save the public_url from response for next step

7. Upload Face Image to R2

  • Same as step 6, but use the face image file
  • Save the public_url

8. Create Job

  • Call /api/v1/faceswap/create-job with Form Data:
    • swap_image: Face image file (will be re-uploaded to R2)
    • file_name: Original file name
    • target_video_url: The video public URL from step 6
    • user_video_duration: Video duration in seconds
    • is_hd: true/false

8. Poll Job Status

  • Every 5 seconds call /api/v1/faceswap/jobs?job_ids=xxx to query status
  • Status: PENDING → PROCESSING → COMPLETED/FAILED
  • Show progress percentage

9. Return Result

  • After completion, return result_url
  • If user specified --download or --output, use curl to download result

Credit Consumption

Mode Credits/sec
Normal 1 credit/sec
HD 3 credits/sec

Example Conversation

User: /faceswap -v ./input.mp4 -f ./my-face.jpg --start 5 --end 15

You:

  1. Parse arguments
  2. Check if video needs trimming (--start/--end specified)
  3. Get video duration
  4. Check credits sufficient (10 seconds = 10 credits)
  5. Upload video and face image to R2
  6. Create face swap job
  7. Poll for completion
  8. Return result URL

User: /faceswap -v ./input.mp4 -f ./my-face.jpg

You:

  1. Parse arguments - local video, no trimming needed
  2. Get video duration
  3. Call API to get user info
  4. Check credits sufficient
  5. Upload video and face image to R2
  6. Create face swap job
  7. Poll for completion
  8. Return result URL

Notes

  • This skill uses yt-dlp for remote video downloads (YouTube, Bilibili, etc.)
  • For local videos without trimming, no additional tools needed
  • API Key can be passed via --api-key parameter or read from environment variable VERGING_API_KEY
  • If user doesn't provide API Key: Prompt user to get one at https://verging.ai (Login → Click user avatar → API Keys), and guide them to set the environment variable
  • Video duration max 30 seconds
  • Support downloading videos from YouTube, Bilibili, etc. using yt-dlp
  • Show progress during processing
  • If --start or --end is specified, video will be trimmed locally before upload, saving upload time and processing cost

Privacy and Security

API Key

This skill requires a verging.ai API Key. Get it from:

  1. Visit https://verging.ai
  2. Login → Click user avatar (top right) → Select "API Keys"
  3. Create a new API key

Security recommendations:

  • Use a dedicated API key with minimal permissions
  • Never expose your API key in public repositories
  • Set it via environment variable: export VERGING_API_KEY="your_key"

Data Handling

  • Video uploads: Videos are uploaded to verging.ai's R2 storage for processing
  • Temporary files: Local temporary files are stored in /tmp/verging-faceswap/ and cleaned up after processing
  • Result videos: Processed videos are returned via a public URL
  • No data retention: This skill does not store any user data beyond the session

Legal Notice

  • Only process media you have rights to
  • Be aware of local laws regarding deepfake technology
  • Use responsibly and ethically
安全使用建议
This skill appears internally coherent, but consider the following before installing: (1) You will be uploading videos and face images to a third‑party service (verging.ai) — verify you trust them and understand privacy/legal implications of creating deepfakes. (2) The skill suggests installing helper tools via `npx`; installing packages from npm executes remote code — only proceed if you trust the package/source. (3) Confirm the API key (VERGING_API_KEY) you supply is for the expected verging.ai account and has appropriate permissions/quotas. (4) Example responses reference presigned URLs and a public_url host (img.panpan8.com); if that differs from your expectations, verify the endpoint in practice. If you want extra assurance, review network calls while running the skill (or run it with test media and a limited API key) to confirm only the expected endpoints are contacted.
功能分析
Type: OpenClaw Skill Name: face-swap Version: 1.0.5 The faceswap skill provides AI video processing by wrapping the verging.ai API, requiring broad permissions including `external_commands`, `network`, and `filesystem` (openclaw.json). The SKILL.md instructions direct the AI agent to construct and execute shell commands using `ffmpeg`, `ffprobe`, and `yt-dlp` with user-provided URLs and file paths, which introduces a significant risk of shell injection. While the behavior is consistent with the stated purpose and no evidence of intentional malice or data exfiltration was found, the high-risk capabilities and potential for exploitation via the command-line interface justify a suspicious classification.
能力评估
Purpose & Capability
The skill claims to perform face‑swap via verging.ai and only requires an API key plus common media tools (yt-dlp, ffmpeg, ffprobe, curl). Those requirements are appropriate for downloading remote videos, trimming, and uploading to the service.
Instruction Scope
SKILL.md instructs the agent to download remote videos/images, trim with ffmpeg if requested, obtain presigned upload URLs, and upload media to those URLs — all expected for this purpose. One minor note: the README suggests using an `npx skills add ...` command to install a yt-dlp skill; running npx installs/executes code from npm and therefore carries normal supply‑chain risk. The instructions do not read other unrelated files or request unrelated environment variables.
Install Mechanism
This is an instruction‑only skill with no install spec or embedded code to write to disk. That minimizes risk — the skill relies on existing system binaries and standard curl/yt-dlp/ffmpeg usage.
Credentials
Only VERGING_API_KEY is required (VERGING_API_URL optional). That single credential maps directly to the stated third‑party API usage and is proportionate to the functionality.
Persistence & Privilege
The skill does not request permanent/global inclusion (always:false), does not modify other skills or system-wide configs, and does not ask to persist additional credentials beyond the declared API key.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install face-swap
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /face-swap 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.5
- Added metadata file (_meta.json) for improved skill packaging and discovery. - Updated dependencies: now prefers direct use of yt-dlp binary for remote video downloads, with new instructions on alternative skills if yt-dlp is missing. - Clarified and expanded dependency installation guidance for remote download scenarios. - Minor documentation improvements for clearer workflow and usage instructions.
v1.0.4
- Updated skill description for clarity and keyword relevance (face swap, deepfake, portrait support). - No changes to core functionality, APIs, or dependencies. - Improved brief in the description regarding supported input types and main features. - Version bump to 1.0.4.
v1.0.3
face-swap 1.0.3 changelog: - Improved API documentation in SKILL.md, including precise `Authorization` header formatting and usage examples. - Clarified step-by-step workflow for video and face image uploads using presigned URLs. - Updated skill to match latest backend API requirements, specifying correct data formats and methods. - Replaced previous SKILL.md with a more comprehensive and accurate version; removed outdated skill.md.
v1.0.2
v1.0.2 introduces improved configuration and metadata handling. - Added README.md and openclaw.json for clearer documentation and integration. - Removed deprecated files clawhub.json and description.txt. - Updated SKILL.md with openclaw metadata, including dependency and environment requirements. - Enhanced privacy, security, and usage documentation within SKILL.md. - No functional changes to face-swap flow or API usage.
v1.0.1
- Initial metadata/config file (clawhub.json) added for skill registration. - No functional or user-facing changes to the face-swap skill itself.
v1.0.0
faceswap 1.0.0 – Initial release - Provides AI face swap service via CLI using verging.ai API. - Supports local and remote videos/images, including YouTube/Bilibili links. - Handles video trimming, file uploads, auto-download, and real-time progress tracking. - Supports credit management (Normal and HD modes) and API key authentication
元数据
Slug face-swap
版本 1.0.5
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 6
常见问题

face swap 是什么?

AI Face Swap - Swap face in video, deepfake face replacement, face swap for portraits. Use from command line. Supports local video files, YouTube, Bilibili U... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 485 次。

如何安装 face swap?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install face-swap」即可一键安装,无需额外配置。

face swap 是免费的吗?

是的,face swap 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

face swap 支持哪些平台?

face swap 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 face swap?

由 alouhaou(@alouhaou)开发并维护,当前版本 v1.0.5。

💬 留言讨论