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