OpenClaw Skillv1.6.0

TikTok Packager

JK-Archivistby JK-Archivist
Deploy on EasyClawdfrom $14.9/mo

Generate deterministic 6-slide portrait PNG slideshow assets plus caption text for TikTok-style posting workflows, including reusable templates and a strict...

How to use this skill

OpenClaw skills run inside an OpenClaw container. EasyClawd deploys and manages yours — no server setup needed.

  1. Sign up on EasyClawd (2 minutes)
  2. Connect your Telegram bot
  3. Install TikTok Packager from the skills panel
Get started — from $14.9/mo
5stars
467downloads
0comments
3versions

Latest Changelog

Version 1.6.0 introduces audience, CTA, hashtag, internationalization, and A/B testing controls, along with pipeline upgrades.

- Added support for audience modes, call-to-action (CTA) packs, hashtag policies, and localization options.
- New A/B test variant generation via ab_test config.
- Expanded core commands: `--audience`, `--cta-pack`, `--hashtag-policy`, `--locale`, `--ab-test`, `--resume-upload`, `--max-retries`, `--timeout-ms`, `--verbose`.
- Modularized codebase with new content adaptation, localization, hooks, logging, and variant generation modules.
- Output structure now includes review materials, run/upload logs, and more metadata.
- Enhanced customization and safer output via policy-driven caption/hashtag controls.

Tags

latest: 1.6.0

Skill Documentation

---
name: jk-archivist-tiktok-skill
description: Generate deterministic 6-slide portrait PNG slideshow assets plus caption text for TikTok-style posting workflows, including reusable templates and a strict validation pipeline.
homepage: https://github.com/J-a-m-e-s-o-n/jk-archivist-tiktok-skill
metadata: {"openclaw":{"emoji":"🎬","requires":{"bins":["node","python3"]}}}
---

# 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

1. Install dependencies:
   - `python3 -m pip install -r requirements.txt`
2. Optional font override:
   - `export TIKTOK_FONT_PATH=/absolute/path/to/font.ttf`
3. 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:

- `intro`
- `educational`
- `product-update`
- `announcement`

Style options:

- `default`
- `high-contrast`
- `clean`
- `midnight`

Audience options:

- `beginner`
- `operator`
- `expert`

CTA pack options:

- `follow-focused`
- `link-focused`
- `engagement-focused`

Hashtag policy options:

- `tcg-default`
- `general`

## Core Output Contract

- Exactly 6 slides
- 1024x1536 portrait
- PNG output format
- Large readable text with safe margins

Expected layout:

```text
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 `slides` array content (via `--spec` JSON or topic mode)
- The caption template in `src/node/write-caption.mjs`
- Hashtag/CTA policy in `src/node/hashtags` and `src/node/cta`
- Audience adaptation in `src/node/audience`
- Optional Postiz env vars if enabling `--postiz`

Spec format:

```json
{
  "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|operator|expert` |
| 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|style|template` |
| 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_ONLY`
- `content_posting_method = UPLOAD`

### Slide Copy (Exact)

1. The trading card market runs on messy data.
2. Prices fragment. Condition drifts. Signals lie.
3. Collectors make real decisions on incomplete info.
4. JK Index = market intelligence for TCGs.
5. Truth first. No guessing. Built in public.
6. 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_KEY`
- `POSTIZ_TIKTOK_INTEGRATION_ID`

Optional:

- `POSTIZ_BASE_URL` (defaults to `https://api.postiz.com/public/v1`)
- `TIKTOK_FONT_PATH` (absolute `.ttf` path)

## References

- `references/setup.md`
- `references/spec-schema.md`
- `references/renderer-spec.md`
- `references/outputs-and-validation.md`
- `references/troubleshooting.md`
- `references/publish-checklist.md`
- `examples/sample-slide-spec.json`
Security scan, version history, and community comments: view on ClawHub