agentsclimarketplace

Tiktok videos

Skill puntorigen/avatar-skills/tiktok-videos

Cloud-based agent skills for creating AI avatar talking-head videos and short-form reels (skills.sh format)

Install
npx -y skills add puntorigen/avatar-skills --skill tiktok-videos

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 29 days oldThe repository was created 29 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Download all public videos from a TikTok profile (or a single TikTok video / short link) to a local folder, named with upload date-time (YYYY-MM-DD_HH-MM-SS.mp4). Uses yt-dlp as the primary engine with the tikwm.com no-watermark API as a fallback. Use when the user asks to download TikTok videos, save a TikTok profile's videos locally, grab a TikTok without watermark, or batch-download profile videos with datetime filenames.

SKILL.md

4.9 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it

TikTok Videos Downloader

Download every public video from a TikTok profile (or a single video / short link) into a user-specified folder, named by upload datetime.

Unlike Instagram, TikTok does NOT require a browser mirror. yt-dlp works directly on profile and video URLs, so there is no Picnob-style scrape here. Keep the two-source resilience pattern though: yt-dlp is primary, tikwm.com (no-watermark public API) is the fallback.

Inputs

ParameterRequiredExample
TikTok URL (profile, video, or short link)yeshttps://www.tiktok.com/@scout2015
Output directoryyesout/tiktok
Enginenohybrid (default), ytdlp, or tikwm
Timezone for filenamesnoAmerica/Santiago (default)

Accepted URL shapes (the script normalizes them):

  • Profile: tiktok.com/@user → all videos
  • Single video: tiktok.com/@user/video/{id}
  • Photo carousel: tiktok.com/@user/photo/{id} (skipped unless --include-images)
  • Short links: vm.tiktok.com/xxx, vt.tiktok.com/xxx (redirect is resolved first)

Prerequisites

yt-dlp and ffmpeg must be installed (both present on this machine). Keep yt-dlp fresh — TikTok rotates its signing, so an outdated yt-dlp is the #1 cause of failures:

yt-dlp --version || python3 -m pip install -U yt-dlp

Workflow checklist

- [ ] Step 1: Verify profile/video is public
- [ ] Step 2: (optional) Pre-fetch listing to review before downloading
- [ ] Step 3: Run download script
- [ ] Step 4: Report results

Step 1: Verify it's public

Open the URL. If it shows "This account is private" / a login wall / "Video currently unavailable", stop — this skill is for public content only.

Step 2 (optional): Pre-fetch the listing

The script lists internally, but you can inspect first. This needs no browser:

yt-dlp --flat-playlist -J "https://www.tiktok.com/@username" > listing.json

listing.json has an entries array of {id, url, title}. Pass it back in with --listing-json to download exactly that set.

Step 3: Download and rename

python3 .cursor/skills/tiktok-videos/scripts/download_profile_videos.py \
  --url "https://www.tiktok.com/@username" \
  --output-dir out/tiktok \
  --engine hybrid \
  --timezone America/Santiago

The script:

  1. Resolves short links and lists the profile's videos (yt-dlp --flat-playlist; falls back to tikwm user/posts if yt-dlp listing fails)
  2. Downloads each video — yt-dlp primary, tikwm no-watermark fallback per item
  3. Reads the exact upload timestamp (yt-dlp info.json) or create_time (tikwm)
  4. Renames to YYYY-MM-DD_HH-MM-SS.mp4 in the chosen timezone
  5. Writes {output_dir}/videos_manifest.json (id, url, title, uploadDate, source, file)

Useful flags: --max N (cap count), --engine tikwm (force no-watermark), --engine ytdlp (no third-party dependency), --include-images, --delay-ms.

Collisions: two videos at the same second get _2, _3 suffixes.

Step 4: Report to user

Summarize: handle/URL, output path, count downloaded, any failures, engine source per file, and list filenames sorted newest-first.


Engine strategy (why hybrid)

EngineStrengthWeakness
yt-dlp (primary)Most maintained, handles TikTok signing, whole-profile in one call, no third-partyOccasionally serves a watermarked render; breaks for a few days when TikTok changes signing
tikwm (fallback)Guaranteed no-watermark + exact create_time, simple JSONThird-party service, ~1 req/sec rate limit, can go down

hybrid runs yt-dlp first and only calls tikwm for items yt-dlp fails on — mirroring the instagram-videos Picnob+ImgInn dual-source resilience.

Anti-patterns

  1. Do not start by hand-scraping the TikTok web page — yt-dlp already handles listing. (This is the opposite of Instagram, where direct tools 401.)
  2. Do not run with a stale yt-dlp. Update it before blaming the site.
  3. Do not hammer tikwm faster than ~1 req/sec — it rate-limits.
  4. Do not download private / age-gated / region-locked content.
  5. Do not commit large out/ video folders — add the output dir to .gitignore.

Utility scripts

ScriptPurpose
scripts/download_profile_videos.pyList + download (yt-dlp + tikwm fallback) + datetime rename + manifest (main entry point)

Additional resources

  • Real run example: examples.md
  • For Instagram (needs a browser mirror), use the instagram-videos skill.

What ships with it: 2 files

16.3 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.