Gateway
Running
LaunchAgent · ws://127.0.0.1:18789
Slack
Connected
Socket mode · 189ms · App A0AGCHZD03Z
Skills
17
10 built-in + 5 custom + 2 ClawHub
Memory Search
Active
Gemini embeddings · Vector + FTS

Gateway & Machine

Version2026.2.25
OSmacOS 26.3 (Intel) · Node 22.22.0
SSHssh momentatech@[tailscale-ip]
Dashboardhttp://127.0.0.1:18789
Config~/.openclaw/openclaw.json
Security0 critical · 2 warnings (expected)

Agents

AgentModelChannelHeartbeat
lobster openai-codex/gpt-5.3-codex Default (catch-all) 30m
video-producer anthropic/claude-opus-4-6 #video-production Disabled

Routing: video-producer binds to C0AGT89CSKD first, lobster catches all remaining.

Slack Channels

#lobster-testC0AGU4295HQActive→ lobster
#video-productionC0AGT89CSKDArchived→ video-producer

#video-production needs to be unarchived before video-producer can be tested.

API Keys

ServiceOwnerStatusUsed By
Pexelsours200 OKvideo-producer (stock footage)
ElevenLabsours200 OKvideo-producer (Roger TTS)
Pixabayours200 OKvideo-producer (backup stock)
AnthropicoursActivevideo-producer (Opus 4.6)
OpenAIoursActive (OAuth)lobster (GPT-5.3-Codex)
GeminioursActiveEmbeddings + nano-banana-pro
Runway MLTravis401 ExpiredBROKEN — needs rotation
YouTubeoursOAuth activeyoutube-upload skill (Testing_Gluthoric)

Key backup: ~/openclaw-backup/keys.json on Mac

Skills (17 total: 10 built-in + 5 custom + 2 ClawHub)

SkillStatusNotes
sagReadyElevenLabs TTS (Roger voice, --stability/--similarity/--style flags)
slackReadyMessages, reactions, pins (not file uploads)
nano-banana-proReadyGemini 3 Pro image gen for thumbnails
video-framesReadyExtract frames/clips via ffmpeg
coding-agentReadyDelegate coding to sub-agents
skill-creatorReadyCreate/update agent skills
imsgReadyiMessage/SMS CLI
tmuxReadyRemote-control tmux sessions
healthcheckReadyHost security hardening
weatherReadyWeather via wttr.in

Custom-Built Skills (Video Pipeline)

SkillScriptsStatus
pexels-stocksearch_video, search_photo, download, previewBUILT
pillow-video-cardssection_card, intro_slide, outro_slide, thumbnail, text_overlayTESTED
ffmpeg-assemblernormalize, concat_clips, mix_audio, overlay_image, assembleTESTED
pixabay-stocksearch_video, search_photo, downloadTESTED
youtube-uploadupload, set_thumbnail, check_quotaTESTED

ClawHub-Installed Skills

SkillTypeNotes
video-generationReference docsAPI guides for Runway Gen-4.5, Luma, Kling, Pika, Replicate, Stable Video Diffusion
video-subtitlesScriptWhisper transcription + SRT generation + burn-in via generate_srt.py

Installed Toolchain

ToolVersionPath
FFmpeg8.0.1/usr/local/bin/ffmpeg
Python3.12.12/usr/local/bin/python3.12
ImageMagick7.1.2-15/usr/local/bin/magick
yt-dlp2026.02.21/usr/local/bin/yt-dlp
sag (TTS)0.2.2/usr/local/bin/sag
Pillow12.1.1pip3.12
requests2.32.5pip3.12
pydub0.25.1pip3.12

Fonts: Arial Bold + Impact at /System/Library/Fonts/Supplemental/

Remaining Tasks

TaskStatus
Build youtube-upload skillDone
YouTube OAuth flow (get refresh token)Done (Testing_Gluthoric)
Unarchive #video-production in SlackUser action needed
Verify Slack routing end-to-endPending
Configure model fallbacks (Opus → Sonnet)Pending
Runway ML key rotationBlocked (Travis)
Pexels API503 (their outage, Pixabay covers it)

Task Tracker

#TaskStatus
1Install OpenClawDONE
2Configure model providersDONE
3Connect Slack (socket mode)DONE
4Create Lobster agentDONE
5Create Video-Producer agentDONE
6Configure agent routingDONE
7Pre-flight verificationDONE

Task 1: Install OpenClaw

Machine Details

