スキル media-downloader
📦

media-downloader

コンテンツリビジョン r1 高リスク ⚙️ 外部コマンド🌐 ネットワークアクセス📁 ファイルシステムへのアクセス🔑 環境変数

メディアアセットのダウンロードとトリミング

メディアソース全体から利用可能な画像やクリップを見つけるには、時間と手作業でのクリーンアップが必要です。このスキルは、承認済みプロバイダーを検索し、アセットをダウンロードし、動画をトリミングする作業を1つのワークフローで行います。

対応: Claude Codex Code(CC)
⚠️ 38 不十分

自分のエージェントでインストール

このリクエストをエージェントにコピーしてください。正規の Skill ページとマニフェストが含まれています。

エージェントリクエスト
Review the Skillstore skill "media-downloader" from https://skillstore.io/skills/yizhiyanhua-ai-media-downloader.md and its manifest at https://skillstore.io/api/skills/yizhiyanhua-ai-media-downloader/manifest. Verify the artifact. Stop and obtain explicit user consent before installing or changing files.

エージェントは引き続き計画を提示し、セキュリティポリシーで必要な確認を求める必要があります。

エージェントが読めるリソース

AI エージェント、クローラー、スクリプトがページ全体ではなく整理されたコンテキストを必要とする場合は、これらのリンクを使ってください。

テストする

「media-downloader」を使用しています。 猫の写真を5枚ダウンロードしてください。

期待される結果:

このスキルは、設定済みの画像プロバイダーを検索し、一致する写真をダウンロードして、保存先フォルダーのパスを報告します。

「media-downloader」を使用しています。 30秒の夜の都市動画をダウンロードしてください。

期待される結果:

このスキルは、ストック動画の結果を見つけ、一致するクリップをダウンロードし、必要に応じてトリミングして、最終ファイルの場所を一覧表示します。

「media-downloader」を使用しています。 メディアダウンローダーのステータスを確認してください。

期待される結果:

このスキルは、API keys、requests、yt-dlp、ffmpeg が利用可能かどうかを報告します。

セキュリティ監査

高リスク

The skill performs the advertised media search, download, and trimming workflow, but it uses external services, yt-dlp, ffmpeg, environment API keys, and local file writes. Several static alerts are documentation or placeholder false positives, while user-controlled filenames, unbounded downloads, and broad video download support remain real risks. No prompt injection attempt was found in the reviewed files.

4
スキャンされたファイル
1,382
解析済み行数
38
レビュー項目
0
誤検知を無視

確認済みのセキュリティ上の懸念 (3)

高
Unsanitized Query Text Used In Filenames
Image and video filenames are built from the user search query without removing path separators. A crafted query could write downloaded content outside the intended output folder.
The filename is derived directly from args.query and joined with output_dir before writing downloaded bytes. The reviewed code does not normalize or constrain the final path.
中
Unbounded Streaming Downloads To Disk
The download loops stream response bodies to disk without checking Content-Length, content type, or a maximum byte limit. Large responses can exhaust disk space.
Both image and video download functions write chunks until the server finishes. I found no size cap or MIME validation in the reviewed code paths.
中
Unrestricted Third-Party Video Download Workflow
The skill explicitly supports downloading and extracting audio from YouTube URLs. This can enable copyright or terms-of-service abuse if used without rights checks.
The documentation advertises YouTube download and audio-only workflows, and the CLI exposes matching options. The code does not include license or authorization checks.
機能レビュー項目 (38)

これらは、このスキルに期待される可能性のある実際のローカル機能であるため、レビューが必要ですが、確認済みの悪意ある動作としてはカウントされません。

