jk-archivist-tiktok-skill
// Generate deterministic 6-slide portrait PNG slideshow assets plus caption text for TikTok-style posting workflows, including reusable templates and a strict validation pipeline.
JK 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