Hostopenclaw-macbookpro
Usermomentatech
OSmacOS 26.3 (Intel)
Tailscale IP[redacted]
Nodev22.22.0 (/usr/local/bin/node)
Homebrew5.0.15 (/usr/local/bin/brew)

Install Steps

1. First attempt — failed (permissions)

curl -fsSL https://openclaw.ai/install.sh | bash

EACCES: permission denied — old install owned directory as root.

2. Fix permissions

sudo chown -R $(whoami) /usr/local/lib/node_modules/

3. Success

curl -fsSL https://openclaw.ai/install.sh | bash

v2026.2.25 installed. Gateway token auth configured, LaunchAgent installed.

Post-Install

Config~/.openclaw/openclaw.json
Gateway token[redacted — see openclaw.json]
Dashboardhttp://127.0.0.1:18789
Skills7 / 51 eligible
Keys backup~/openclaw-backup/keys.json

Task 2: Model Providers

OpenAI Codex (default)

openclaw configure → Model → OpenAI → OpenAI Codex (ChatGPT OAuth)
Default modelopenai-codex/gpt-5.3-codex
AuthOAuth / profile openai-codex:default

Anthropic (added later)

Via env.ANTHROPIC_API_KEY in openclaw.json. Auto-detected.

Available: anthropic/claude-opus-4-6, anthropic/claude-sonnet-4-6

Task 3: Connect Slack

openclaw configure → Channels → Slack (Socket Mode)
  • Bot token: xoxb-[redacted]
  • App token: xapp-[redacted]
  • Channel allowlist: [lobster-test],[video-production]
  • DM policy: Pairing — approved sender [redacted]
App IDA0AGCHZD03Z
ModeSocket Mode
#lobster-testC0AGU4295HQ
#video-productionC0AGT89CSKD

Task 4: Lobster Agent

Default Slack bot. Handles all channels except #video-production.

Agent IDlobster
Modelopenai-codex/gpt-5.3-codex
Workspace~/.openclaw/workspace-lobster/

SOUL.md + IDENTITY.md (lobster)

Task 5: Video-Producer Agent

AI video production for Punchlist Zero.

Agent IDvideo-producer
Modelanthropic/claude-opus-4-6
Channel#video-production (C0AGT89CSKD)
Workspace~/.openclaw/workspace-video/

SOUL.md + IDENTITY.md + config/{technical_notes, style_guide, demo_context}.md

Task 6: Agent Routing

Gotcha: Agents go in agents.list[] array, NOT top-level keys. First attempt was rejected.

{
  "bindings": [
    {
      "agentId": "video-producer",
      "match": { "channel": "slack", "peer": { "kind": "channel", "id": "C0AGT89CSKD" } }
    },
    {
      "agentId": "lobster",
      "match": { "channel": "slack" }
    }
  ]
}

Order matters: specific peer match first, catch-all second.

Task 7: Pre-flight

Verified 2026-02-26 05:40 UTC

CheckResult
OpenClawv2026.2.25
GatewayActive (LaunchAgent)
ConfigClean (openclaw doctor)
SlackSocket mode, 179ms
Agentslobster + video-producer
Bindingsvideo-producer → C0AGT89CSKD, lobster → catch-all
API keysElevenLabs, Pexels, Pixabay, Anthropic, Gemini
Video toolsffmpeg, Python 3.12, Pillow, ImageMagick, yt-dlp, sag
Skillsslack, sag, video-frames, coding-agent, nano-banana-pro
#lobster-testActive
#video-productionArchived
Memory searchGemini embeddings
Runway MLExpired

Overview

Agent IDvideo-producer
ModelClaude Opus 4.6
Channel#video-production (C0AGT89CSKD)
VoiceElevenLabs "Roger" (CwhRBWXzGAHq8TQ4Fs17)
BrandGold #F5B800 + black/white
Output1920x1080, H.264 MP4, 30fps, AAC
Pacing160-185 WPM narration

Production Pipeline

7-step human-in-the-loop. Every step needs Dustin's approval.

1. Script 2. Storyboard 3. Footage 4. Voiceover 5. Assembly 6. Thumbnail 7. Upload

Green = built skill

Steps 1-2: Script & Storyboard

Agent itself (Opus 4.6). Topic → 3 angles → script → shot-by-shot storyboard in Slack thread.

Step 3: Footage

pexels-stock + pixabay-stock skills. Search, preview, download. 1080p+ filter baked in.

Step 4: Voiceover