高
Python subprocess.run
result = subprocess.run(cmd, capture_output=True, text=True, timeout=30)
yt-dlp is invoked with a user-provided search query. There is no shell expansion, but an external downloader processes network content based on user input.
高
Python subprocess.run
result = subprocess.run(cmd, capture_output=True, text=True, timeout=300)
yt-dlp is invoked with a user-provided URL and writes downloaded media locally. The command is argument-vector based, but it still gives an external downloader broad network and file effects.
高
Python subprocess.run
result = subprocess.run(cmd, capture_output=True, text=True)
ffprobe is invoked on a user-selected media path. There is no shell injection, but external media parsers process untrusted or downloaded files.
高
Python subprocess.run
result = subprocess.run(cmd, capture_output=True, timeout=120)
ffmpeg is invoked on user-selected input and output paths. There is no shell invocation, but transcoding untrusted media through an external binary is a real execution risk.
高
Generic API/secret keys
PEXELS_API_KEY = os.environ.get('PEXELS_API_KEY', '')
The source references API-key environment variables rather than hardcoded secrets. It is still confirmed sensitive secret handling because those values are used for outbound API calls.
高
Generic API/secret keys
PIXABAY_API_KEY = os.environ.get('PIXABAY_API_KEY', '')
The source references API-key environment variables rather than hardcoded secrets. It is still confirmed sensitive secret handling because those values are used for outbound API calls.
高
Generic API/secret keys
headers = {"Authorization": PEXELS_API_KEY}
The code sends the Pexels API key in an Authorization header to the Pexels API. This is expected, but it is real use of an environment credential in a network request.
高
Generic API/secret keys
url = f"https://pixabay.com/api/?key={PIXABAY_API_KEY}&q={quote_plus(query)}&per_page={count}&image_
The code places the Pixabay API key into a URL query parameter. Query-string secrets are more likely to leak through logs, proxies, or diagnostics.
高
Generic API/secret keys
headers = {"Authorization": PEXELS_API_KEY}
The code sends the Pexels API key in an Authorization header to the Pexels API. This is expected, but it is real use of an environment credential in a network request.
高
Generic API/secret keys
url = f"https://pixabay.com/api/videos/?key={PIXABAY_API_KEY}&q={quote_plus(query)}&per_page={count}
The code places the Pixabay API key into a URL query parameter. Query-string secrets are more likely to leak through logs, proxies, or diagnostics.
高
Hidden file in home directory
~/.claude/skills/media-downloader/downloads/
The documented default stores downloaded media under a hidden Claude skills directory. Users may not notice files accumulating in this location.
高
Hidden file in home directory
~/.claude/skills/media-downloader/downloads/
The documented default stores downloaded media under a hidden Claude skills directory. Users may not notice files accumulating in this location.
高
Hidden file in home directory
**macOS / Linux 用户**,编辑 `~/.zshrc` 或 `~/.bashrc`:
The documentation tells users to edit or source hidden shell startup files for API key setup. Persisting secrets there exposes them to future shells and tools.
高
Hidden file in home directory
保存后运行 `source ~/.zshrc` 使配置生效。
The documentation tells users to edit or source hidden shell startup files for API key setup. Persisting secrets there exposes them to future shells and tools.
高
Hidden file in home directory
~/.claude/skills/media-downloader/downloads/
The skill documents a default download directory under ~/.claude. Hidden storage for downloaded media can reduce user visibility and cleanup.
中
Hardcoded URL
url = f"https://pixabay.com/api/?key={PIXABAY_API_KEY}&q={quote_plus(query)}&per_page={count}&image_
The request targets Pixabay and includes the API key in the URL query string. Query-string credentials can be recorded in logs and network traces.
中
Hardcoded URL
url = f"https://pixabay.com/api/videos/?key={PIXABAY_API_KEY}&q={quote_plus(query)}&per_page={count}
The request targets Pixabay and includes the API key in the URL query string. Query-string credentials can be recorded in logs and network traces.
中
Python file write/append
with open(filepath, 'wb') as f:
The code writes bytes fetched from external media URLs to disk. The destination is influenced by user options and generated filenames, so this is a real filesystem risk.
中
Python file write/append
with open(filepath, 'wb') as f:
The code writes bytes fetched from external media URLs to disk. The destination is influenced by user options and generated filenames, so this is a real filesystem risk.
中
Python shutil operations
shutil.copy(input_path, output_path)
The code copies a media file to a caller-provided output path during trimming. Without containment checks, this can write to unexpected locations.
中
Python os file operations
os.makedirs(output_dir, exist_ok=True)
The code creates the selected output directory before downloading media. Because the output path can come from CLI arguments, it can create arbitrary user-writable directories.
中
Python os file operations
os.makedirs(output_dir, exist_ok=True)
The code creates the selected output directory before downloading media. Because the output path can come from CLI arguments, it can create arbitrary user-writable directories.
中
Python os file operations
os.makedirs(output_dir, exist_ok=True)
The code creates the selected output directory before downloading media. Because the output path can come from CLI arguments, it can create arbitrary user-writable directories.
中
Python os file operations
os.remove(path)
The trim flow deletes or renames files after processing. With user-controlled output paths and generated filenames, unexpected files could be affected.
中
Python os file operations
os.rename(trimmed_path, path)
The trim flow deletes or renames files after processing. With user-controlled output paths and generated filenames, unexpected files could be affected.
中
Python os file operations
os.remove(path)
The trim flow deletes or renames files after processing. With user-controlled output paths and generated filenames, unexpected files could be affected.
中
Python os file operations
os.rename(trimmed_path, path)
The trim flow deletes or renames files after processing. With user-controlled output paths and generated filenames, unexpected files could be affected.
中
Hidden file access
~/.claude/skills/media-downloader/downloads/
The documented default stores downloaded media under a hidden Claude skills directory. Users may not notice files accumulating in this location.
中
Hidden file access
~/.claude/skills/media-downloader/downloads/
The documented default stores downloaded media under a hidden Claude skills directory. Users may not notice files accumulating in this location.
中
Hidden file access
**macOS / Linux 用户**,编辑 `~/.zshrc` 或 `~/.bashrc`:
The documentation tells users to edit or source hidden shell startup files for API key setup. Persisting secrets there exposes them to future shells and tools.
中
Hidden file access
保存后运行 `source ~/.zshrc` 使配置生效。
The documentation tells users to edit or source hidden shell startup files for API key setup. Persisting secrets there exposes them to future shells and tools.
中
Hidden file access
~/.claude/skills/media-downloader/downloads/
The skill documents a default download directory under ~/.claude. Hidden storage for downloaded media can reduce user visibility and cleanup.
低
Hardcoded URL
url = f"https://api.pexels.com/v1/search?query={quote_plus(query)}&per_page={count}"
The skill sends user search terms to a third-party media API. This is declared functionality, but it is real external network egress.
低
Hardcoded URL
url = f"https://api.unsplash.com/search/photos?query={quote_plus(query)}&per_page={count}"
The skill sends user search terms to a third-party media API. This is declared functionality, but it is real external network egress.
低
Hardcoded URL
url = f"https://api.pexels.com/videos/search?query={quote_plus(query)}&per_page={count}"
The skill sends user search terms to a third-party media API. This is declared functionality, but it is real external network egress.
低
Python environment access
PEXELS_API_KEY = os.environ.get('PEXELS_API_KEY', '')
The code reads API credentials from environment variables. This is intended configuration, but environment secret access is still sensitive.
低
Python environment access
UNSPLASH_ACCESS_KEY = os.environ.get('UNSPLASH_ACCESS_KEY', '')
The code reads API credentials from environment variables. This is intended configuration, but environment secret access is still sensitive.
低
Python environment access
PIXABAY_API_KEY = os.environ.get('PIXABAY_API_KEY', '')
The code reads API credentials from environment variables. This is intended configuration, but environment secret access is still sensitive.

