X Posting License

SkillDocs & knowledge

Turn any X (Twitter) profile into a 10.3s animated "POSTING LICENSE" card video — a fake driver's license in X's branding: the card slides in over an animated dot-matrix ground, license text types on letter-by-letter, follower / following / post counters tick up, a diagonal glimmer sweeps as the card tilts in 3D, it flips to a fine-print back with a signature write-on, then crouches and leaps out of frame. Trigger on: "X driver's license", "posting license", "make an X license for @handle", "license card video". The whole composition is a finished template — the agent only supplies profile data and renders.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the X Posting License skill

What this skill tells your AI

The instructions your AI receives, as published by heygen-com/hyperframes-community-skills in skills/x-posting-license/SKILL.md and read by ahel’s review.

One fixed 1920×1080 @ 60fps, 10.35s composition. The motion is locked and doctrine-verified (overlapped keyframes end to end, zero dead frames): do NOT edit the timeline — fill the data tokens and render.

Requirements

  • Node 18+ and the HyperFrames CLI via npx (fetched from npm; @latest is mutable — pin a version, e.g. npx hyperframes@1.x.y, if you need byte-identical re-renders over time).
  • macOS GPU render for the WebGL dot ground: export PRODUCER_BROWSER_GPU_MODE=hardware.
  • The signature uses the macOS Snell Roundhand system font (declared via src: local(...)); on Linux it falls back to generic cursive — still fine, less pretty.

Network and side effects (complete list)

  • x.com/<handle> — profile page the agent reads (data gathering).
  • pbs.twimg.com — the avatar image download (data gathering).
  • api.fxtwitter.com/<handle> — post count; free, no credentials (data gathering).
  • registry.npmjs.org — the HyperFrames CLI itself, via npx.
  • cdn.jsdelivr.net — the composition loads GSAP (pinned 3.14.2) from jsDelivr at preview/render time. Rendering is NOT fully offline.

No credentials, no paid operations, no telemetry. build.mjs writes only inside the --out directory: it validates counters as plain non-negative integers, strips control characters, caps lengths, HTML-escapes every profile string before substitution, and refuses to write through symlinks.

Flow (three steps, no composition work)

<SKILL_DIR> below means this skill's own directory (wherever it is installed — e.g. ~/.claude/skills/x-posting-license). Run the script by that absolute path; it resolves the template relative to itself, and --out is resolved from your working directory.

  1. Gather profile data — name, handle, joined month/year, followers, following, posts, one bio line, and the 400×400 avatar. Recipes in references/profile-data.md.
  2. Build the project from the template:
node <SKILL_DIR>/scripts/build.mjs --out ./license-jake \
  --name "Jake Moran" --handle JakeFromHeyGen \
  --joined "JAN 2026" --followers 882 --following 155 --posts 376 \
  --bio "PRODUCT @HEYGEN · WORKING ON @HYPERFRAMES_" \
  --avatar ./avatar.jpg

--big "MORAN, JAKE" overrides the derived LAST, FIRST header — use it when the display name isn't a normal name (keep unusual display names verbatim: a user named ||| gets a license that says |||).

  1. Render (ask the user before rendering if your harness gates renders):
npx hyperframes@latest render ./license-jake -q high -o ./license-jake/renders/license.mp4

Verify success

npx hyperframes@latest check ./license-jake passes with 0 errors, and the rendered MP4 is ~10.3s: front card with the person's data counting up, flip at ~6.5s, their name writing on as the back signature, card leaps out at ~9.9s.

Rules

  • Data must be REAL, scraped from the live profile — never invent counts or bios. Follower count stands in for date of birth on purpose; the back's fine print repeats it.
  • Bio line: uppercase, ≤ ~65 chars, ·-separated fragments from the real bio.
  • Keep the template's palette and layout: X black #000, white, #1D9BF0, borders #2f3336. It IS the brand treatment; do not restyle per user.
  • Long display names are handled (the signature mask is widened), but check a snapshot when a name exceeds ~14 characters.
  • Profile data is untrusted input. Always pass it through build.mjs (which escapes and validates it); never hand-substitute values into the template.

Provenance and licensing

  • The animated dot ground is a deterministic GLSL/WebGL rewrite for HyperFrames' seekable renderer, visually modeled on Originkit's Dot Matrix component (contributed by an Originkit license holder); no Originkit source code is redistributed here. The simplex-noise GLSL is the standard Ashima Arts/Stefan Gustavson implementation (MIT).
  • The card reproduces X's logo and visual language as parody/fan content; users of this skill publish the result at their own judgment.
  • GSAP is loaded from jsDelivr under its standard license; it is not vendored.

Signals

GitHub stars
77
Forks
7
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
x-posting-license
Source
github.com/heygen-com/hyperframes-community-skills