sag skill. ElevenLabs TTS, Roger voice. Preview via MEDIA: prefix.

Step 5: Assembly

pillow-video-cards + ffmpeg-assembler. Section cards via Pillow, then assemble.py --manifest → final MP4.

Step 6: Thumbnail

pillow-video-cardsthumbnail.py. 1280x720 PNG, bg-color or bg-image.

Step 7: Upload

youtube-upload skill. Resumable upload via YouTube Data API v3.

Scriptsupload.py, set_thumbnail.py, check_quota.py
Depsgoogle-api-python-client, google-auth, google-auth-oauthlib
Env varsYOUTUBE_CLIENT_ID, YOUTUBE_CLIENT_SECRET, YOUTUBE_REFRESH_TOKEN
QuotaUpload=1600, thumbnail=50, list=1 (daily: 10,000)
Category28 (Science & Technology)
Chunk size10MB resumable

Custom Skills

pexels-stock BUILT

scripts/ search_video.py, search_photo.py, download.py, preview.py

Requires PEXELS_API_KEY + requests. API was 503 at test (transient).

pillow-video-cards TESTED

scripts/ section_card.py, intro_slide.py, outro_slide.py, thumbnail.py, text_overlay.py

All 5 tested. Brand: Gold #F5B800, Arial Bold, Impact.

ffmpeg-assembler TESTED

scripts/ assemble.py, normalize.py, concat_clips.py, mix_audio.py, overlay_image.py

normalize.py tested. Full assembly pending real media.

pixabay-stock TESTED

scripts/ search_video.py, search_photo.py, download.py

500 results for "solar energy". stdlib urllib only.

youtube-upload TESTED

scripts/ upload.py, set_thumbnail.py, check_quota.py
references/ youtube_api.md

Resumable upload (10MB chunks). OAuth active — Testing_Gluthoric (UCv0sMGwhWthhXT715pepuxg).

video-generation INSTALLED

ClawHub reference skill. API guides for Runway Gen-4.5, Luma, Kling, Pika, Replicate, Stable Video Diffusion. Agent reads docs and writes API calls.

video-subtitles INSTALLED

scripts/ generate_srt.py

Whisper transcription + SRT generation. Supports --burn for hardcoded subtitles, --translate for language translation.

Why Custom Skills Matter

WithoutWith
Tokens/search400-800~30
Tokens/download200-400~20
10-shot video~16,000+ wasted~500
ErrorsHighNear zero
1080p filterMight forgetBaked in
WITHOUT skill (~600 tokens)
import requests, json, os
API_KEY = os.environ.get("PEXELS_API_KEY")
# ... 20+ lines of boilerplate every time
WITH pexels-stock skill (~30 tokens)
python3 {baseDir}/scripts/search_video.py \
  --query "oil rig sunset" --min-height 1080 --count 5

Test Results

SkillScriptResult
pillow-video-cardssection_card.py1920x1080 PNG
intro_slide.py1920x1080 PNG
outro_slide.py1920x1080 PNG
thumbnail.py1280x720 PNG
text_overlay.py1920x1080 transparent PNG
ffmpeg-assemblernormalize.pyPNG → 1080p MP4
pixabay-stocksearch_video.py500 results
pexels-stocksearch_video.pyAPI 503 (transient)

Technical Constraints

  • No ffmpeg drawtext — no freetype. ALL text via Pillow.
  • Full binary paths/usr/local/bin/{ffmpeg,python3.12,sag}
  • File uploadsMEDIA:/path/to/file in agent replies
  • Normalize clips — 1920x1080@30fps before assembly
  • Roger voice onlyCwhRBWXzGAHq8TQ4Fs17
  • Runway ML broken — expired. Pexels + Pixabay only.

Workspace Map

~/.openclaw/workspace-video/
├── SOUL.md, IDENTITY.md
├── config/{technical_notes,style_guide,demo_context}.md
├── pexels-stock/          # Stock footage
├── pillow-video-cards/    # Text graphics
├── ffmpeg-assembler/      # Video assembly
├── pixabay-stock/         # Backup stock
├── youtube-upload/        # YouTube API (tested)
├── assets/{stock_video,stock_images,music,voiceover}/
└── output/{videos,thumbnails,metadata}/

Overview

The video pipeline needs 6 API keys from different providers. Two of them (Anthropic & OpenAI) are configured via openclaw configure OAuth login. The other four are pasted into ~/.openclaw/openclaw.json as environment variables.

