openclaw-node-camera-capture

Installation
SKILL.md

Always treat openclaw nodes camera snap|clip as the authoritative path for OpenClaw camera work. Shell camera tools are only secondary diagnostics.

Quick defaults

  • Default photo path: $HOME/Desktop/openclaw-camera-photo.jpg
  • Default video path: $HOME/Desktop/openclaw-camera-clip.mp4
  • Default photo capture: front-facing camera, small warm-up delay
  • Default video capture: short clip unless the user asks otherwise
  • Before capture, confirm the node is actually connected

OpenClaw Node Camera Capture

Use OpenClaw's native node camera path, not generic shell camera tools.

This skill covers both photo capture and short video recording through the same native path.

The key distinction is simple:

  • openclaw nodes camera snap|clip = OpenClaw app/node permission chain
  • imagesnap, ffmpeg, and similar CLI tools = separate shell/CLI permission chain

If the user wants to test whether OpenClaw itself can access the camera, always use the node camera path.

When to use this skill

Use it whenever the user wants any of the following through OpenClaw's own camera capability:

  • take a photo
  • record a short video
  • test whether the OpenClaw app can open the camera
  • save camera output to Desktop or another local path
  • inspect camera device availability via OpenClaw
  • troubleshoot camera permission / allowlist / denylist issues for OpenClaw

Prefer this skill even if the user casually says things like:

  • “拍张照”
  • “录个视频”
  • “试试摄像头能不能开”
  • “用 openclaw 拍一下”
  • “保存到桌面”
  • “test the camera”

Core rule

When the user is testing or using OpenClaw camera, do not switch to imagesnap, ffmpeg, or similar CLI capture tools as the main workflow.

Those tools may succeed or fail for reasons unrelated to OpenClaw's actual node permission chain.

You may mention that distinction when debugging, but the real capture workflow must be:

  1. confirm the node is connected
  2. resolve the node id
  3. use openclaw nodes camera list / snap / clip
  4. copy the resulting file to the user's requested destination if needed

Standard workflow

1) Confirm node connectivity

Run:

openclaw nodes status --json

Find the connected node the user intends to use, typically the local Mac node.

If no node is connected, tell the user plainly that the OpenClaw app/node is offline and ask them to bring the app back to the foreground or relaunch it.

2) Resolve the node id

Extract the nodeId from openclaw nodes status --json.

Typical matching signals:

  • displayName
  • connected: true
  • expected platform/device family

3) Optionally list camera devices

If the user asked which camera is available, or if device selection matters, run:

openclaw nodes camera list --node "<nodeId>"

Use --device-id <id> only when the user asked for a specific camera or the default camera is wrong.

4) Capture a photo

Use:

openclaw nodes camera snap --node "<nodeId>" --facing front --delay-ms 1000 --invoke-timeout 20000

Notes:

  • --facing front is a good default on Macs unless the user asked for something else.
  • The command prints a MEDIA:<path> line.
  • Parse the path after MEDIA: and then copy it to the final requested location.

Example: save to Desktop.

LINE=$(openclaw nodes camera snap --node "$NODE_ID" --facing front --delay-ms 1000 --invoke-timeout 20000 | tail -n 1)
SRC="${LINE#MEDIA:}"
cp "$SRC" "$HOME/Desktop/openclaw-camera-photo.jpg"

5) Record a short video

Use:

openclaw nodes camera clip --node "<nodeId>" --duration 5s --invoke-timeout 30000

Or without audio:

openclaw nodes camera clip --node "<nodeId>" --duration 5s --no-audio --invoke-timeout 30000

The command prints a MEDIA:<path> line on success. Parse it and copy the file to the requested location.

Example: save to Desktop.

LINE=$(openclaw nodes camera clip --node "$NODE_ID" --duration 5s --invoke-timeout 30000 | tail -n 1)
SRC="${LINE#MEDIA:}"
cp "$SRC" "$HOME/Desktop/openclaw-camera-clip.mp4"

Default output behavior

If the user explicitly says where to save the file, use that path.

If the user asks casually for a local artifact without specifying a path, sensible defaults are:

  • photo: $HOME/Desktop/openclaw-camera-photo.jpg
  • video: $HOME/Desktop/openclaw-camera-clip.mp4

When producing multiple captures, use numbered names:

  • openclaw-camera-photo-1.jpg
  • openclaw-camera-photo-2.jpg
  • openclaw-camera-photo-3.jpg
  • openclaw-camera-clip-1.mp4

Troubleshooting guide

When capture fails, prefer concrete diagnostics over guesswork.

A. Node not connected

Symptom:

  • connected: false
  • empty caps / commands
  • camera commands cannot run

What to tell the user:

  • OpenClaw app/node is offline
  • bring the app to the foreground or relaunch it
  • retry after openclaw nodes status --json shows connected: true

B. Camera command blocked by OpenClaw policy

Symptom examples:

  • node command not allowed
  • allowlist / denylist failure

Check:

openclaw config get gateway.nodes.allowCommands
openclaw config get gateway.nodes.denyCommands

What to tell the user:

  • OpenClaw's own node policy is blocking the command
  • inspect whether camera.snap or camera.clip is missing from allowCommands
  • inspect whether it appears in denyCommands

C. Camera permission disabled in app / OS path

Symptom examples:

  • command fails before capture
  • app does not expose working camera capability

Useful checks and guidance:

  • confirm the macOS app has Camera permission
  • confirm OpenClaw app settings allow camera use
  • retry after bringing the app to the foreground

D. Shell camera tools disagree with OpenClaw

If the user says Terminal imagesnap works but OpenClaw does not, or the reverse, explain briefly:

  • that is normal
  • they are different permission chains
  • OpenClaw node camera must be judged by openclaw nodes camera snap|clip, not by generic shell camera tools

Reporting back

After a successful run, report plainly:

  • whether capture succeeded
  • where the file was saved
  • whether it was a photo or video
  • which path was used: OpenClaw native node camera

Good example:

  • "Used OpenClaw native node camera. Photo captured successfully and copied to /Users/yy/Desktop/openclaw-camera-photo.jpg."

If the user wants the file sent into chat

This skill is for capture.

If the user wants the resulting local file delivered into the conversation itself, capture first with this skill, then pass the saved file into the appropriate OpenClaw file-send workflow instead of trying to rely on reply attachments.

Do not

  • Do not treat imagesnap success as proof that OpenClaw camera is working
  • Do not treat imagesnap failure as proof that OpenClaw camera is broken
  • Do not switch away from the OpenClaw node path unless the user explicitly asks to test a non-OpenClaw CLI path
  • Do not claim the file exists unless you verified the output path after capture
  • Do not report setup work as success; the real checkpoint is the artifact itself
Related skills

More from yanyang1116/skills

Installs
1
First Seen
Mar 30, 2026