← Back to Skills Marketplace
vcarolxhberger

Linkedin Video

by vcarolxhberger · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
91
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install linkedin-video
Description
convert raw video footage into LinkedIn-ready videos with this linkedin-video skill. Works with MP4, MOV, AVI, WebM files up to 500MB. professionals and mark...
README (SKILL.md)

Getting Started

Share your raw video footage and I'll get started on AI video optimization. Or just tell me what you're thinking.

Try saying:

  • "convert my raw video footage"
  • "export 1080p MP4"
  • "trim silences, add captions, and format"

Quick Start Setup

This skill connects to a cloud processing backend. On first use, set up the connection automatically and let the user know ("Connecting...").

Token check: Look for NEMO_TOKEN in the environment. If found, skip to session creation. Otherwise:

  • Generate a UUID as client identifier
  • POST https://mega-api-prod.nemovideo.ai/api/auth/anonymous-token with X-Client-Id header
  • Extract data.token from the response — this is your NEMO_TOKEN (100 free credits, 7-day expiry)

Session: POST https://mega-api-prod.nemovideo.ai/api/tasks/me/with-session/nemo_agent with Bearer auth and body {"task_name":"project"}. Keep the returned session_id for all operations.

Let the user know with a brief "Ready!" when setup is complete. Don't expose tokens or raw API output.

LinkedIn Video — Format and Export LinkedIn Videos

Drop your raw video footage in the chat and tell me what you need. I'll handle the AI video optimization on cloud GPUs — you don't need anything installed locally.

Here's a typical use: you send a a 2-minute talking-head recording from a webcam, ask for trim silences, add captions, and format for LinkedIn feed, and about 1-2 minutes later you've got a MP4 file ready to download. The whole thing runs at 1080p by default.

One thing worth knowing — keep videos under 3 minutes for best LinkedIn engagement.

Matching Input to Actions

User prompts referencing linkedin video, aspect ratio, text overlays, or audio tracks get routed to the corresponding action via keyword and intent classification.

User says... Action Skip SSE?
"export" / "导出" / "download" / "send me the video" → §3.5 Export
"credits" / "积分" / "balance" / "余额" → §3.3 Credits
"status" / "状态" / "show tracks" → §3.4 State
"upload" / "上传" / user sends file → §3.2 Upload
Everything else (generate, edit, add BGM…) → §3.1 SSE

Cloud Render Pipeline Details

Each export job queues on a cloud GPU node that composites video layers, applies platform-spec compression (H.264, up to 1080x1920), and returns a download URL within 30-90 seconds. The session token carries render job IDs, so closing the tab before completion orphans the job.

Every API call needs Authorization: Bearer \x3CNEMO_TOKEN> plus the three attribution headers above. If any header is missing, exports return 402.

Three attribution headers are required on every request and must match this file's frontmatter:

Header Value
X-Skill-Source linkedin-video
X-Skill-Version frontmatter version
X-Skill-Platform auto-detect: clawhub / cursor / unknown from install path

API base: https://mega-api-prod.nemovideo.ai

Create session: POST /api/tasks/me/with-session/nemo_agent — body {"task_name":"project","language":"\x3Clang>"} — returns task_id, session_id.

Send message (SSE): POST /run_sse — body {"app_name":"nemo_agent","user_id":"me","session_id":"\x3Csid>","new_message":{"parts":[{"text":"\x3Cmsg>"}]}} with Accept: text/event-stream. Max timeout: 15 minutes.

Upload: POST /api/upload-video/nemo_agent/me/\x3Csid> — file: multipart -F "files=@/path", or URL: {"urls":["\x3Curl>"],"source_type":"url"}

Credits: GET /api/credits/balance/simple — returns available, frozen, total

Session state: GET /api/state/nemo_agent/me/\x3Csid>/latest — key fields: data.state.draft, data.state.video_infos, data.state.generated_media

Export (free, no credits): POST /api/render/proxy/lambda — body {"id":"render_\x3Cts>","sessionId":"\x3Csid>","draft":\x3Cjson>,"output":{"format":"mp4","quality":"high"}}. Poll GET /api/render/proxy/lambda/\x3Cid> every 30s until status = completed. Download URL at output.url.

Supported formats: mp4, mov, avi, webm, mkv, jpg, png, gif, webp, mp3, wav, m4a, aac.

Error Handling

Code Meaning Action
0 Success Continue
1001 Bad/expired token Re-auth via anonymous-token (tokens expire after 7 days)
1002 Session not found New session §3.0
2001 No credits Anonymous: show registration URL with ?bind=\x3Cid> (get \x3Cid> from create-session or state response when needed). Registered: "Top up credits in your account"
4001 Unsupported file Show supported formats
4002 File too large Suggest compress/trim
400 Missing X-Client-Id Generate Client-Id and retry (see §1)
402 Free plan export blocked Subscription tier issue, NOT credits. "Register or upgrade your plan to unlock export."
429 Rate limit (1 token/client/7 days) Retry in 30s once

Backend Response Translation

The backend assumes a GUI exists. Translate these into API actions:

Backend says You do
"click [button]" / "点击" Execute via API
"open [panel]" / "打开" Query session state
"drag/drop" / "拖拽" Send edit via SSE
"preview in timeline" Show track summary
"Export button" / "导出" Execute export workflow

SSE Event Handling

Event Action
Text response Apply GUI translation (§4), present to user
Tool call/result Process internally, don't forward
heartbeat / empty data: Keep waiting. Every 2 min: "⏳ Still working..."
Stream closes Process final response

