iopho-searching-videos

Search videos across YouTube, Bilibili, and other platforms without downloading

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "iopho-searching-videos" with this command: npx skills add iopho-team/skills/iopho-team-skills-iopho-searching-videos

iopho-searching-videos — Cross-Platform Video Search

Search for videos across multiple platforms and return structured metadata — without downloading anything.

Prerequisites

Check what's available:

!which yt-dlp 2>/dev/null && echo "yt-dlp: ✓" || echo "yt-dlp: ✗ — install via: pip install yt-dlp or brew install yt-dlp"

!python3 -c "from duckduckgo_search import DDGS; print('duckduckgo-search: ✓')" 2>/dev/null || echo "duckduckgo-search: ✗ (optional) — install via: pip install duckduckgo-search"

Minimum requirement: yt-dlp (covers 19+ platforms with native search). Optional: duckduckgo-search for cross-platform web video search aggregation.

Platform Search Matrix

PlatformSearch PrefixExample
YouTubeytsearchytsearch10:SaaS demo
YouTube (by date)ytsearchdateytsearchdate5:product video 2026
BilibiliBiliBiliSearchBiliBiliSearch:产品介绍
SoundCloudscsearchscsearch:ambient music
Niconiconicosearchnicosearch:ボカロ
All video (web)DuckDuckGoCross-platform aggregation

Quick Reference

Basic search (YouTube, top 5):

yt-dlp --flat-playlist --dump-json "ytsearch5:$QUERY" 2>/dev/null | python3 -c "
import sys, json
for line in sys.stdin:
    v = json.loads(line)
    dur = f\"{v.get('duration',0)//60}:{v.get('duration',0)%60:02d}\" if v.get('duration') else '?'
    print(f\"  {v.get('title','?')}\")
    print(f\"    Duration: {dur} | Views: {v.get('view_count','?')} | URL: https://youtube.com/watch?v={v['id']}\")
    print()
"

Bilibili search:

yt-dlp --flat-playlist --dump-json "BiliBiliSearch:$QUERY" 2>/dev/null | python3 -c "
import sys, json
for line in sys.stdin:
    v = json.loads(line)
    dur = f\"{v.get('duration',0)//60}:{v.get('duration',0)%60:02d}\" if v.get('duration') else '?'
    print(f\"  {v.get('title','?')}\")
    print(f\"    Duration: {dur} | URL: {v.get('url', v.get('webpage_url', '?'))}\")
    print()
"

Filter by duration (e.g., under 30 seconds):

yt-dlp --flat-playlist --dump-json --match-filter "duration<30" "ytsearch20:$QUERY"

Full JSON metadata (for programmatic use):

yt-dlp --flat-playlist --dump-json "ytsearch5:$QUERY" 2>/dev/null

Web-wide video search (via DuckDuckGo, no API key needed):

python3 -c "
from duckduckgo_search import DDGS
results = DDGS().videos('$QUERY', max_results=5)
for v in results:
    print(f\"  {v.get('title','?')}\")
    print(f\"    Duration: {v.get('duration','?')} | Source: {v.get('publisher','?')} | URL: {v.get('content', '?')}\")
    print()
"

Execute

Parse the user's arguments and run the appropriate search:

# Parse arguments from: $ARGUMENTS
# Expected format: <query> [--platform youtube|bilibili|all] [--limit N] [--json]
#
# Default: --platform youtube --limit 5
#
# The agent should:
# 1. Extract the query, platform, limit, and json flag from $ARGUMENTS
# 2. Choose the right search prefix based on platform
# 3. Run yt-dlp with --flat-playlist --dump-json
# 4. Format output as a readable table (or raw JSON if --json)
# 5. If --platform all, also try DuckDuckGo if available

Advanced Usage

Search with date sorting (YouTube only):

yt-dlp --flat-playlist --dump-json "ytsearchdate10:query"

Search and preview metadata of a specific video:

yt-dlp --dump-json "https://youtube.com/watch?v=VIDEO_ID" 2>/dev/null | python3 -c "
import sys, json
v = json.loads(sys.stdin.read())
print(f\"Title: {v['title']}\")
print(f\"Duration: {v['duration']}s | Views: {v.get('view_count','?')}\")
print(f\"Channel: {v.get('channel','?')} | Upload: {v.get('upload_date','?')}\")
print(f\"Description: {v.get('description','')[:200]}...\")
print(f\"Tags: {', '.join(v.get('tags',[])) if v.get('tags') else 'none'}\")
"

Combine with iopho-getting-videos: After finding videos, use /iopho-getting-videos <url> to download.

Supported yt-dlp Search Extractors

Full list of platforms with built-in search support: YouTube, SoundCloud, Bilibili, Niconico, Dailymotion, Google Video, Yahoo, GameJolt, Mail.ru, Rokfin, and more.

Run yt-dlp --list-extractors | grep -i search to see all available search extractors.

Tips

  • Use --match-filter "duration<60" to find short videos (< 1 minute)
  • Use --match-filter "view_count>10000" to find popular videos
  • Combine filters: --match-filter "duration<30 & view_count>1000"
  • For B站, search queries work best in Chinese
  • DuckDuckGo search covers platforms that yt-dlp doesn't have native search for (Vimeo, TikTok, Twitter/X, etc.)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

iopho-analyzing-videos

No summary provided by upstream source.

Repository SourceNeeds Review
General

OpenClaw Skill Growth

Make OpenClaw Skills observable, diagnosable, and safely improvable over time. Use this when the user wants to maintain many SKILL.md files, inspect repeated...

Registry SourceRecently Updated
171Profile unavailable
General

Find Skills for ClawHub

Search for and discover OpenClaw skills from ClawHub (the official skill registry). Activate when user asks about finding skills, installing skills, or wants...

Registry SourceRecently Updated
2871Profile unavailable
General

Skill Listing Polisher

Improve a skill's public listing before publish. Use when tightening title, description, tags, changelog, and scan-friendly packaging so the listing looks cl...

Registry SourceRecently Updated
1130Profile unavailable