TikTok Packager
Generate deterministic 6-slide portrait PNG slideshow assets plus caption text for TikTok-style posting workflows, including reusable templates and a strict...
JK-Archivist
@jk-archivist
What This Skill Does
Generates deterministic 6-slide portrait PNG slideshow assets plus caption text for TikTok-style posting workflows, using reusable templates and a strict validation pipeline. Accepts slide copy via JSON spec, topic prompt, or direct text input, and outputs organized assets with optional Postiz upload integration.
Replaces manual slide creation and inconsistent asset generation by producing repeatable, validated 6-slide PNG sequences with matching captions from a single command.
When to Use It
- Create a repeatable 6-slide brand intro sequence for TikTok
- Generate educational mini-explainer slides from a topic prompt
- Produce product update announcement slides with consistent formatting
- Build story-driven announcement sequences with custom slide copy
- Output validated PNG slides and caption text for automated posting pipelines
- A/B test different caption CTAs or visual styles on the same slide content
Install
$ openclaw skills install @jk-archivist/jk-archivist-tiktok-packagerJK Archivist TikTok Skill
Generate deterministic, text-driven 6-slide portrait slideshow assets for TikTok-style content.
What This Skill Is For
Use this skill when you want:
- Repeatable 6-slide visual posts without external image generation
- Consistent dimensions and readable layout for short-form platforms
- A simple contract: input slide copy -> validated PNG outputs + caption text
- A base that can later plug into draft upload workflows (for example via Postiz)
Typical use cases:
- Brand or creator intro slides
- Educational mini explainers
- Product update snapshots
- Story-driven announcement sequences
Quick Start
- Install dependencies:
python3 -m pip install -r requirements.txt
- Optional font override:
export TIKTOK_FONT_PATH=/absolute/path/to/font.ttf
- Run:
node scripts/tiktok-intro-draft.mjs
Custom input modes:
- Use your own 6-slide copy file:
node scripts/tiktok-intro-draft.mjs --spec /absolute/path/to/spec.json
- Ask the agent to generate copy from a topic:
node scripts/tiktok-intro-draft.mjs --topic "your topic"
- Optional Postiz draft upload:
node scripts/tiktok-intro-draft.mjs --postiz
Advanced modes:
--template intro|educational|product-update|announcement--style default|high-contrast|clean|midnight--audience beginner|operator|expert--cta-pack follow-focused|link-focused|engagement-focused--hashtag-policy tcg-default|general--locale en|es|fr--ab-test caption-cta|style|template--dry-run(write spec/review only, skip render/upload)--postiz-only(reuse existing rendered slides, upload only)--no-upload(force local-only even with--postiz)--resume-upload(resume partially uploaded runs)--max-retries <n>--timeout-ms <n>--verbose
Template options:
introeducationalproduct-updateannouncement
Style options:
defaulthigh-contrastcleanmidnight
Audience options:
beginneroperatorexpert
CTA pack options:
follow-focusedlink-focusedengagement-focused
Hashtag policy options:
tcg-defaultgeneral
Core Output Contract
- Exactly 6 slides
- 1024x1536 portrait
- PNG output format
- Large readable text with safe margins
Expected layout:
outbox/tiktok/intro/YYYY-MM-DD/
_slide_spec.json
_render_metadata.json
slides/slide_01.png ... slide_06.png
caption.txt
review/review.md
review/contact_sheet.png
run_log.json
upload_state.json (optional)
postiz_response.json (optional)
What Can Be Customized
- Slide text (any 6-line narrative)
- Font via
TIKTOK_FONT_PATH - Caption behavior via template + CTA + hashtags
- Audience mode and localization
- A/B variant strategy
- Optional Postiz upload controls
To customize for your use case, change:
- The
slidesarray content (via--specJSON or topic mode) - The caption template in
src/node/write-caption.mjs - Hashtag/CTA policy in
src/node/hashtagsandsrc/node/cta - Audience adaptation in
src/node/audience - Optional Postiz env vars if enabling
--postiz
Spec format:
{
"slides": [
"Slide line 1",
"Slide line 2",
"Slide line 3",
"Slide line 4",
"Slide line 5",
"Slide line 6"
],
"caption": "Optional caption override",
"template": "intro",
"audience": "operator",
"ctaPack": "follow-focused",
"hashtagPolicy": "tcg-default",
"hashtagOverrides": ["#customtag"],
"locale": "en",
"ab_test": {
"strategy": "caption-cta"
},
"style": {
"preset": "default"
}
}
Customization Matrix
| Need | Option |
|---|---|
| Use your own exact slide copy | --spec /path/spec.json |
| Generate deterministic copy from a topic | --topic "your topic" |
| Use a built-in narrative structure | --template educational (or others) |
| Change visual style | --style high-contrast |
| Adjust reading complexity for target viewers | `--audience beginner |
| Change CTA behavior | --cta-pack ... |
| Apply hashtag policy | --hashtag-policy ... |
| Add custom hashtags | --hashtag #customtag (repeatable) |
| Localize CTA text | --locale es |
| Generate multiple candidates | `--ab-test caption-cta |
| Keep local-only output | run without --postiz or add --no-upload |
| Upload optional draft via Postiz | --postiz with required env vars |
| Resume partial uploads | --postiz --resume-upload |
| Tune network/upload behavior | --max-retries N --timeout-ms N |
| Validate pipeline without rendering/upload | --dry-run |
Preset: JK Archivist Intro (Exact Contract)
Objective
Generate a deterministic 6-slide TikTok intro slideshow (PNG) + caption and (optionally) upload as a TikTok draft/private post using Postiz. Human publishes manually after selecting trending sound.
Draft/Private Upload Rules (Optional)
privacy_level = SELF_ONLYcontent_posting_method = UPLOAD
Slide Copy (Exact)
- The trading card market runs on messy data.
- Prices fragment. Condition drifts. Signals lie.
- Collectors make real decisions on incomplete info.
- JK Index = market intelligence for TCGs.
- Truth first. No guessing. Built in public.
- Alpha today. Compounding weekly. Brick by brick. ๐๐งฑ
Caption Template (Exact)
TCG prices look certain โ until you zoom in. JK Index is building the truth layer: clean IDs, real comps, market signals. Follow if you want collector-first market intelligence. ๐๐งฑ
#pokemon #tcg #cardcollecting #marketdata #startup
Safety / Never Do
- No token mentions
- No
$ - No buy/sell language
- No predictions
- No copyrighted character art
- No unverified superlatives (e.g., "guaranteed", "most accurate")
Required/Optional Environment Variables
Required for optional upload mode:
POSTIZ_API_KEYPOSTIZ_TIKTOK_INTEGRATION_ID
Optional:
POSTIZ_BASE_URL(defaults tohttps://api.postiz.com/public/v1)TIKTOK_FONT_PATH(absolute.ttfpath)
References
references/setup.mdreferences/spec-schema.mdreferences/renderer-spec.mdreferences/outputs-and-validation.mdreferences/troubleshooting.mdreferences/publish-checklist.mdexamples/sample-slide-spec.json
Top skills in this category
Nano Banana Pro
@steipeteGenerate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.
AdMapix
@fly0pantsAdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling ag...
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
SuperDesign
@mpociotExpert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.
Video Frames
@steipeteExtract frames or short clips from videos using ffmpeg.