🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

TikTok Packager

by @jk-archivist

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

Versionv1.6.0
Downloads1,398
Stars⭐ 5
TERMINAL
clawhub install jk-archivist-tiktok-packager

πŸ“– About This Skill


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
  • --timeout-ms
  • --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:

    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:

    {
      "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
  • πŸ’‘ Examples

    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
  • --timeout-ms
  • --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