thought-leadership-video
Generate and post thought leadership videos using HeyGen and distribute to multiple platforms.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Generate and post thought leadership videos using HeyGen and distribute to multiple platforms.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Multi-layered security system protecting against prompt injection, secret extraction, and malicious content. Based on defense-in-depth principles.
Cognitive control memory system based on "On Task" by David Badre. Handles input gating, output gating, hierarchical memory, and procedural runbooks.
Manage Facebook Pages and Instagram Business via Meta Graph API. Post content (text, photos, videos, reels), list posts, manage comments. Use for social media publishing.
Microsoft Graph API email access for Microsoft 365 accounts via direct API calls.
Publish and manage blog posts on WordPress sites via REST API. Supports creating posts, drafts, uploading media, and managing categories/tags.
| name | thought-leadership-video |
| description | Generate and post thought leadership videos using HeyGen and distribute to multiple platforms. |
A complete pipeline for generating AI avatar videos and distributing them across social platforms.
Keep scripts TTS-optimized:
Store HeyGen credentials in keychain:
security add-generic-password -s "openclaw-heygen" -a "heygen" \
-w '{"api_key":"your_api_key","avatar_id":"your_avatar_id","voice_id":"your_voice_id"}' -U
API Call:
import requests, json, subprocess
# Get credentials
result = subprocess.run(['security', 'find-generic-password', '-s', 'openclaw-heygen', '-w'], capture_output=True, text=True)
creds = json.loads(result.stdout.strip())
# Generate video
response = requests.post(
'https://api.heygen.com/v2/video/generate',
headers={'X-Api-Key': creds['api_key'], 'Content-Type': 'application/json'},
json={
'video_inputs': [{
'character': {'type': 'avatar', 'avatar_id': creds['avatar_id']},
'voice': {'type': 'audio', 'voice_id': creds['voice_id']},
'script': {'type': 'text', 'input': 'Your script here'}
}],
'dimension': {'width': 1080, 'height': 1920},
'caption': True # Bakes captions into video
}
)
video_id = response.json()['data']['video_id']
Poll for completion, then use video_url_caption (not video_url) for baked-in captions:
# Poll status
status = requests.get(
f'https://api.heygen.com/v1/video_status.get?video_id={video_id}',
headers={'X-Api-Key': creds['api_key']}
).json()
if status['data']['status'] == 'completed':
video_url = status['data']['video_url_caption'] # With captions
Cloudflare R2 example:
wrangler r2 object put your-bucket/video.mp4 \
--file=video.mp4 \
--content-type=video/mp4 \
--remote
Instagram and Threads require public URLs (not local files).
{
"client_id": "your_client_id.apps.googleusercontent.com",
"client_secret": "your_client_secret",
"refresh_token": "your_refresh_token"
}
⚠️ Tokens expire — refresh before EVERY upload:
requests.post('https://oauth2.googleapis.com/token', data={
'client_id': creds['client_id'],
'client_secret': creds['client_secret'],
'refresh_token': creds['refresh_token'],
'grant_type': 'refresh_token'
})
Keychain: openclaw-linkedin
⚠️ Uses camelCase keys:
accessToken (not access_token)linkedinId (not linkedin_id)Person URN: urn:li:person:{linkedinId}
{
"PAGE_ID": "your_page_id",
"PAGE_ACCESS_TOKEN": "your_page_token"
}
Native chunked upload (start → transfer → finish).
Same credentials as Facebook:
IG_USER_IDPAGE_ACCESS_TOKEN⚠️ Requires public URL (not local file)
{
"THREADS_USER_ID": "your_threads_id",
"THREADS_ACCESS_TOKEN": "your_threads_token"
}
⚠️ Requires public URL (not local file) ⚠️ Wait 45+ seconds for video processing (20s will fail)
Store your platform IDs in a config file or TOOLS.md:
platforms:
youtube:
channel_id: "your_channel_id"
facebook:
page_id: "your_page_id"
instagram:
user_id: "your_ig_user_id"
threads:
user_id: "your_threads_user_id"
linkedin:
person_id: "your_linkedin_id"
Establish a consistent schedule:
Stagger posts across platforms:
video_url_caption)caption: true to bake captions into the video