リスク要因

⚙️ 外部コマンド (29)
🌐 ネットワークアクセス (16)
📁 ファイルシステムへのアクセス (26)
🔑 環境変数 (24)
監査者: codex 監査履歴を表示 →
このレポートを共有・引用

バージョン付き評価レポート、中立的なバッジ、埋め込みカード、引用を共有できます。Skillstore は証拠を報告しますが、この Skill が安全かどうかは判断しません。

バージョン別レポートを開く
セキュリティ評価

レポートリンクをコピー

https://skillstore.io/skills/yizhiyanhua-ai-media-downloader/audits/5?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_report

Markdownバッジ

[![Skillstore security assessment](https://skillstore.io/badges/skills/yizhiyanhua-ai-media-downloader/security.svg)](https://skillstore.io/skills/yizhiyanhua-ai-media-downloader?utm_source=security_passport_badge)

HTMLバッジ

<a href="https://skillstore.io/skills/yizhiyanhua-ai-media-downloader?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/yizhiyanhua-ai-media-downloader/security.svg" alt="Skillstore security assessment" loading="lazy"></a>

埋め込みカード

<iframe src="https://skillstore.io/embed/skills/yizhiyanhua-ai-media-downloader.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>
学術引用 (APA · BibTeX · CFF)

APA形式の引用

yizhiyanhua-ai. (2026). media-downloader security audit report (audit version 5) [Author version unspecified]. Skillstore. https://skillstore.io/skills/yizhiyanhua-ai-media-downloader/audits/5

BibTeX形式の引用

@techreport{yizhiyanhua-ai-yizhiyanhua-ai-media-downloader-2026, author = {yizhiyanhua-ai}, title = {media-downloader security audit report (audit version 5)}, institution = {Skillstore}, year = {2026}, number = {5}, url = {https://skillstore.io/skills/yizhiyanhua-ai-media-downloader/audits/5}, note = {Author version unspecified} }

CITATION.cff

cff-version: 1.2.0 message: "If you use this Skill, cite its author and this versioned security audit report." title: "media-downloader security audit report (audit version 5)" version: "unspecified" type: report authors: - name: "yizhiyanhua-ai" date-released: "2026-07-08" url: "https://skillstore.io/skills/yizhiyanhua-ai-media-downloader/audits/5" identifiers: - type: other value: "skillstore:yizhiyanhua-ai-media-downloader:audit:5" description: "Skillstore immutable audit report identifier"

Skillstore スコア

このスコアの理由 証拠の信頼度: 中
55
アーキテクチャ
85
保守性
85
コンテンツ
72
コミュニティ
83
仕様準拠

作成できるもの

コンセプト画像の収集

デザインボードやクリエイティブブリーフ用の参考画像を検索してダウンロードします。

短い背景クリップの準備

ストッククリップをダウンロードし、プレゼンテーションやソーシャル投稿用に固定の長さへトリミングします。

レビュー用セグメントの抽出

非公開レビューや編集メモ用に、YouTube 動画から特定のセグメントをダウンロードします。

これらのプロンプトを試す

基本的な画像をダウンロード
風景画像を5枚ダウンロードし、デフォルトのメディアダウンローダーフォルダーに保存してください。
短いストック動画を検索
20秒未満の海の波の動画クリップを3件見つけて、レビュー用にダウンロードしてください。
YouTube セグメントをトリミング
この YouTube 動画の90秒から120秒までをダウンロードし、そのクリップだけを保存してください。
メディアパックを作成
コーヒーショップの写真8枚と15秒未満の短い環境音クリップ2本を含む、プロジェクト用メディアパックを作成してください。

ベストプラクティス

  • API keys は信頼できるローカル環境変数にのみ設定してください。
  • 各プロジェクトには専用の出力フォルダーを使用してください。
  • ダウンロードしたメディアを公開する前に、プロバイダーのライセンスを確認してください。

回避

  • 信頼できない URLs からメディアをダウンロードしないでください。
  • 検索クエリにパス区切り文字やシェル構文を使用しないでください。
  • すべての YouTube またはストック結果が自分の用途にライセンスされていると決めつけないでください。

よくある質問

このスキルには API keys が必要ですか?
ストック画像および動画検索には必要です。YouTube のダウンロードは yt-dlp を使用し、それらの API keys は不要です。
ダウンロードはどこに保存されますか?
デフォルトでは、ファイルはスキルのダウンロードフォルダーに保存されます。ユーザーは別の出力ディレクトリを選択できます。
動画をトリミングできますか?
はい。ffmpeg を使用して、開始時刻、終了時刻、または目標の長さでトリミングします。
ダウンロードしたアセットを公開しても安全ですか?
公開前に、各アセットのソースライセンスと使用権を確認する必要があります。
なぜこのスキルは中リスクとされているのですか?
ネットワークリクエスト、API keys、ローカルファイル書き込み、外部メディアツールを使用します。これらは想定される操作ですが、慎重に扱うべき操作です。
私の API keys を不明なサーバーに送信しますか?
不明な外部送信の証拠は見つかっていません。キーは、明示されている Pexels、Pixabay、Unsplash のリクエストに使用されます。

開発者情報

作成者

yizhiyanhua-ai

ライセンス

MIT

Skillstore リビジョン

r1

バージョンに関する注意

作者はバージョンを宣言していません。

参照

64ca8af0f54a325752f08bd54e52151061ea659a

メンテナンスの新しさ

2026/7/20

利用状況

55 ダウンロード · 322 閲覧

ファイル構成

yizhiyanhua-ai のその他のスキル

すべて表示
すべて表示