AI Clipping

AI-powered highlight extraction that identifies the most engaging moments and generates viral-ready clips. Ideal for social media content creation, highlight...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
1 · 19 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (AI clipping/highlights) align with the files and the single required credential (WAYIN_API_KEY) and python3. Minor mismatch: polling_results.py can invoke the 'openclaw' CLI to emit system events for progress updates, but the skill metadata only declares python3 as a required binary; 'openclaw' is optional (used only when event_interval>0) and failures are handled.
Instruction Scope
SKILL.md instructs the agent to read WAYIN_API_KEY, upload local files (or download unsupported URLs first), submit tasks, and poll results. That scope is appropriate for a video-clipping integration. Notable points: the skill will search parent directories for a workspace root (looks for AGENTS.md) and will write JSON result files into a workspace api_results directory; the instructions also encourage running the polling work in a background subagent and mandate reporting script output. These behaviors are consistent with the stated purpose but do grant the skill filesystem read/write and the ability to trigger external downloads/uploads of video content.
Install Mechanism
No install spec — instruction-only with included Python scripts that use only the standard library. No arbitrary downloads or external package installs are requested.
Credentials
Only WAYIN_API_KEY is requested as an environment variable and it's clearly the API credential used to call the WayinVideo endpoints. No unrelated secrets or broad environment access are requested.
Persistence & Privilege
always:false and the skill does not attempt to modify other skills or global agent config. It does write task metadata and results into a workspace directory (api_results) and will attempt to find a workspace root by walking parent directories — this is normal for saving job state but worth noting.
Assessment
This skill appears coherent: it legitimately needs WAYIN_API_KEY and python3 to call the WayinVideo API and upload/poll video clipping jobs. Before installing, consider: (1) Do you trust wayin.ai for the videos you will upload? Videos and metadata are sent to https://wayinvideo-api.wayin.ai. (2) The scripts will write JSON files under your workspace (api_results) and search upward for a workspace root (looks for AGENTS.md) — if you have sensitive files nearby, be aware of file I/O. (3) The polling script can call the local 'openclaw' CLI to post progress events if enabled; this executable is not declared as a required binary, so enable event posting only if you trust and have the CLI available. (4) Provide a scoped API key with minimal permissions where possible and avoid using this skill with highly sensitive or private video content unless you trust the service. If you want to be extra cautious, review the WayinVideo API docs and test with non-sensitive sample videos first.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.2
Download zip
latestvk97b6w4b8a5n7b4a6eem16wja9837zpr

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

🎥 Clawdis
Binspython3
EnvWAYIN_API_KEY
Primary envWAYIN_API_KEY

SKILL.md

AI Clipping & Highlights

This skill automatically extracts the most engaging parts of a video based on the WayinVideo API.

Execution Workflow

Step 0: Check API Key

Check if the WAYIN_API_KEY is available in the environment or user context. If it is missing, ask the user to provide it or create one at https://wayin.ai/wayinvideo/api-dashboard.

Step 1: Identify Video Source

Determine if the input is a web URL (e.g., YouTube link) or a local file path.

[!IMPORTANT] The WayinVideo API supports the following platforms for direct URL processing: YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Instagram, Zoom, Rumble, Google Drive. If the platform is NOT supported, you must treat it as a local file (download it first if possible, then upload).

Step 2: Upload (Local Files or Unsupported URLs Only)

If the input is a local file or from an unsupported platform, you MUST upload it first to get an identity token: python3 <ABS_PATH_TO_SKILL>/scripts/upload_video.py --file-path <file_path> (If the input is a web URL from a supported platform, skip this step.)

Step 3: Extract Clips

Submit the video for clipping using the URL or the identity (from Step 2): python3 <ABS_PATH_TO_SKILL>/scripts/submit_task.py --url "<url_or_identity>" [options]

This script will output the Project ID and the path to an initial result JSON file in your workspace. Save both values for polling the results later.

