Tweet Replicate
SkillWeb & browsingRebuild a public X/Twitter status into a deterministic local replica with frozen assets, HTML/CSS, Playwright capture, MP4, and GIF. Trigger on replicate tweet, X post to MP4, make tweet GIF, or freeze status locally. Do NOT use for text extraction, auth pages, or DMs.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Tweet Replicate skill
What this skill tells your AI
The instructions your AI receives, as published by jpcaparas/skills in skills/creative/tweet-replicate/SKILL.md and read by ahel’s review.
Freeze a public X/Twitter post into a rerenderable local build that always emits a high-quality tweet-replica.mp4 master and a companion tweet-replica.gif preview, with only the GIF kept under 24 MB.
Verified against live public statuses on April 9, 2026.
Call-Bluff First
Do not promise a browser-level or forever-stable clone of X. X can change layout, metrics drift, media URLs expire, and the local renderer is intentionally deterministic rather than a replay of X's private renderer.
What this skill does well:
- capture a public status into a frozen
snapshot.json - download the avatar and primary media locally at the highest available quality
- rebuild the tweet chrome in deterministic local HTML/CSS
- record the replica viewport with Playwright without creating a larger padded stage around the tweet
- export a high-quality MP4 master and a companion GIF in the same directory
Decision Tree
- If the user wants one public X/Twitter post rebuilt as local video assets, run
scripts/render_tweet_replica.py. - If they only need tweet text, metrics, or media URLs, use a text/media extraction workflow instead of this skill.
- If they only need the raw media file, use a media downloader instead of this skill.
- If they want a live browser capture of X itself, stop and explain that this skill is for deterministic local replicas, not recordings of the real X UI.
- If they need full threads, deep quote stacks, carousels, or authenticated states, explain that this version supports one public status plus one nested quoted post card.
Default Save Path Rule
When the user does not give a destination, propose ./pieces/ first. If they agree or do not care, run with --save-root ./pieces or let the script default to the current working directory's pieces/ folder.
The generated build layout stays the same:
<save-root>/tweet-replicate-status-<id>-<timestamp>/
assets/
snapshot.json
tweet-replica.html
capture.webm
tweet-replica.mp4
tweet-replica.gif
Quick Reference
| Task | Command | Why |
|---|---|---|
| Render from a status URL into the default designated save root | python3 scripts/render_tweet_replica.py 'https://x.com/.../status/...' --save-root ./pieces | Creates a rerenderable build folder under ./pieces/ with a high-quality MP4 master |
| Re-render the same frozen post later | python3 scripts/render_tweet_replica.py ./tweet-build/snapshot.json | Saves beside the snapshot and avoids count drift |
| Keep everything in one named build folder | python3 scripts/render_tweet_replica.py '<url>' --workdir ./tweet-build | Leaves snapshot, local high-quality assets, HTML, WebM, MP4, and GIF together |
| Inspect the extracted snapshot only | python3 scripts/fetch_tweet_snapshot.py '<url>' --output ./tweet-build/snapshot.json --asset-dir ./tweet-build/assets | Useful before layout tuning |
| Record a prepared HTML replica only | python3 scripts/record_tweet_replica.py ./tweet-build/tweet-replica.html ./tweet-build/capture.webm | Useful when tuning CSS without refetching |
| Run real pipeline checks against live tweet URLs | python3 scripts/probe_tweet_replica.py 'https://x.com/.../status/...' --save-root ./tmp-tests --cleanup | Verifies MP4, GIF, durations, GIF size cap, and output frame geometry |
Scope
Positive triggers
- "replicate this tweet"
- "replicate this X post"
- "turn this tweet into mp4 and gif"
- "freeze this tweet into video"
- "make this status look like X"
- "tweet screenshot but playable"
- "preserve caption, counts, playback, and a rerenderable build"
Negative triggers
- simple tweet reading or extraction
- raw media download only
- live embed debugging
- feeds, search pages, DMs, Spaces
- multi-post thread cinematics
- claims that the output is an exact browser-level clone of X
Working Rule
Treat the snapshot as the truth, not the live tweet page. Fetch once, freeze the data, keep the downloaded local media at full quality, then iterate locally from snapshot.json.
Reading Guide
| Need | Read |
|---|---|
| End-to-end workflow, save-root behavior, and artefact layout | references/workflow.md |
| Layout heuristics, sizing rules, and tuning knobs | references/layout.md |
| Failure modes, GIF sizing, drift, and unsupported cases | references/gotchas.md |
Gotchas
- Counts drift quickly. Re-render from
snapshot.jsonwhen the user cares about likes, reposts, or views from a specific moment. - The GIF is a preview asset, not a second master video. The renderer keeps the MP4 as the high-quality master and only lowers GIF resolution, frame rate, and palette depth as needed to stay under 24 MB.
- This renderer rebuilds the tweet chrome locally. It does not claim byte-for-byte or pixel-for-pixel parity with X's own renderer.
- Public X media URLs can expire. Keep the downloaded local media inside the workdir if the output may need to be reproduced later.
- Playwright's viewport recording is visual-only. The final MP4 preserves the recorded visual master at high quality and muxes original media audio back in when a local video file has an audio stream. The GIF never carries audio.
- One nested quoted post is supported, including quoted video playback, but deeper quote chains and full thread reconstruction are out of scope.
- The rendered WebM and MP4 should match the tweet canvas width and the measured tweet height. If the post appears stuck in the upper-left with extra gray or empty space, fix the capture geometry before retuning the tweet CSS.
Signals
- GitHub stars
- 48
- Forks
- 3
- Last commit
- Sep 2026
ahel review
K6low
bundled executables the agent is told to run
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Gateway key
tweet-replicate- Source
- github.com/jpcaparas/skills