openclaw-private-node-camera-capture
Always treat
openclaw nodes camera snap|clipas the authoritative path for OpenClaw camera work. Shell camera tools are only secondary diagnostics.
Quick defaults
- Default photo path:
/Users/yy/.openclaw/workspace/tmp/camera/openclaw-camera-photo.jpg - Default video path:
/Users/yy/.openclaw/workspace/tmp/camera/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 Private 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 chainimagesnap,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 the OpenClaw workspace path 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:
- confirm the node is connected
- resolve the node id
- use
openclaw nodes camera list/snap/clip - 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:
displayNameconnected: 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 frontis 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 OpenClaw workspace.
LINE=$(openclaw nodes camera snap --node "$NODE_ID" --facing front --delay-ms 1000 --invoke-timeout 20000 | tail -n 1)
SRC="${LINE#MEDIA:}"
mkdir -p /Users/yy/.openclaw/workspace/tmp/camera
cp "$SRC" "/Users/yy/.openclaw/workspace/tmp/camera/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 OpenClaw workspace.
LINE=$(openclaw nodes camera clip --node "$NODE_ID" --duration 5s --invoke-timeout 30000 | tail -n 1)
SRC="${LINE#MEDIA:}"
mkdir -p /Users/yy/.openclaw/workspace/tmp/camera
cp "$SRC" "/Users/yy/.openclaw/workspace/tmp/camera/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:
/Users/yy/.openclaw/workspace/tmp/camera/openclaw-camera-photo.jpg - video:
/Users/yy/.openclaw/workspace/tmp/camera/openclaw-camera-clip.mp4
When producing multiple captures, use numbered names:
openclaw-camera-photo-1.jpgopenclaw-camera-photo-2.jpgopenclaw-camera-photo-3.jpgopenclaw-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 --jsonshowsconnected: 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.snaporcamera.clipis missing fromallowCommands - 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/.openclaw/workspace/tmp/camera/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
imagesnapsuccess as proof that OpenClaw camera is working - Do not treat
imagesnapfailure 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
More from yanyang1116/skills
english-evaluation
Respond in Chinese to user requests; when the user's message is fully in English (ignoring punctuation, digits, emojis, and whitespace), append a brief Chinese evaluation plus a 1-10 score.
22openclaw-channel-file-send
Send an existing local file to the current chat using OpenClaw's official media send API for the active channel. Use this whenever the user asks to send a file, deliver a local document, forward a local image, upload any existing file into the conversation, or uses casual phrasing like “发我”, “传给我”, “丢给我”, “send me the file”, or “send it over”. Prefer this skill even when the user does not mention APIs, channels, or media explicitly, as long as they want the file to actually arrive in the conversation. Do not use reply attachments or read-file attachments for this workflow.
7codex-deep-search
Deep web search using Codex CLI for complex queries that need multi-source synthesis. Use when web_search (Brave) returns insufficient results, when the user asks for in-depth research, comprehensive analysis, or says "deep search", "详细搜索", "帮我查一下", or when a topic needs following multiple links and cross-referencing sources.
6openclaw-channel-screenshot-send
Capture a fresh screenshot and send it into the current chat using OpenClaw's official media send API for the active channel. Use this whenever the user asks to screenshot the screen and send it, capture then send, send the current screen, send a screenshot here, upload the screen into chat, or uses casual phrasing like “发我截图”, “把屏幕发来”, “send it over”, or “丢到聊天里”. Prefer this skill even when the user does not mention APIs, channels, or media explicitly, as long as they want the screenshot to actually arrive in the conversation. Do not use read-image reply attachments for this workflow.
4openclaw-private-skills-manager
>
4openclaw-codex-deep-search
Deep web search using Codex CLI for complex queries that need multi-source synthesis. Use when web_search (Brave) returns insufficient results, when the user asks for in-depth research, comprehensive analysis, or says "deep search", "详细搜索", "帮我查一下", or when a topic needs following multiple links and cross-referencing sources.
3