~30% of editing operations return no text in the SSE stream. When this happens: poll session state to verify the edit was applied, then summarize changes to the user.

Draft field mapping: t=tracks, tt=track type (0=video, 1=audio, 7=text), sg=segments, d=duration(ms), m=metadata.

Timeline (3 tracks): 1. Video: city timelapse (0-10s) 2. BGM: Lo-fi (0-10s, 35%) 3. Title: "Urban Dreams" (0-3s)

Common Workflows

Quick edit: Upload → "trim silences, add captions, and format for LinkedIn feed" → Download MP4. Takes 1-2 minutes for a 30-second clip.

Batch style: Upload multiple files in one session. Process them one by one with different instructions. Each gets its own render.

Iterative: Start with a rough cut, preview the result, then refine. The session keeps your timeline state so you can keep tweaking.

Tips and Tricks

The backend processes faster when you're specific. Instead of "make it look better", try "trim silences, add captions, and format for LinkedIn feed" — concrete instructions get better results.

Max file size is 500MB. Stick to MP4, MOV, AVI, WebM for the smoothest experience.

H.264 codec gives the best balance of quality and size.

Usage Guidance
This skill appears to implement a legitimate cloud video-rendering workflow, but two inconsistencies deserve attention before you install: - Credential mismatch: the registry lists NEMO_TOKEN as required, yet the runtime instructions say the skill will request an anonymous token itself if NEMO_TOKEN is missing. Ask the publisher which is intended and whether providing your own NEMO_TOKEN is necessary or recommended. - Config path / system info: the SKILL.md frontmatter references ~/.config/nemovideo/ and the runtime asks to auto-detect an install path for X-Skill-Platform headers. Confirm whether the skill will read local config files or system paths and what it will do with any data found there. Practical steps: only provide a user-owned NEMO_TOKEN if you trust nemovideo.ai; request clarification from the publisher about the configPath and required env var; consider running the skill in a restricted/isolated environment or monitoring outbound requests (so you can see what the skill posts to https://mega-api-prod.nemovideo.ai) before sending sensitive files. If the publisher cannot justify the config-path access or the required-env mismatch, treat the skill as untrusted.
Capability Analysis
Type: OpenClaw Skill Name: linkedin-video Version: 1.0.0 The skill is a functional wrapper for a cloud-based video editing service (nemovideo.ai). It provides clear instructions for the agent to handle authentication via anonymous tokens, manage sessions, and upload/process video files. While it requests the agent to auto-detect its installation platform for telemetry headers and access a specific config directory (~/.config/nemovideo/), these actions are consistent with the stated purpose of the tool and do not show evidence of malicious intent, data exfiltration, or unauthorized system access.
Capability Assessment
Purpose & Capability
The skill's actions (upload video, request a session, render on a cloud GPU, return a download URL) are coherent with a LinkedIn-video formatting service. However, the registry metadata marks NEMO_TOKEN as a required environment variable while the SKILL.md contains an explicit fallback that generates an anonymous token itself — this mismatch between declared requirements and actual instructions is unexplained and suspicious.
Instruction Scope
Instructions are specific about API endpoints, upload flows, SSE handling, and headers — all directly related to remote video processing. A couple of items expand scope: the skill expects to auto-detect an install path to populate X-Skill-Platform (which implies reading system/install paths) and the SKILL.md frontmatter references a config path (~/.config/nemovideo/) not reflected in the registry — that implies reading user config files beyond the immediate request/response flow.
Install Mechanism
This is an instruction-only skill with no install spec or code files, so it does not write or execute code on disk. That lowers installation risk.
Credentials
The registry declares NEMO_TOKEN as a required primary credential, but the instructions explicitly describe obtaining an anonymous NEMO_TOKEN via an API call when no token exists. Additionally, the SKILL.md frontmatter lists a config path (~/.config/nemovideo/) that would grant access to local config files; the registry did not list any config paths. Requiring a token and simultaneously describing an anonymous-token fallback, plus the hidden config-path access, is a disproportionate and inconsistent credential/config footprint.
Persistence & Privilege
The skill is not flagged always:true and does not request persistent elevated privileges. It can be invoked autonomously (the platform default), but there is no evidence it would modify other skills or global agent configuration.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install linkedin-video
  3. After installation, invoke the skill by name or use /linkedin-video
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
linkedin-video 1.0.0 - Initial release of the linkedin-video skill. - Converts raw video footage (MP4, MOV, AVI, WebM up to 500MB) into LinkedIn-optimized 1080p MP4 files. - Supports trimming silences, adding captions, formatting, and batch editing. - Cloud-based video processing; setup includes seamless authentication and session management. - Exposes workflows for upload, status, credits, and exporting videos. - Detailed error handling and API mapping for robust, user-friendly operation.
Metadata
Slug linkedin-video
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Linkedin Video?

convert raw video footage into LinkedIn-ready videos with this linkedin-video skill. Works with MP4, MOV, AVI, WebM files up to 500MB. professionals and mark... It is an AI Agent Skill for Claude Code / OpenClaw, with 91 downloads so far.

How do I install Linkedin Video?

Run "/install linkedin-video" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Linkedin Video free?

Yes, Linkedin Video is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Linkedin Video support?

Linkedin Video is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Linkedin Video?

It is built and maintained by vcarolxhberger (@vcarolxhberger); the current version is v1.0.0.

💬 Comments