ezviz-open-video

Ezviz camera video streaming skill. Generates PC and mobile links for live and playback streams. Use when: Need to view camera live feed, playback recordings, generate preview links, remote monitoring. ⚠️ Security: Requires EZVIZ_APP_KEY and EZVIZ_APP_SECRET environment variables with minimal permissions.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "ezviz-open-video" with this command: npx skills add ezviz-open/ezviz-open-camera-video

Ezviz Open Video (萤石设备视频流)

Generate Ezviz camera live and playback streaming links for PC and mobile devices.


⚠️ Security Warning (Read Before Installation)

Complete the following security checks before using this skill:

#CheckStatusDescription
1Credential Permissions⚠️ RequiredUse minimal permission AppKey/AppSecret, do not use master account credentials
2Config File Reading⚠️ NoteSkill reads ~/.openclaw/*.json files (but environment variables have higher priority)
3Token Caching⚠️ NoteToken cached in /tmp/ezviz_global_token_cache/ (permissions 600, shared across skills)
4API Domain✅ Verifiedopenai.ys7.com is official Ezviz API endpoint
5Code Review✅ RecommendedReview scripts/generate_preview.py and lib/token_manager.py
6Python Dependencies⚠️ RequiredRequires requests library - install via pip install requests

🔒 Config File Reading Details

Credential Priority (high to low):

┌─────────────────────────────────────────────────────────────┐
│ 1. Environment Variables (Highest Priority - Recommended)   │
│    ├─ EZVIZ_APP_KEY                                         │
│    ├─ EZVIZ_APP_SECRET                                      │
│    └─ EZVIZ_DEVICE_SERIAL                                   │
│    ✅ Advantage: No config file reading, fully isolated      │
├─────────────────────────────────────────────────────────────┤
│ 2. OpenClaw Config Files (Only when env vars not set)       │
│    ├─ ~/.openclaw/config.json                               │
│    ├─ ~/.openclaw/gateway/config.json                       │
│    └─ ~/.openclaw/channels.json                             │
│    ⚠️ Note: Only reads channels.ezviz field                 │
├─────────────────────────────────────────────────────────────┤
│ 3. Command Line Arguments (Lowest Priority)                 │
│    python3 generate_preview.py appKey appSecret deviceSerial│
└─────────────────────────────────────────────────────────────┘

Security Recommendations:

  • Best Practice: Use environment variables, completely avoid config file reading
  • Isolated Config: Store Ezviz credentials in dedicated config file, don't mix with other services
  • ⚠️ Risk Mitigation: Set environment variables to override config files (will be ignored even if config exists)

Quick Secure Configuration

# 1. Use environment variables (highest priority, avoids accidental config file use)
export EZVIZ_APP_KEY="your_dedicated_app_key"
export EZVIZ_APP_SECRET="your_dedicated_app_secret"
export EZVIZ_DEVICE_SERIAL="BF6985110"

# 2. High security: Disable token caching
export EZVIZ_TOKEN_CACHE=0

# 3. Test credentials (recommended to use test account first)
# Login to https://openai.ys7.com/ to create dedicated app with only preview permissions

Quick Start

Install Dependencies

pip install requests

Set Environment Variables

export EZVIZ_APP_KEY="your_app_key"
export EZVIZ_APP_SECRET="your_app_secret"
export EZVIZ_DEVICE_SERIAL="BF6985110"

Optional environment variables:

export EZVIZ_CHANNEL_NO="1"     # Channel number, default 1
export EZVIZ_TOKEN_CACHE="1"    # Token cache: 1=enabled (default), 0=disabled

Run

python3 {baseDir}/scripts/generate_preview.py

Command line arguments:

# Single device
python3 {baseDir}/scripts/generate_preview.py appKey appSecret BF6985110 1

# Specify channel number
python3 {baseDir}/scripts/generate_preview.py appKey appSecret BF6985110 1

Channels Configuration (Recommended)

Skill supports automatically reading Ezviz credentials from OpenClaw channels configuration.

Configuration

Add to ~/.openclaw/config.json or ~/.openclaw/channels.json:

{
  "channels": {
    "ezviz": {
      "appId": "your_app_id",
      "appSecret": "your_app_secret",
      "domain": "https://openai.ys7.com",
      "enabled": true
    }
  }
}

Priority

Credential priority:

  1. Environment Variables (Highest)
  2. Channels Config (Medium)
  3. Command Line Arguments (Lowest)

Workflow

1. Get Token (appKey + appSecret → accessToken)
 ↓
2. Generate Links (accessToken + deviceSerial → preview/playback URLs)
 ↓
3. Output Results (PC + Mobile links for live and playback)

Token Auto-Get Explanation

You don't need to manually get or configure EZVIZ_ACCESS_TOKEN!

Skill automatically handles token acquisition and caching:

First Run:
 appKey + appSecret → Call Ezviz API → Get accessToken (7 days validity)
 ↓
Save to cache file (system temp directory)
 ↓
Subsequent Runs:
 Check if cached token is expired
 ├─ Not expired → Use cached token directly ✅
 └─ Expired → Get new token

Token Management Features:

  • Auto Get: Automatically call Ezviz API on first run
  • 7 Days Validity: Token valid for 7 days
  • Smart Caching: Don't re-get within validity period
  • Safety Buffer: Auto-refresh 5 minutes before expiry
  • No Config Needed: No need to manually set EZVIZ_ACCESS_TOKEN
  • Secure Storage: Cache file permissions 600

Output Example

======================================================================
Ezviz Open Video Skill (萤石设备视频流)
======================================================================
[Time] 2026-03-19 19:23:00
[INFO] Device: BF6985110 (Channel: 1)

======================================================================
SECURITY VALIDATION
======================================================================
[OK] Device serial format validated
[OK] Using credentials from environment variables

======================================================================
[Step 1] Getting access token...
======================================================================
[INFO] Using cached global token, expires: 2026-03-26 19:21:16
[SUCCESS] Using cached token, expires: 2026-03-26 19:21:16

======================================================================
[Step 2] Generating links...
======================================================================

📺 Live Links:

  🖥️  PC:
  https://open.ys7.com/console/jssdk/pc.html?url=ezopen://open.ys7.com/BF6985110/1.live&accessToken=at.xxx

  📱  Mobile:
  https://open.ys7.com/console/jssdk/mobile.html?url=ezopen://open.ys7.com/BF6985110/1.live&accessToken=at.xxx

📼 Playback Links:

  🖥️  PC:
  https://open.ys7.com/console/jssdk/pc.html?url=ezopen://open.ys7.com/BF6985110/1.rec&accessToken=at.xxx

  📱  Mobile:
  https://open.ys7.com/console/jssdk/mobile.html?url=ezopen://open.ys7.com/BF6985110/1.rec&accessToken=at.xxx

======================================================================

Link Format

TypePlatformFormat
LivePChttps://open.ys7.com/console/jssdk/pc.html?url=ezopen://{serial}/{channel}.live&accessToken={token}
LiveMobilehttps://open.ys7.com/console/jssdk/mobile.html?url=ezopen://{serial}/{channel}.live&accessToken={token}
PlaybackPChttps://open.ys7.com/console/jssdk/pc.html?url=ezopen://{serial}/{channel}.rec&accessToken={token}
PlaybackMobilehttps://open.ys7.com/console/jssdk/mobile.html?url=ezopen://{serial}/{channel}.rec&accessToken={token}

Link Explanation:

  • .live — Live streaming
  • .rec — Recording playback

API Interface

InterfaceURLDocumentation
Get TokenPOST /api/lapp/token/gethttps://openai.ys7.com/help/81

Network Endpoints

DomainPurpose
openai.ys7.comEzviz Open Platform API (Token)
open.ys7.comPreview page hosting

Notes

⚠️ Token Validity: accessToken typically valid for 7 days, skill auto-manages caching and refresh

⚠️ Privacy Compliance: Camera monitoring may involve privacy issues, ensure compliance with local laws

⚠️ Device Requirements: Device must be online to generate valid links


Data Flow Explanation

This skill sends data to third-party services:

Data TypeSent ToPurposeRequired
appKey/appSecretopenai.ys7.com (Ezviz)Get access token✅ Required
EZVIZ_ACCESS_TOKENAuto-generatedAuto-get on each run✅ Auto

Data Flow:

  • Ezviz Platform (openai.ys7.com): Token request - Official Ezviz API
  • No Other Third Parties: No data sent to other services
  • Preview Links: Only generates URLs, no video stream data transmitted

Credential Permission Recommendations:

  • Use minimal permission appKey/appSecret
  • Enable only necessary API permissions
  • Rotate credentials regularly
  • Do not use master account credentials

Local Processing:

  • ✅ Token cached to system temp directory, permissions 600
  • ✅ Token valid for 7 days, auto-refresh 5 minutes before expiry
  • ✅ Can disable cache: Set EZVIZ_TOKEN_CACHE=0 environment variable

Usage Examples

Scenario 1: Single Device Preview

python3 generate_preview.py your_key your_secret BF6985110

Scenario 2: Specify Channel

python3 generate_preview.py your_key your_secret BF6985110 1

Scenario 3: Environment Variables

export EZVIZ_APP_KEY="your_key"
export EZVIZ_APP_SECRET="your_secret"
export EZVIZ_DEVICE_SERIAL="BF6985110"
python3 generate_preview.py

🔐 Token Management & Security

Token Caching Behavior

Default Behavior:

  • ✅ Token cached to system temp directory (/tmp/ezviz_global_token_cache/)
  • ✅ Cache valid for 7 days
  • ✅ Auto-refresh 5 minutes before expiry
  • ✅ Cache file permissions 600
  • ⚠️ Note: Cache is shared across all skills using this token manager

Security Considerations

ConcernMitigation
Global cache shared across skillsRun in isolated environment (container/VM), or disable caching
Temp directory accessible by other usersUse dedicated user account, or set custom cache path
Token persistenceDisable caching: EZVIZ_TOKEN_CACHE=0

Disable Token Caching (High Security)

export EZVIZ_TOKEN_CACHE=0
python3 scripts/generate_preview.py ...

Cache File Location

SystemPath
macOS/Linux/tmp/ezviz_global_token_cache/
WindowsC:\Users\{user}\AppData\Local\Temp\ezviz_global_token_cache\

Clear Cache:

rm -rf /tmp/ezviz_global_token_cache/

🔒 Security Recommendations

1. Use Minimal Permission Credentials

  • Create dedicated appKey/appSecret
  • Do not use master account credentials
  • Rotate credentials regularly (recommended every 90 days)

2. Environment Variable Security

# Use .env file
echo "EZVIZ_APP_KEY=your_key" >> .env
echo "EZVIZ_APP_SECRET=your_secret" >> .env
chmod 600 .env
source .env

3. Disable Caching (High Security Scenarios)

export EZVIZ_TOKEN_CACHE=0

4. Isolated Environment (Recommended)

  • Run in container/VM for stricter isolation
  • Use dedicated user account with restricted temp directory access
  • Review lib/token_manager.py to understand cache behavior

5. Config File Security

  • Ensure ~/.openclaw/*.json files don't contain unrelated secrets
  • Prefer environment variables to avoid config file reading entirely

Security Audit Checklist

Before Installation

  • Review Code — Read scripts/generate_preview.py and lib/token_manager.py
  • Verify API Domain — Confirm openai.ys7.com is official Ezviz endpoint
  • Prepare Test Credentials — Create dedicated Ezviz application
  • Install Dependencies — Run pip install requests

During Installation

  • Use Environment Variables — Prefer environment variables over config files
  • Minimal Permission Credentials — Do not use master account credentials
  • Isolated Environment — Consider container/VM for stricter isolation

After Installation

  • Verify Cache Permissions — Confirm cache file permissions are 600
  • Test Functionality — Verify links open correctly
  • Review Config Files — Ensure ~/.openclaw/*.json don't contain unrelated secrets

File Structure

ezviz-open-video/
├── SKILL.md                      # Skill documentation
├── lib/
│   ├── token_manager.py          # Token manager (shared)
│   └── README_TOKEN_MANAGER.md   # Token management docs
├── references/
│   └── ezviz-agent-api.md        # API reference
└── scripts/
    └── generate_preview.py       # Main script

Related Skills

  • ezviz-open-picture: Device snapshot/capture skill
  • ezviz-open-ptz-control: PTZ control skill

Official Resources


Last Updated: 2026-03-19
Version: 1.1.0

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

通义晓蜜 - 智能外呼

触发阿里云晓蜜外呼机器人任务,自动批量拨打电话。适用于批量外呼、客户回访、满意度调查、简历筛查约面试等场景。可从前置工具或节点获取外呼名单。

Registry SourceRecently Updated
General

Letterboxd Watchlist

Scrape a public Letterboxd user's watchlist into a CSV/JSONL list of titles and film URLs without logging in. Use when a user asks to export, scrape, or mirror a Letterboxd watchlist, or to build watch-next queues.

Registry SourceRecently Updated
General

Seedance Video Generation

Generate AI videos using ByteDance Seedance. Use when the user wants to: (1) generate videos from text prompts, (2) generate videos from images (first frame, first+last frame, reference images), or (3) query/manage video generation tasks. Supports Seedance 1.5 Pro (with audio), 1.0 Pro, 1.0 Pro Fast, and 1.0 Lite models.

Registry SourceRecently Updated
4.2K17jackycser
General

Universal Skills Manager

The master coordinator for AI skills. Discovers skills from multiple sources (SkillsMP.com, SkillHub, and ClawHub), manages installation, and synchronization...

Registry SourceRecently Updated