Skip to content
Back to skills

tiktok-hooks

ASecurity

Save the opening hook and first frame from a TikTok link, or sync new videos from a private TikTok collection, into a local Markdown or Obsidian swipe file. Use when someone asks to save a TikTok hook, sync their hook collection, configure their hook destination, or schedule collection syncing.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
documentationpythonbash

Security analysis

A100/100

Pro scans all 8 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add louisedesadeleer/tiktok-hooks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of tiktok-hooks?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for tiktok-hooks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/louisedesadeleer-tiktok-hooks/badge)](https://www.skillsdirectory.com/skills/louisedesadeleer-tiktok-hooks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tiktok-hooks
description: Save the opening hook and first frame from a TikTok link, or sync new videos from a private TikTok collection, into a local Markdown or Obsidian swipe file. Use when someone asks to save a TikTok hook, sync their hook collection, configure their hook destination, or schedule collection syncing.
argument-hint: "[TikTok URL]"
---

# TikTok Hooks

Save TikTok openings locally. The bundled Python scripts read TikTok login cookies directly from the user's browser, transcribe on the user's machine, and never retain downloaded videos.

Resolve all script paths relative to this `SKILL.md` file. Use the Python interpreter at `~/.local/share/tiktok-hooks/venv/bin/python` when it exists; otherwise explain that the skill must be installed before syncing.

## First-time setup

Check whether `~/.config/tiktok-hooks/config.json` exists.

If it does not, ask the user:

1. Where should the Markdown file be saved? Accept a normal `.md` path or a file inside an Obsidian vault.
2. Do they want to sync a TikTok collection? If yes, ask for its URL and which browser contains their TikTok login. Default to `chrome` only if they confirm it.
3. Single Markdown file, or one note per hook with an Obsidian Bases table? Recommend notes for Obsidian users.
4. How many existing collection videos should the first sync import? Recommend five.

Never ask for cookie values, passwords, or TikTok credentials. The local downloader reads the browser's cookie store itself.

Run:

```bash
~/.local/share/tiktok-hooks/venv/bin/python <skill-dir>/scripts/configure.py \
  --markdown-path "<absolute-or-home-relative-path>" \
  --collection-url "<url-if-provided>" \
  --browser "<browser-if-provided>" \
  --layout <notes-or-single> \
  --initial-count <count>
```

Omit collection arguments when the user only wants to save individual links. Tell the user where the configuration and Markdown file were created.

If Python dependencies are missing, explain the install command from this skill's `README.md`. Do not install packages or Homebrew dependencies without permission.

## Save one TikTok

For a request containing an individual TikTok URL, run:

```bash
~/.local/share/tiktok-hooks/venv/bin/python <skill-dir>/scripts/sync.py \
  --url "<tiktok-url>"
```

Report the exact Markdown destination and whether a new hook was saved or the video was already present.

## Sync a collection

Run:

```bash
~/.local/share/tiktok-hooks/venv/bin/python <skill-dir>/scripts/sync.py
```

The script checks only the configured number of newest collection entries, processes unseen videos one at a time, and retries failures on the next run. The first collection sync imports only the configured initial count; it does not import the full backlog.

Summarize the number of hooks added and the Markdown destination. If browser-cookie access fails, suggest fully quitting the configured browser and retrying once.

## Scheduling

Do not claim Claude itself runs continuously. The optional scheduler is a macOS `launchd` job that invokes the deterministic Python sync without Claude.

Only offer scheduling after a manual collection sync succeeds. Install it only after explicit approval:

```bash
~/.local/share/tiktok-hooks/venv/bin/python <skill-dir>/scripts/schedule.py \
  --hour 9 --minute 0
```

To remove it:

```bash
~/.local/share/tiktok-hooks/venv/bin/python <skill-dir>/scripts/schedule.py --remove
```

Explain that the Mac must eventually wake and have network access; missed runs are handled when macOS next has an opportunity to run the job.

## Output contract

Each saved entry contains:

- the exact first two spoken sentences, or three when the first two are unusually short
- a relative link to the extracted first frame
- creator, source URL, save date, and TikTok video ID

In the default `single` layout, entries are prepended to one Markdown file. In the `notes` layout, each hook is a note in a `<name>/` folder next to the configured Markdown path. Each note has `tiktok_id`, `creator`, `title`, `hook`, `source`, `saved`, and `frame` properties. A `<name>.base` file provides table and gallery views; it is created on the first sync and never overwritten.

Keep the downloaded MP4 and temporary audio only while processing. Persist screenshots, Markdown, configuration, and deduplication state.

Files in this skill

  • SKILL.md4.2 KB
  • install.sh1.5 KB
  • requirements.txt22 B
  • scripts/configure.py5 KB
  • scripts/hooks.py4.4 KB
  • scripts/schedule.py2.9 KB
  • scripts/sync.py13.7 KB
  • tests/test_skill.py14.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…