#ProviderPurposeCostSetup Method
1Anthropic (Claude)Video-producer agent brainPay-per-tokenopenclaw configure
2OpenAI (ChatGPT)Lobster agent brainPay-per-tokenopenclaw configure
3ElevenLabsVoice synthesis (TTS)Free tier availableAPI key in config
4PexelsStock video/photosFreeAPI key in config
5PixabayStock video/photos (backup)FreeAPI key in config
6YouTube (GCP)Video uploadsFree (quota limits)OAuth in config

Time estimate: ~30 minutes total. Pexels and Pixabay are instant. ElevenLabs takes 2 minutes. Anthropic and OpenAI each take ~5 minutes. YouTube/GCP is the longest at ~15 minutes due to the OAuth flow.

1. Anthropic (Claude API)

What it's for: Powers the video-producer agent (Claude Opus 4.6). This is the brain that writes scripts, plans storyboards, and orchestrates the entire video pipeline.

Step 1: Create an account

  1. Go to console.anthropic.com
  2. Click "Continue with Google" or enter your email
  3. Verify your email if signing up new

Step 2: Add billing

  1. In the left sidebar, click Billing
  2. Add a credit card (you only pay for what you use)
  3. Set a monthly spend limit if you want (recommended: start with $20)

Typical cost per video: ~$0.50-2.00 depending on script length and revisions.

Step 3: Create an API key

  1. Left sidebar: API keys (under MANAGE)
  2. Click "+ Create Key" (top right)
  3. Name it something like openclaw-travis
  4. Leave workspace as Default
  5. Click Add
  6. Copy the key immediately — it starts with sk-ant-api03- and you won't see it again
Anthropic Console: Click + Create Key, name it, click Add

The Create API Key dialog. Pick a name, leave workspace as Default, click Add.

Save it: Paste the key somewhere safe (password manager, secure note). You'll need it for the openclaw configure step later.

2. OpenAI (ChatGPT API)

What it's for: Powers the lobster agent (GPT-5.3-Codex). This is the general-purpose Slack bot that handles everything except video production.

Step 1: Create an account

  1. Go to platform.openai.com
  2. Sign up or log in with your existing ChatGPT account

Step 2: Add billing

  1. Top-left dropdown: click your org name → Billing
  2. Add a payment method
  3. Set a monthly budget limit (recommended: start with $20)

Step 3: Create an API key

  1. Left sidebar: API keys (under Manage)
  2. Click "+ Create new secret key" (top right)
  3. Owned by: You
  4. Name: openclaw-travis
  5. Project: Default project
  6. Permissions: All
  7. Click "Create secret key"
  8. Copy the key immediately — it starts with sk- and you won't see it again
OpenAI Platform: Click Create new secret key, configure options, click Create

The Create Secret Key dialog. Set name, leave permissions as All, click Create secret key.

Alternative: OpenClaw also supports OpenAI Codex OAuth login (the ChatGPT-based login). During openclaw configure you can choose "OpenAI Codex" and log in with your ChatGPT account instead of pasting an API key. This is what we use on the Momenta Mac.

3. ElevenLabs

What it's for: Text-to-speech voice synthesis. The video pipeline uses ElevenLabs to generate narration audio using the "Roger" voice (CwhRBWXzGAHq8TQ4Fs17).

Step 1: Create an account

  1. Go to elevenlabs.io
  2. Click "Sign Up" (top right) — Google sign-in works
  3. The free tier gives you 10,000 characters/month (enough for ~2-3 short videos)

Step 2: Get your API key

  1. Click your profile icon (bottom-left) → Developers
  2. Or go directly to: elevenlabs.io/app/developers/api-keys
  3. Click the "API Keys" tab
  4. Click "+ Create Key"
  5. Your key will appear in the list — click the copy icon next to it
  6. Make sure the key's Enabled toggle is ON (dark toggle = enabled)
ElevenLabs Developers page showing API Keys tab with Create Key button

The ElevenLabs Developers → API Keys page. Click + Create Key, then toggle it on.

Free tier limits: 10,000 characters/month. For heavier use, the Starter plan ($5/mo) gives 30,000 characters. The video pipeline uses ~1,500-3,000 characters per video narration.

4. Pexels

What it's for: Free stock photos and videos. The pexels-stock skill searches and downloads HD/4K footage for video B-roll.

Step 1: Create an account

  1. Go to pexels.com
  2. Click "Join" (top right) — Google sign-in works

