openquok-tiktok-slideshow
Lightweight creator pipeline — research any channel, lock a character profile plus reference images, generate portrait slides, overlay text, and post via openquok-core.
Connect your agent today
Draft from chat, review in your calendar, and publish only what you approve.
Overview
openquok-tiktok-slideshow is a sibling skill for any niche or channel persona — not an App Store product funnel. The loop is:Research channel → lock character → generate frames → text overlay → post via openquok.
It requires openquok-core and the global openquok CLI. Uploads and create go through core recipes (media Rule 2, TikTok photo carousel, preferred private draft).
| Property | Value |
|---|---|
| Skill name | openquok-tiktok-slideshow |
| Requires | openquok-core, Node 18+, canvas (overlays), image provider key |
| Source | agent/skills/openquok-tiktok-slideshow/ |
| Playbook | Viral TikTok Carousel |
Does not replace openquok-core
Install and authenticate openquok-core first. This skill only adds pipeline scripts; it does not ship the CLI or channel recipes.
Install (Copy required)
Scripts must land as real files:
npx skills add https://github.com/Ratimon/openquok-monorepo/tree/main/agent --skill openquok-tiktok-slideshow --copy -y Interactive installs: Project scope + Copy. Hermes: copy the full skill folder (a URL install of SKILL.md alone omits scripts/ and references/).
Prerequisites
| Need | Notes |
|---|---|
| openquok-core + global CLI | Auth, upload, posts:create — see CLI getting started |
| Node.js 18+ | All scripts under scripts/ |
| canvas | Native deps for add-text-overlay.js — see below |
| Image provider | Prefer OpenAI gpt-image-1.5 (not gpt-image-1); or Stability / Replicate / local images |
| TikTok (or other) integration | Connected in the workspace; UUID from openquok integrations:list |
| New or cold TikTok account | Warm up 7–14 days before heavy posting — warm-up guide |
openquok --version
openquok auth:status Install canvas (overlays)
From the skill install directory (or any Node project that can require(‘canvas’) for the overlay script):
npm install canvas canvas needs platform-native libraries. Follow the upstream install guide for your OS: node-canvas compiling. Pipeline
Account warmup (new or cold accounts)
If the TikTok account is new or barely used, follow How to warm up a TikTok account to reach a US audience for 7–14 days before you schedule AI slideshows or scale posting. Established accounts can skip straight to channel intent.
Account warmup (optional)
New or cold accounts: use the warm-up guide (device region, VPN consistency, normal browsing, first posts) before the generate → post pipeline below.
Channel intent
Define niche, audience pain, handle ideas, and platforms (TikTok and/or others). This is a creator/channel workspace — not an App Store or mobile-app profile.
Research any channel
Find peer accounts in the niche: hooks, formats, sounds, gaps. Save with scripts/competitor-research.js → channel-research.json. Guide in the skill: references/competitor-research.md.
Lock character
Fill character-profile.json from the neutral template (character-profile.template.json):
- LOCKED — identity, face (including distinctive marks), body, signature accessory, conflict rule — immutable after approval
- VARIATIONS — outfit, pose, expression, setting, visual style, framing — safe to change per post
Generate and save face_lock / body_lock under refs/. Never change locks after approval. Details: references/character-lock.md. Six-slide formula: references/slide-structure.md.
OpenQuok channel
- Confirm auth (openquok auth:status)
- openquok integrations:list → store UUID(s) on
openquok.integrationId - Prefer a private draft: privacyLevel
SELF_ONLY, contentPostingMethodDIRECT_POSTso a human can add trending audio before going public — same pattern as TikTok CLI examples
Scaffold + run scripts
node scripts/onboarding.js --init --dir tiktok-marketing/
node scripts/onboarding.js --validate --config tiktok-marketing/config.json Then generate → overlay → post (below). Iterate a test set of six frames until the look is locked — do not post until you are happy.
Config shape
Workspace data lives outside the skill folder (for example tiktok-marketing/):
{
"channel": {
"name": "",
"handle": "",
"niche": "",
"audience": "",
"painPoint": "",
"platforms": ["tiktok"]
},
"character": {
"profilePath": "tiktok-marketing/character-profile.json",
"referenceImages": {
"faceLock": "tiktok-marketing/refs/face-lock.png",
"bodyLock": "tiktok-marketing/refs/body-lock.png"
}
},
"imageGen": {
"provider": "openai",
"apiKey": "",
"model": "gpt-image-1.5"
},
"openquok": {
"integrationId": "",
"status": "scheduled",
"privacyLevel": "SELF_ONLY",
"contentPostingMethod": "DIRECT_POST",
"scheduledAt": null,
"title": ""
},
"posting": { "schedule": ["07:30", "16:30", "21:00"] },
"research": "tiktok-marketing/channel-research.json",
"strategy": "tiktok-marketing/strategy.json"
} Core scripts
Generate slideshow images
node scripts/generate-slides.js
--config tiktok-marketing/config.json
--output tiktok-marketing/posts/YYYY-MM-DD-HHmm/
--prompts prompts.json When character.profilePath is set, the script prepends the LOCKED block and merges VARIATIONS. OpenAI attaches face/body lock images when those files exist. Portrait 1024x1536; set exec timeout ≥ 600s for six gpt-image-1.5 images.
Add text overlays
node scripts/add-text-overlay.js
--input tiktok-marketing/posts/YYYY-MM-DD-HHmm/
--texts texts.json Requires canvas. Six-slide formula: Hook → Problem → Discovery → Transform ×2 → CTA. No emoji in overlay text.
Post via openquok
node scripts/post-via-openquok.js
--config tiktok-marketing/config.json
--dir tiktok-marketing/posts/YYYY-MM-DD-HHmm/
--caption "…"
--title "Short title" Under the hood: openquok upload each slide → openquok posts:create --json TikTok photo carousel. Default privacy is SELF_ONLY.
Optional analytics after publish (via core, not this skill):
openquok analytics:platform <integration-uuid> --days 7 Quick reference
| Script | Purpose |
|---|---|
| scripts/onboarding.js | --init / --validate workspace |
| scripts/competitor-research.js | Channel research JSON helpers |
| scripts/generate-slides.js | Six portrait frames from locked profile |
| scripts/add-text-overlay.js | Canvas text overlays |
| scripts/post-via-openquok.js | Upload + TikTok carousel create |
Common mistakes
| Mistake | Fix |
|---|---|
| Landscape 1536×1024 | Portrait 1024×1536 |
| Symlink skill install | Reinstall with --copy |
| Raw local paths in posts:create | Always openquok upload first (core Rule 2) |
| Public direct post with no sound | Prefer SELF_ONLY draft → add trending audio in-app |
| gpt-image-1 | Switch to gpt-image-1.5 |
| Skipping warmup on a new account | Warm 7–14 days first — warm-up guide |
| Changing face/body after lock | Keep LOCKED + ref images fixed; only edit VARIATIONS |