VideodbSAFE
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
Overview
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
fb3fb10d9622OBSERVED · 2026-09-22Install
Commands as the repository documents them. They are shown, not run.
pip install "videodb[capture]" python-dotenv
pip install videodb python-dotenv
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
---
name: videodb
description: ビデオとオーディオの表示、理解、アクション。表示:ローカルファイル、URL、RTSP/ライブストリーム、またはリアルタイムのデスクトップ録画からコンテンツを取得し、リアルタイムコンテキストと再生可能なストリームリンクを返す。理解:フレームを抽出し、ビジュアル/セマンティック/時間的インデックスを構築し、タイムスタンプと自動クリップでモーメントを検索する。アクション:トランスコードと正規化(コーデック、フレームレート、解像度、アスペクト比)、タイムライン編集(字幕、テキスト/画像オーバーレイ、ブランディング、オーディオオーバーレイ、吹き替え、翻訳)、メディアアセットの生成(画像、オーディオ、ビデオ)、ライブストリームまたはデスクトップキャプチャされたイベントのリアルタイムアラートを実行する。
origin: ECC
allowed-tools: Read Grep Glob Bash(python:*)
argument-hint: "[task description]"
---
# VideoDBスキル
**ビデオ、ライブストリーム、デスクトップセッションのための知覚 + 記憶 + アクション。**
## ユースケース
### デスクトップ知覚
* **デスクトップセッション**を開始/停止し、**画面、マイク、システムオーディオ**をキャプチャする
* **リアルタイムコンテキスト**をストリーミングし、**セグメント化されたセッション記憶**を保存する
* 言われた内容と画面上で起きていることに対して**リアルタイムアラート/トリガー**を実行する
* **セッションサマリー**、検索可能なタイムライン、**再生可能な証拠リンク**を生成する
### ビデオ取り込み + ストリーミング
* **ファイルまたはURL**を取り込み、**再生可能なウェブストリームリンク**を返す
* トランスコード/正規化:**コーデック、ビットレート、フレームレート、解像度、アスペクト比**
### インデックス + 検索(タイムスタンプ + 証拠)
* **ビジュアル**、**音声**、**キーワード**インデックスを構築する
* **タイムスタンプ**と**再生可能な証拠**で正確なモーメントを検索して返す
* 検索結果から自動的に**クリップ**を作成する
### タイムライン編集 + 生成
* 字幕:**生成**、**翻訳**、**バーンイン**
* オーバーレイ:**テキスト/画像/ブランドロゴ**、動的キャプション
* オーディオ:**バックグラウンドミュージック**、**ナレーション**、**吹き替え**
* **タイムライン操作**によるプログラマティックなコンポジションとエクスポート
### ライブストリーム(RTSP)+ 監視
* **RTSP/ライブストリーム**に接続する
* **リアルタイムのビジュアルと音声理解**を実行し、監視ワークフロー向けに**イベント/アラート**を発する
## 仕組み
### 一般的な入力
* ローカル**ファイルパス**、公開**URL**、または**RTSP URL**
* デスクトップキャプチャリクエスト:**開始 / 停止 / セッションのサマリー作成**
* 目的のアクション:理解コンテキストの取得、トランスコード仕様、インデックス仕様、検索クエリ、クリップ範囲、タイムライン編集、アラートルール
### 一般的な出力
* **ストリームURL**
* **タイムスタンプ**と**証拠リンク**付きの検索結果
* 生成されたアセット:字幕、オーディオ、画像、クリップ
* ライブストリーム向け**イベント/アラートペイロード**
* デスクトップ**セッションサマリー**と記憶エントリ
### Pythonコードの実行
VideoDBコードを実行する前に、プロジェクトディレクトリに移動して環境変数をロードする:
```python
from dotenv import load_dotenv
load_dotenv(".env")
import videodb
conn = videodb.connect()
```
これにより以下から `VIDEO_DB_API_KEY` が読み込まれる:
1. 環境変数(エクスポートされている場合)
2. プロジェクトの現在のディレクトリにある `.env` ファイル
キーが欠けている場合、`videodb.connect()` は自動的に `AuthenticationError` を発生させる。
短いインラインコマンドで十分な場合はスクリプトファイルを書かない。
インラインPython (`python -c "..."`) を書く場合は、常に適切にフォーマットされたコードを使用する——セミコロンで文を区切り、読みやすくする。約3文以上の場合はheredocを使用する:
```bash
python << 'EOF'
from dotenv import load_dotenv
load_dotenv(".env")
import videodb
conn = videodb.connect()
coll = conn.get_collection()
print(f"Videos: {len(coll.get_videos())}")
EOF
```
### セットアップ
ユーザーが「videodbのセットアップ」などを要求した場合:
### 1. SDKのインストール
```bash
pip install "videodb[capture]" python-dotenv
```
Linuxで `videodb[capture]` が失敗する場合は、キャプチャ拡張なしでインストールする:
```bash
pip install videodb python-dotenv
```
### 2. APIキーの設定
ユーザーは**いずれかの**方法で `VIDEO_DB_API_KEY` を設定する必要がある:
* **ターミナルでエクスポート**(Claudeを起動する前に):`export VIDEO_DB_API_KEY=your-key`
* **プロジェクトの `.env` ファイル**:プロジェクトの `.env` ファイルに `VIDEO_DB_API_KEY=your-key` を保存する
APIキーを無料で取得するには [console.videodb.io](https://console.videodb.io)(クレジットカード不要で50回の無料アップロード)を訪問する。
APIキーを自分で読み取り、書き込み、または処理**しない**。常にユーザーが設定するようにする。
### クイックリファレンス
### メディアのアップロード
```python
# URL
video = coll.upload(url="https://example.com/video.mp4")
# YouTube
video = coll.upload(url="https://www.youtube.com/watch?v=VIDEO_ID")
# Local file
video = coll.upload(file_path="/path/to/video.mp4")
```
### 転写 + 字幕
```python
# force=True skips the error if the video is already indexed
video.index_spoken_words(force=True)
text = video.get_transcript_text()
stream_url = video.add_subtitle()
```
### ビデオ内検索
```python
from videodb.exceptions import InvalidRequestError
video.index_spoken_words(force=True)
# search() raises InvalidRequestError when no results are found.
# Always wrap in try/except and treat "No results found" as empty.
try:
results = video.search("product demo")
shots = results.get_shots()
stream_url = results.compile()
except InvalidRequestError as e:
if "No results found" in str(e):
shots = []
else:
raise
```
### シーン検索
```python
import re
from videodb import SearchType, IndexType, SceneExtractionType
from videodb.exceptions import InvalidRequestError
# index_scenes() has no force parameter — it raises an error if a scene
# index already exists. Extract the existing index ID from the error.
try:
scene_index_id = video.index_scenes(
extraction_type=SceneExtractionType.shot_based,
prompt="Describe the visual content in this scene.",
)
except Exception as e:
match = re.search(r"id\s+([a-f0-9]+)", str(e))
if match:
scene_index_id = match.group(1)
else:
raise
# Use score_threshold to filter low-relevance noise (recommended: 0.3+)
try:
results = video.search(
query="person writing on a whiteboard",
search_type=SearchType.semantic,
index_type=IndexType.scene,
scene_index_id=scene_index_id,
score_threshold=0.3,
)
shots = results.get_shots()
stream_url = results.compile()
except InvalidRequestError as e:
if "No results found" in str(e):
shots = []
else:
raise
```
### タイムライン編集
**重要:** タイムラインを構築する前に必ずタイムスタンプを検証する:
* `start` は >= 0 でなければならない(負の値は静かに受け入れられるが、破損した出力を生成する)
* `start` は `end` より小さくなければならない
* `end` は `video.length` 以下でなければならない
```python
from videodb.timeline import Timeline
from videodb.asset import VideoAsset, TextAsset, TextStyle
timeline = Timeline(conn)
timeline.add_inline(VideoAsset(asset_id=video.id, start=10, end=30))
timeline.add_overlay(0, TextAsset(text="The End", duration=3, style=TextStyle(fontsize=36)))
stream_url = timeline.generate_stream()
```
### ビデオのトランスコード(解像度/品質変更)
```python
from videodb import TranscodeMode, VideoConfig, AudioConfig
# Change resolution, quality, or aspect ratio server-side
job_id = conn.transcode(
source="https://example.com/video.mp4",
callback_url="https://example.com/webhook",
mode=TranscodeMode.economy,
video_config=VideoConfig(resolution=720, quality=23, aspect_ratio="16:9"),
audio_config=AudioConfig(mute=False),
)
```
### アスペクト比の調整(ソーシャルプラットフォーム向け)
**警告:** `reframe()` は低速なサーバーサイド操作。長いビデオでは数分かかる場合があり、タイムアウトする可能性がある。ベストプラクテTrust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (0)
No findings outside the package's declared scope.
Gates applied: no_behavioural_pass.
fb3fb10d9622full audit observations/trust-audit/skill/affaan-m__videodb.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-09-22 | fb3fb10d9622 | SAFE | B | 89 | first audit |
Questions
What does the Videodb skill do?
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
Is Videodb safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can Videodb access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (fb3fb10d9622), read on 2026-09-22. The repository is watched, and a new audit runs when it changes — this is the first audit.