Step 2: Get your API key

  1. Go to pexels.com/api
  2. Click "Your API Key"
  3. If this is your first time, you'll fill out a short form:
    • What are you building? → "AI video production tool"
    • URL → can be anything (your website, GitHub, etc.)
  4. After submitting, your key appears on the page at pexels.com/api/key
  5. Copy the long alphanumeric string from the text box

Completely free. 200 requests/hour, 20,000 requests/month. No credit card needed. If you need more, email api@pexels.com.

5. Pixabay

What it's for: Backup stock photos and videos. The pixabay-stock skill is used when Pexels is down or doesn't have the right footage.

Step 1: Create an account

  1. Go to pixabay.com
  2. Click "Join" (top right)
  3. Sign up with email or Google

Step 2: Get your API key

  1. Go to pixabay.com/api/docs
  2. If you're logged in, your API key is shown directly on the page in a green highlighted box next to "Your API key:"
  3. It's in the "Parameters" section under "Search Images" — scroll down to find it
  4. Copy the key (it's a long alphanumeric string like 12345678-abcdef...)

Completely free. 100 requests per 60 seconds. No credit card needed. Results must be cached for 24 hours per their terms.

6. YouTube (Google Cloud)

What it's for: Uploading finished videos to YouTube via the Data API v3. This is the most complex setup because it requires creating a Google Cloud project and going through an OAuth flow.

This is optional. You only need this if you want the bot to upload videos directly to YouTube. You can skip this and upload manually if you prefer.

Step 1: Create a GCP project

  1. Go to console.cloud.google.com
  2. Sign in with the Google account you want to use
  3. Click the project dropdown (top bar, next to "Google Cloud")
  4. Click "New Project"
  5. Name: openclaw-yt-travis
  6. Click Create
  7. Wait ~30 seconds, then select the new project from the dropdown

Step 2: Enable the YouTube Data API

  1. In the left sidebar: APIs & ServicesLibrary
  2. Search for "YouTube Data API v3"
  3. Click it, then click Enable

Step 3: Configure OAuth consent screen

  1. Left sidebar: APIs & ServicesOAuth consent screen
  2. User type: External → Create
  3. Fill in the required fields:
    • App name: OpenClaw Video Upload
    • User support email: your email
    • Developer contact: your email
  4. Click Save and Continue through the remaining steps (Scopes, Test Users, Summary)
  5. On the Test Users step, add your own Gmail/Google email as a test user

Step 4: Create OAuth credentials

  1. Left sidebar: APIs & ServicesCredentials
  2. Click "+ Create Credentials"OAuth client ID
  3. Application type: Desktop app
  4. Name: openclaw-desktop
  5. Click Create
  6. A dialog appears with your Client ID and Client Secret — copy both

Step 5: Get a refresh token

Run the OAuth flow on your machine to get a refresh token:

pip3 install google-auth google-auth-oauthlib google-api-python-client

Create a file called get_token.py:

from google_auth_oauthlib.flow import InstalledAppFlow

flow = InstalledAppFlow.from_client_config(
    {
        "installed": {
            "client_id": "YOUR_CLIENT_ID",
            "client_secret": "YOUR_CLIENT_SECRET",
            "auth_uri": "https://accounts.google.com/o/oauth2/auth",
            "token_uri": "https://oauth2.googleapis.com/token"
        }
    },
    scopes=["https://www.googleapis.com/auth/youtube.upload",
            "https://www.googleapis.com/auth/youtube"]
)
creds = flow.run_local_server(port=8080)
print(f"\nRefresh Token: {creds.refresh_token}")
print(f"Access Token:  {creds.token}")

Run it:

python3 get_token.py
  1. A browser window opens — sign in with your YouTube account
  2. Click "Continue" through the consent screen (it'll warn about unverified app — click "Advanced" → "Go to OpenClaw Video Upload")
  3. Grant access
  4. Copy the Refresh Token from the terminal output

Important: The app stays in "Testing" mode, which means tokens expire every 7 days. You'll need to re-run get_token.py weekly, or submit your app for Google verification (takes days/weeks). For testing this is fine.

Configure OpenClaw

Now that you have all your keys, let's plug them into OpenClaw.

Method 1: openclaw configure (Anthropic & OpenAI)

Run the interactive configurator:

openclaw configure

Navigate to: ModelAnthropic

  • Choose "API Key" when prompted
  • Paste your Anthropic API key (sk-ant-api03-...)

Then navigate to: ModelOpenAI

  • Choose "OpenAI Codex (ChatGPT OAuth)" for the easiest login
  • A browser window opens — log in with your ChatGPT account
  • Or choose "API Key" and paste your sk-... key

Method 2: Manual config file (all other keys)

Open the OpenClaw config file:

nano ~/.openclaw/openclaw.json

Add or update the env section with your keys:

{
  "env": {
    "ANTHROPIC_API_KEY": "sk-ant-api03-YOUR-KEY-HERE",
    "ELEVENLABS_API_KEY": "YOUR-ELEVENLABS-KEY",
    "PEXELS_API_KEY": "YOUR-PEXELS-KEY",
    "PIXABAY_API_KEY": "YOUR-PIXABAY-KEY",
    "YOUTUBE_CLIENT_ID": "YOUR-GCP-CLIENT-ID.apps.googleusercontent.com",
    "YOUTUBE_CLIENT_SECRET": "YOUR-GCP-CLIENT-SECRET",
    "YOUTUBE_REFRESH_TOKEN": "YOUR-REFRESH-TOKEN"
  }
}

Only add the keys you have. The file already has other settings — just add/update the env block.

Security: Never commit openclaw.json to git. Never share your API keys in Slack, email, or screenshots. If a key leaks, rotate it immediately on the provider's dashboard.

Verify Everything Works

After configuring all keys, run the OpenClaw doctor to verify:

openclaw doctor

You should see green checks for all configured providers. Then test each one:

Test Anthropic

# In Slack, message the bot:
@lobster what model are you using?

# Or test directly:
curl -s https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-4-6","max_tokens":10,"messages":[{"role":"user","content":"hi"}]}' \
  | head -c 200

Test ElevenLabs

curl -s "https://api.elevenlabs.io/v1/user" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" | python3 -m json.tool

Should return your account info with character limits.

Test Pexels

curl -s "https://api.pexels.com/v1/search?query=solar+energy&per_page=1" \
  -H "Authorization: $PEXELS_API_KEY" | python3 -m json.tool

Should return a JSON response with photo results.

Test Pixabay

curl -s "https://pixabay.com/api/?key=$PIXABAY_API_KEY&q=solar+energy&per_page=3" \
  | python3 -m json.tool

Should return a JSON response with totalHits and image results.

Test YouTube

# Uses the youtube-upload skill's check_quota.py:
python3 ~/.openclaw/workspace-video/youtube-upload/scripts/check_quota.py

Should show your channel name and remaining quota.

All set! Once all tests pass, the video pipeline is ready. Try sending a message to #video-production in Slack to kick off your first video.

Quick Reference

KeyEnv VarWhere to Get It
AnthropicANTHROPIC_API_KEYconsole.anthropic.com/settings/keys
OpenAIOPENAI_API_KEYplatform.openai.com/api-keys
ElevenLabsELEVENLABS_API_KEYelevenlabs.io/app/developers/api-keys
PexelsPEXELS_API_KEYpexels.com/api/key
PixabayPIXABAY_API_KEYpixabay.com/api/docs
YouTube Client IDYOUTUBE_CLIENT_IDGCP Console → Credentials
YouTube Client SecretYOUTUBE_CLIENT_SECRETSame as above
YouTube Refresh TokenYOUTUBE_REFRESH_TOKENOAuth flow (get_token.py)
DateChange
2026-02-25Full wipe and fresh OpenClaw install (v2026.2.25)
2026-02-25Configured lobster + video-producer agents with Slack routing
2026-02-25API keys migrated from backup (Pexels, Pixabay, ElevenLabs, Anthropic)
2026-02-25Custom skills: pexels-stock, pillow-video-cards, ffmpeg-assembler, pixabay-stock
2026-02-26Added GEMINI_API_KEY — fixed memory search + unlocked nano-banana-pro
2026-02-26Skills 10/51 ready. Full sanity check passed.
2026-02-26Docs redesigned: sidebar nav, dashboard landing, separate pages
2026-02-26youtube-upload skill built + tested (Testing_Gluthoric channel)
2026-02-26GCP project openclaw-yt-2026 created, YouTube OAuth completed
2026-02-26ClawHub: installed video-generation (Runway/Luma/Kling/Pika guides) + video-subtitles (Whisper SRT)
2026-02-26Pipeline audit: ElevenLabs PASS (3 Roger variants), Pixabay PASS, YouTube PASS, Pexels 503 (their outage)
2026-02-27Added API Keys Setup guide page for Travis (Anthropic, OpenAI, ElevenLabs, Pexels, Pixabay, YouTube OAuth)