Options:

  • --target <lang>: (Optional) Target language for output content. Auto-detected if omitted. If specified, you MUST read assets/supported_languages.md first to find the correct language code.
  • --duration <duration>: (Optional) Expected duration range for each output clip. Allowed values: DURATION_0_30 (0-30s), DURATION_0_90 (0-90s), DURATION_30_60 (30-60s), DURATION_60_90 (60-90s), DURATION_90_180 (90-180s), DURATION_180_300 (180-300s). Defaults to DURATION_0_90. If the user specifies a platform, you MUST read assets/platform_duration.md first to determine the correct mapping.
  • --name <string>: (Optional) A custom name for this task.
  • --export: (Optional) Enable rendering of clips (returns export links).
  • --top-k <int>: (Optional) The best K clips to export. Defaults to 10. Pass -1 to export all extracted clips.
  • --ratio <ratio>: (Optional) Aspect ratio: RATIO_16_9, RATIO_1_1, RATIO_4_5, RATIO_9_16. Defaults to RATIO_9_16. AI reframing is automatically enabled. If the user specifies a platform, you MUST read assets/platform_ratio.md first to determine the correct aspect ratio. (Used with --export)
  • --resolution <res>: (Optional) Output resolution: SD_480, HD_720, FHD_1080. Defaults to HD_720. (Used with --export)
  • --caption-display <mode>: (Optional) Caption mode: none, both, original, translation. Defaults to original (or translation if --target is provided). Pass none to explicitly disable captions. (Used with --export)
  • --cc-style-tpl <id>: (Optional) Caption style template ID. Defaults to temp-static-2 if --caption-display is both, otherwise temp-0. See assets/caption_style.md for details. (Used with --export and --caption-display)
  • --save-dir <path>: (Optional) The directory where the initial result JSON file will be saved. Defaults to api_results in your workspace.

[!TIP]

  • Use the --export flag by default. This ensures you receive downloadable links for the clips immediately. While rendering adds extra processing time, it avoids the need to re-run the task later to get the video files. Skip this flag only if the user specifically requests the raw analysis results as quickly as possible without video rendering.
  • To include subtitles in the dedicated language in the output video, use: --export --caption-display translation --target <lang>.
  • If --caption-display is set to both, you MUST use a template ID starting with temp-static-.
  • If the user specifies the lower or upper bound of clip duration, choose an appropriate value for --duration that does not violate the constraint.

Step 4: Wait for Results & Monitoring

Immediately after Step 3, start the polling script to get the final results: python3 <ABS_PATH_TO_SKILL>/scripts/polling_results.py --project-id <project_id> --save-file <save_file_path> [--event-interval 300]

[!TIP]

  • This script involves API polling and may take several minutes. Always use a subagent to run this task whenever possible. Once the sub-agent is started, MUST inform the user that the task is processing in the background, results will be provided immediately once available, and you are free to help the user with other tasks in the meantime.
  • If your agent framework is OpenClaw (which offers openclaw CLI for sending systemEvent), it's recommended to add --event-interval 300 to enable continuous progress updates via system events (default is 0/disabled).

Subagent Reference Prompt (Main agent provides the specific steps): "Set WAYIN_API_KEY=<your_key> in the environment, then run python3 <ABS_PATH_TO_SKILL>/scripts/polling_results.py --project-id <id> --save-file <path>. Whether the polling script succeeds or fails, you MUST report the script's output. Exit immediately after reporting."

The main agent must explicitly include the Project ID and file path from Step 3 in the command given to the subagent. The main agent will read the saved JSON file to process and present the results.

If --event-interval is set and this script runs in an OpenClaw subagent, it triggers a systemEvent periodically to keep you updated:

  • Receive Reminder: When you receive a reminder, check the subagent's status.
  • Status Check:
    • If the subagent is still active, notify the user that processing is ongoing (e.g., "Processing is still in progress; as the video is quite long, it may take a bit more time").
    • If the subagent is no longer active (crashed or stopped), notify the user and offer to retry (start the polling again or resubmit the task).

Step 5: Report Results

Once the script completes and outputs the SUCCESS: Raw API result updated at <path>, read that file and present the viral clips and highlights to the user.

[!NOTE]

  • The saved JSON file can be quite large. Before reading, check the line numbers or file size. If the file is large, process the file in chunks. Do not attempt to read a very large file into the session context at once.
  • When using --export, the export_link returned by the API is valid for 24 hours.
  • When presenting export_link or other URLs to the user, NEVER truncate, shorten, or summarize the links. Provide the full, original URL to ensure the user can access the content.
  • To download the video, use: curl -L -o <filename> "<export_link>"
  • The entire project/results expire after 3 days. After this period, the task must be re-run.
  • If it has been more than 24 hours but less than 3 days, refresh the export_link by running: curl -s -H "Authorization: Bearer $WAYIN_API_KEY" -H "x-wayinvideo-api-version: v2" "https://wayinvideo-api.wayin.ai/api/v2/clips/results/<project_id>". Then parse the JSON to get the new export_link.

Files

9 total
Select a file
Select a file to preview.

Comments

Loading comments…