Claude Skill

tiktok-video-downloader

TikTok视频下载 — 粘贴 TikTok 视频链接,一键解析返回无水印视频下载链接,支持单个或批量链接解析,自动校验 TikTok 链接有效性。当用户需要下载 TikTok 视频、保存 TikTok 视频、获取 TikTok 视频直链、批量下载 TikTok 视频时使用。触发词:TikTok视频下载、TK视频下载、TikTok视频解析、下载TikTok视频、抖音国际版视频下载、批量下载TikTok视频。

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download redfox-data-redfox-community-skills_tiktok-video-downloader-5e7b435.zip · 12 KB
Part of redfox-data/redfox-community — 66 skills

Install

skills CLI npx skills add https://github.com/redfox-data/redfox-community/tree/main/skills/tiktok-video-downloader
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install redfox-data-redfox-community@llmmart
Git git clone https://github.com/redfox-data/redfox-community.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole redfox-data/redfox-community collection as a plugin from our marketplace. Git is the plain clone.

README

TikTok视频下载 / tiktok-video-downloader


简介

贴上 TikTok 视频链接就能拿到无水印下载直链,复制到浏览器或下载工具就能保存。支持单个或批量链接解析。www.tiktok.com 网页链接和 vm.tiktok.com 短链都能认,不会让你折腾半天还下载到带水印的版本。

核心价值

  • 贴链即得不费劲:贴上视频链接就能拿到视频下载直链,复制到浏览器或下载工具就能保存,不用装插件、不用开会员。
  • 批量解析更高效:一次粘贴多个 TikTok 视频链接(空格分隔),批量解析并在最后汇总成功与失败数量,不用一条条重复操作。
  • 链接智能校验:自动判断输入的链接是否为 TikTok 视频链接,非 TikTok 链接会提示「请输入正确的 TikTok 视频链接」并终止流程,需要重新输入正确的链接。
  • 视频干净无水印:返回的都是无水印视频,收藏、二次创作都能直接拿去用。
  • 两种链接都能认:www.tiktok.com 网页链接和 vm.tiktok.com 短链都能识别,手机分享链接、电脑网页链接贴过来都能解析。
  • 结果一眼看清:资源类型、时长、下载链接、封面图、音频链接、内容描述分开展示,拿到手就知道该复制哪一个。

适用对象

  • 🎬 创作者 / 剪辑师 — 快速保存 TikTok 上的视频素材,用于二次创作
  • 📚 内容收藏者 — 把喜欢的 TikTok 视频备份到本地,不怕原视频被删
  • 🔍 运营 / 研究者 — 下载竞品或热点视频,慢慢分析

功能特性

核心功能

  • 视频解析:粘贴 TikTok 视频链接,一键解析出无水印视频下载链接。
  • 批量解析:支持一次粘贴多个 TikTok 视频链接(空格分隔),逐个解析并在最后汇总成功与失败数量。
  • 链接校验:自动识别输入的链接是否为 TikTok 视频链接,非 TikTok 链接会提示并终止流程,需要重新输入正确的链接。
  • 信息完整:展示资源类型、时长、下载链接、封面图、音频链接,内容描述完整逐行展示不截断。
  • 双链接支持:www.tiktok.com 网页链接和 vm.tiktok.com 短链都能识别。
  • 链接时效提醒:解析成功后返回的下载链接有效期约 5 分钟,会提醒用户立即复制使用。

密钥获取与安全说明

  • 本技能需要使用环境变量:REDFOX_API_KEY。
  • REDFOX_API_KEY 由 红狐 hub (https://redfox.hk) 提供。
  • 请前往 红狐 hub 注册账号,获取 REDFOX_API_KEY。
  • 配置设备环境变量 REDFOX_API_KEY 后使用本技能。
  • 在提供密钥前,请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。
  • 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。

使用指南

直接用自然语言描述需求,无需记忆命令。用户提供正确的 TikTok 视频链接时直接执行解析,无需额外确认。

常用说法速查

意图 示例话术 效果
下载 TikTok 视频 「下载这个视频 https://www.tiktok.com/@user/video/xxxxx」 解析链接并返回视频下载直链
批量下载 TikTok 视频 「帮我下载这几个视频 链接1 链接2 链接3」 批量解析多个链接,逐个返回下载直链并汇总结果
保存 TikTok 视频 「帮我把这条 TikTok 视频存下来」 引导你贴上链接,解析后返回下载链接

输出示例

单个链接解析完成后,你将收到如下格式的结果:

✅ 解析成功!

📝 内容描述:视频文案完整展示

🎬 资源列表: 类型、时长、下载链接、封面图、音频链接一一列出

复制链接到浏览器或下载工具即可下载。

⚠️ 视频下载链接有效期约 5 分钟,请立即复制到浏览器打开或下载!

批量解析时,每个链接的结果会依次展示,最后还会汇总成功与失败数量:

📋 批量解析完成 ✓ 成功:3 个 ✗ 失败:1 个

复制链接到浏览器或下载工具即可下载。

如果输入了非 TikTok 的链接,会看到提示:

[✗] 该链接不是 TikTok 视频链接,请输入正确的 TikTok 视频链接 正确的链接格式示例: https://www.tiktok.com/@user/video/xxxxx https://vm.tiktok.com/xxxxx/


使用场景

场景 角色 示例问法 收益
素材收集 剪辑师 「下载这条 TikTok 视频」 快速拿到无水印素材,直接进剪辑流程
批量素材获取 剪辑师 「帮我下载这几个视频 链接1 链接2 链接3」 批量解析多个链接,一次拿到多份素材
内容备份 收藏者 「保存这个 TikTok 视频」 原视频删除也不怕,本地永久留存
热点分析 运营 「把这个爆款视频下下来」 离线反复观看,拆解爆款逻辑

Skill manifest

TikTok视频下载

粘贴 TikTok 视频链接,一键获取无水印视频下载直链。通过 redfox.hk 服务解析,支持单个或批量链接处理,自动识别并校验 TikTok 链接有效性。


简介

适用对象:需要下载 TikTok 视频的用户,包括内容创作者、视频收藏者、运营分析人员。

核心能力:

  • 📹 粘贴 TikTok 链接即可获取无水印 mp4 下载直链
  • 📦 支持批量链接解析(空格分隔多个链接)
  • 🔍 自动校验是否为 TikTok 视频链接,非 TikTok 链接会提示并终止流程
  • ⏱️ 下载链接有效期约 5 分钟,解析成功后请立即使用

功能特性

功能 说明
无水印直链 自动返回无水印视频下载链接,无需手动处理
即贴即解析 粘贴视频链接即可,无需额外操作
批量解析 支持一次粘贴多个 TikTok 视频链接,批量解析并汇总结果
链接校验 自动判断输入链接是否为 TikTok 视频链接,非 TikTok 链接会提示并终止流程
链接自适应 支持 www.tiktok.com 网页链接与 vm.tiktok.com 短链两种格式
结果直出 解析完成直接返回下载链接,复制即可用

一键安装

  1. 前往 redfox.hk 注册获取 API Key
  2. 配置环境变量:export REDFOX_API_KEY=ark_你的密钥
  3. 粘贴 TikTok 视频链接即可使用

使用指南

核心执行流程详见 references/core_workflow.md

直接用自然语言描述需求,无需记忆命令。提供正确的 TikTok 视频链接时,直接执行解析并返回结果。

常用说法速查

意图 示例话术 效果
下载单个视频 「下载这个视频 https://www.tiktok.com/@user/video/xxxxx」 解析链接并返回无水印下载直链
批量下载 「帮我下载这几个视频 链接1 链接2 链接3」 批量解析,逐个返回并汇总结果
保存视频 「帮我把这条 TikTok 视频存下来」 引导贴上链接,解析后返回下载链接

支持的作品链接格式

平台 链接格式 示例
TikTok https://www.tiktok.com/@<用户名>/video/<视频ID> PC 网页链接 / 手机分享链接
TikTok https://vm.tiktok.com/<短码>/ 手机分享短链接

使用场景

场景 角色 示例问法 收益
素材收集 剪辑师 「下载这条 TikTok 视频」 快速拿到无水印素材,直接进剪辑流程
批量素材获取 剪辑师 「帮我下载这几个视频 链接1 链接2 链接3」 批量解析多个链接,一次拿到多份素材
内容备份 收藏者 「保存这个 TikTok 视频」 原视频删除也不怕,本地永久留存
热点分析 运营 「把这个爆款视频下下来」 离线反复观看,拆解爆款逻辑

常见问答

Q:如何获取自己的 API Key? A:前往 redfox.hk 注册即可获取 Token。

Q:下载的视频有水印吗? A:没有。返回的是无水印视频直链。

Q:可以批量解析多个链接吗? A:支持。用空格分隔多个 TikTok 视频链接即可批量解析,逐个处理并在最后汇总成功与失败数量。

Q:输入了非 TikTok 的链接会怎样? A:会自动识别并校验。如果检测到非 TikTok 链接,会提示「请输入正确的 TikTok 视频链接」并终止流程。

Q:链接提示解析失败怎么办? A:确认链接是否完整、视频是否仍然存在、账号内容是否公开。私密账号或已删除视频无法解析。

Q:下载链接有时效限制吗? A:有。解析成功后返回的下载链接有效期约 5 分钟,请立即复制使用,过期后需要重新解析。


了解更多

本工具基于 redfox.hk 的视频解析服务构建。前往官网查看更多功能和使用文档。

Files (redfox-community)
  • references
    • core_workflow.md 2.4 KB
      # Core Workflow
      
      ## 执行规则
      
      - **用户提供正确的 TikTok 视频链接时**:直接执行解析流程,无需额外确认或追问
      - **用户未提供链接时**:提示用户输入 TikTok 视频链接
      - **用户提供的链接不是 TikTok 链接时**:提示「请输入正确的 TikTok 视频链接」并终止流程
      
      ## 脚本调用
      
      ### 单链接
      
      ```bash
      python3 "$SKILL_PATH/scripts/downloader.py" "https://www.tiktok.com/@user/video/xxxxx"
      ```
      
      ### 批量链接(空格分隔)
      
      ```bash
      python3 "$SKILL_PATH/scripts/downloader.py" "https://www.tiktok.com/@user/video/111" "https://www.tiktok.com/@user/video/222" "https://vm.tiktok.com/abc/"
      ```
      
      ### 命令行参数
      
      | 参数 | 说明 |
      |------|------|
      | `urls`(位置参数,必填) | TikTok 视频链接(支持多个,空格分隔) |
      | `--api-key` | API Key(格式 ark_xxx,不传则读取环境变量或配置文件) |
      | `--save-key` | 将本次传入的 API Key 保存到配置文件 |
      | `--json` | 以 JSON 格式输出完整返回结果 |
      
      ## API Key 配置
      
      优先级:CLI 参数 > 环境变量 > 配置文件
      
      | 方式 | 命令 |
      |------|------|
      | **环境变量**(推荐) | `export REDFOX_API_KEY=ark_你的密钥` |
      | **命令行参数** | `python3 "$SKILL_PATH/scripts/downloader.py" "<链接>" [<链接>...] --api-key ark_你的密钥` |
      | **配置文件** | `echo '{"api_key":"ark_你的密钥"}' > ~/.qoder/apis/redfox.json` |
      
      ### 首次使用
      
      ```bash
      # 设置环境变量
      export REDFOX_API_KEY=ak_你的密钥
      
      # 解析视频,获取下载链接
      python3 "$SKILL_PATH/scripts/downloader.py" "https://www.tiktok.com/@user/video/xxxxx"
      ```
      
      > 前往 [redfox.hk](https://redfox.hk/settings/api-keys?source=github) 注册获取 API Key。
      
      ## API 调用细节
      
      - **API 端点**:`https://redfox.hk/story/api/parseWork/videoDownload/tiktok`
      - **请求方法**:POST,Content-Type: application/json,Header: X-API-KEY
      - **请求体**:`{"url": "<链接>", "source": "TikTok视频下载-GitHub"}`
      - **成功判断**:响应 code 以 2 开头(如 200、2000)
      - **错误码**:3106=缺少 Key,3107=Key 无效,400=参数错误
      - **链接有效期**:返回的下载链接约 5 分钟有效
      
      ## 输出格式
      
      成功时依次输出:
      1. 内容描述(完整原文)
      2. 资源列表(类型/时长/下载链接/封面图/音频链接)
      3. 有效期提醒
      
      批量模式下最后汇总成功/失败数量。
      
  • scripts
    • downloader.py 12.3 KB
      #!/usr/bin/env python3
      """
      TikTok视频下载 - API 版本
      使用 redfox.hk API 解析 TikTok 视频链接,直接返回无水印视频下载链接
      支持单链接和批量链接解析,自动校验 TikTok 链接有效性
      
      Usage:
          python3 downloader.py <url> [--api-key <key>]
          python3 downloader.py <url1> <url2> <url3> [--api-key <key>]
      """
      
      import argparse
      import json
      import os
      import re
      import sys
      import warnings
      from pathlib import Path
      from urllib.parse import urlparse
      
      import requests
      
      # Suppress urllib3 OpenSSL warning on macOS
      warnings.filterwarnings("ignore", category=Warning)
      warnings.filterwarnings("ignore", message=".*NotOpenSSLWarning.*")
      
      # Ensure UTF-8 output for emoji and CJK characters on Windows console
      if hasattr(sys.stdout, "reconfigure"):
          sys.stdout.reconfigure(encoding="utf-8", errors="replace")
          sys.stderr.reconfigure(encoding="utf-8", errors="replace")
      
      API_URL = "https://redfox.hk/story/api/parseWork/videoDownload/tiktok"
      CONFIG_DIR = Path.home() / ".qoder" / "apis"
      CONFIG_FILE = CONFIG_DIR / "redfox.json"
      
      ENV_KEY = "REDFOX_API_KEY"
      
      GREEN = "\033[92m"
      YELLOW = "\033[93m"
      RED = "\033[91m"
      CYAN = "\033[96m"
      BOLD = "\033[1m"
      RESET = "\033[0m"
      
      
      def info(msg):
          print(f"{GREEN}[✓]{RESET} {msg}")
      
      
      def warn(msg):
          print(f"{YELLOW}[!]{RESET} {msg}")
      
      
      def error(msg):
          print(f"{RED}[✗]{RESET} {msg}")
      
      
      def step(msg):
          print(f"{CYAN}[→]{RESET} {msg}")
      
      
      class ApiKeyError(Exception):
          """Raised when API key is missing or invalid, should stop batch processing."""
          pass
      
      
      def get_api_key(cli_key=None):
          """Get API key with priority: CLI arg > env var > config file."""
          if cli_key:
              return cli_key
      
          env_key = os.environ.get(ENV_KEY)
          if env_key:
              return env_key
      
          if CONFIG_FILE.exists():
              try:
                  data = json.loads(CONFIG_FILE.read_text())
                  key = data.get("api_key")
                  if key:
                      return key
              except (json.JSONDecodeError, OSError):
                  pass
      
          return None
      
      
      def save_api_key(api_key):
          """Persist API key to config file."""
          CONFIG_DIR.mkdir(parents=True, exist_ok=True)
          CONFIG_FILE.write_text(json.dumps({"api_key": api_key}, indent=2))
          os.chmod(CONFIG_FILE, 0o600)  # secure file permissions
          info(f"API Key saved to {CONFIG_FILE}")
      
      
      def is_tiktok_link(url):
          """Check if the URL is a TikTok video link (web link or short link).
      
          Supports:
            - https://www.tiktok.com/@user/video/xxxxx
            - https://vm.tiktok.com/xxxxx/
            - https://vt.tiktok.com/xxxxx/
          """
          try:
              parsed = urlparse(url)
              host = (parsed.hostname or "").lower()
              return host.endswith("tiktok.com")
          except Exception:
              return False
      
      
      def normalize_url(url):
          """Normalize a URL: strip quotes and ensure it has a scheme."""
          url = url.strip().strip('"').strip("'")
          if not url.startswith(("http://", "https://")):
              url = "https://" + url
          return url
      
      
      def extract_download_url(data):
          """Extract video download URL from API response data (tolerant of field naming)."""
          if isinstance(data, str):
              return data
          if not isinstance(data, dict):
              return None
      
          # Common field names that may carry the downloadable video link
          candidate_keys = [
              "videoUrl", "video_url", "downloadUrl", "download_url",
              "videoDownloadUrl", "video_download_url", "playUrl", "play_url",
              "url", "link",
          ]
          for key in candidate_keys:
              value = data.get(key)
              if isinstance(value, str) and value.startswith(("http://", "https://")):
                  return value
      
          # Nested structures: data.video.url / data.media[0].url etc.
          for nested_key in ("video", "media", "result", "detail"):
              nested = data.get(nested_key)
              found = extract_download_url(nested) if isinstance(nested, (dict, list)) else None
              if found:
                  return found
      
          if isinstance(data.get("videos"), list):
              for item in data["videos"]:
                  found = extract_download_url(item)
                  if found:
                      return found
      
          return None
      
      
      def get_audio_url(res):
          """Extract audio URL from a resource dict (tolerant of field naming)."""
          if not isinstance(res, dict):
              return None
          for key in ("audioUrl", "audio_url", "audioDownloadUrl", "audio_download_url",
                      "musicUrl", "music_url", "soundUrl", "sound_url"):
              value = res.get(key)
              if isinstance(value, str) and value.startswith(("http://", "https://")):
                  return value
          return None
      
      
      def process_single_video(url, api_key, json_mode=False):
          """Process a single TikTok video URL: validate, call API, print results.
      
          Returns True on success, False on failure.
          Raises ApiKeyError if the API key is missing/invalid (fatal for batch mode).
          Terminates the process (sys.exit) if the URL is not a TikTok link.
          """
          # ── Validate TikTok link ──
          if not is_tiktok_link(url):
              error(f"该链接不是 TikTok 视频链接,请输入正确的 TikTok 视频链接:{url}")
              print(f"  正确的链接格式示例:")
              print(f"  https://www.tiktok.com/@user/video/xxxxx")
              print(f"  https://vm.tiktok.com/xxxxx/")
              sys.exit(1)
      
          step(f"URL: {url}")
      
          # ── Call API ──
          step("Calling redfox.hk API...")
      
          session = requests.Session()
          session.headers.update({
              "Content-Type": "application/json",
              "X-API-KEY": api_key,
          })
      
          try:
              resp = session.post(API_URL, json={"url": url, "source": "TikTok视频下载-GitHub"}, timeout=30)
              result = resp.json()
          except requests.exceptions.RequestException as e:
              error(f"API request failed: {e}")
              return False
          except json.JSONDecodeError:
              error(f"API returned invalid JSON: {resp.text[:200]}")
              return False
      
          code = result.get("code")
          msg = result.get("msg", "")
      
          # 成功 code 以 2 开头(如 200、2000),其余为错误
          if not str(code).startswith("2"):
              if code == 3106:
                  error("缺少 API Key")
                  raise ApiKeyError()
              elif code == 3107:
                  error("API Key 无效或已失效,请检查是否正确")
                  print("  配置方式:export REDFOX_API_KEY=ark_你的密钥")
                  raise ApiKeyError()
              elif code == 400:
                  error(f"请求参数错误: {msg}")
              else:
                  error(f"API error (code {code}): {msg}")
              return False
      
          data = result.get("data")
          if not data:
              error("API returned empty data")
              return False
      
          # ── Parse result ──
          if json_mode:
              print(json.dumps(data, ensure_ascii=False, indent=2))
      
          desc = data.get("desc") if isinstance(data, dict) else None
          cover = data.get("cover") if isinstance(data, dict) else None
          resources = data.get("resources") if isinstance(data, dict) else None
      
          print(f"\n{GREEN}{BOLD}✓ 解析成功!{RESET}")
      
          # 内容描述(完整原文,不截断)
          if desc:
              print(f"\n{CYAN}{BOLD}📝 内容描述:{RESET}")
              for line in str(desc).splitlines():
                  print(f"  {line}")
      
          # 资源列表:类型 / 时长 / 下载链接 / 封面图 / 音频链接
          if isinstance(resources, list) and resources:
              print(f"\n{CYAN}{BOLD}🎬 资源列表(共 {len(resources)} 个):{RESET}")
              for i, res in enumerate(resources, 1):
                  if not isinstance(res, dict):
                      continue
                  rtype = res.get("type") or "未知"
                  dl = res.get("downloadUrl") or "-"
                  cu = res.get("coverUrl") or cover or "-"
                  dur = res.get("durationSeconds")
                  dur_str = f"{dur} 秒" if isinstance(dur, (int, float)) and dur else "未知"
                  audio = get_audio_url(res)
                  print(f"\n  {BOLD}【资源 {i}】{RESET}")
                  print(f"    资源类型:{rtype}")
                  print(f"    时长:{dur_str}")
                  print(f"    下载链接:{dl}")
                  print(f"    封面图:{cu}")
                  if audio:
                      print(f"    音频链接:{audio}")
          else:
              # 回退:无 resources 字段时从顶层提取
              download_url = extract_download_url(data)
              if not download_url:
                  error("未能从 API 返回结果中提取下载链接,原始返回如下:")
                  print(json.dumps(data, ensure_ascii=False, indent=2))
                  return False
              print(f"\n{CYAN}{BOLD}🎬 资源:{RESET}")
              print(f"    下载链接:{download_url}")
              if cover:
                  print(f"    封面图:{cover}")
              audio = get_audio_url(data) if isinstance(data, dict) else None
              if audio:
                  print(f"    音频链接:{audio}")
      
          print(f"\n{CYAN}复制链接到浏览器或下载工具即可下载。{RESET}")
          print(f"\n{YELLOW}⚠️ 视频下载链接有效期约 5 分钟,请立即复制到浏览器打开或下载!{RESET}")
          return True
      
      
      def main():
          parser = argparse.ArgumentParser(
              description="TikTok视频下载 - 使用 redfox.hk API 解析视频并返回下载链接,支持批量解析",
              formatter_class=argparse.RawDescriptionHelpFormatter,
              epilog="""
      Examples:
        # 单个链接
        python3 downloader.py https://www.tiktok.com/@user/video/xxxxx
        python3 downloader.py https://www.tiktok.com/@user/video/xxxxx --api-key ark_xxxxx
      
        # 批量链接(空格分隔)
        python3 downloader.py https://www.tiktok.com/@user/video/111 https://www.tiktok.com/@user/video/222
      
      也可通过环境变量 REDFOX_API_KEY 配置密钥:
        export REDFOX_API_KEY=ark_xxxxx
        python3 downloader.py <url> [<url> ...]
              """,
          )
          parser.add_argument("urls", nargs="+", help="TikTok 视频链接(支持多个,空格分隔),如 https://www.tiktok.com/@user/video/xxxxx")
          parser.add_argument("--api-key", help="API Key(格式 ark_xxx,不传则读取环境变量或配置文件)")
          parser.add_argument(
              "--save-key",
              action="store_true",
              help="将本次传入的 API Key 保存到配置文件",
          )
          parser.add_argument(
              "--json",
              action="store_true",
              help="以 JSON 格式输出完整返回结果",
          )
      
          args = parser.parse_args()
      
          # ── Banner ──
          banner = f"""{CYAN}{BOLD}
        ╔══════════════════════════════════════╗
        ║   TikTok Video Downloader            ║
        ║   TikTok视频下载                     ║
        ╚══════════════════════════════════════╝{RESET}
      """
          print(banner)
      
          # ── API Key ──
          api_key = get_api_key(cli_key=args.api_key)
          if not api_key:
              error("未找到 API Key,请设置环境变量 REDFOX_API_KEY 或使用 --api-key 参数")
              print(f"  获取 Key: https://redfox.hk/settings/api-keys?source=github")
              sys.exit(1)
      
          # Save key if requested
          if args.save_key:
              save_api_key(api_key)
      
          # ── Process URLs ──
          total = len(args.urls)
          if total > 1:
              print(f"{CYAN}{BOLD}📋 批量解析模式:共 {total} 个链接{RESET}\n")
      
          success_count = 0
          fail_count = 0
      
          for idx, raw_url in enumerate(args.urls, 1):
              if total > 1:
                  print(f"\n{CYAN}{BOLD}{'='*50}{RESET}")
                  print(f"{CYAN}{BOLD}📋 第 {idx}/{total} 个链接{RESET}")
                  print(f"{CYAN}{BOLD}{'='*50}{RESET}")
      
              url = normalize_url(raw_url)
      
              try:
                  ok = process_single_video(url, api_key, json_mode=args.json)
              except ApiKeyError:
                  # API Key 无效,后续链接必然也会失败,直接退出
                  if fail_count > 0 or success_count > 0:
                      print(f"\n{RED}API Key 无效,已终止批量解析。{RESET}")
                  sys.exit(1)
      
              if ok:
                  success_count += 1
              else:
                  fail_count += 1
      
          # ── Summary ──
          if total > 1:
              print(f"\n{CYAN}{BOLD}{'='*50}{RESET}")
              print(f"{CYAN}{BOLD}📋 批量解析完成{RESET}")
              print(f"  {GREEN}✓ 成功:{success_count} 个{RESET}")
              print(f"  {RED}✗ 失败:{fail_count} 个{RESET}")
      
          print(f"\n{CYAN}复制链接到浏览器或下载工具即可下载。{RESET}")
          sys.exit(0 if success_count > 0 else 1)
      
      
      if __name__ == "__main__":
          main()
      
  • README.en.md 5.4 KB
    # TikTok Video Downloader / tiktok-video-downloader
    
    ---
    
    ## Introduction
    
    Paste a TikTok video link and get a watermark-free download URL instantly. Copy it into your browser or download tool to save. Supports single or batch link parsing — non-TikTok links are automatically detected and the process terminates with a prompt to re-enter. Both www.tiktok.com web links and vm.tiktok.com short links are supported, and you won't end up with a watermarked version.
    
    **Core Value**
    
    - **Paste and go**: paste a video link and get a video download URL right away — copy into your browser or download tool, no plugins or subscriptions needed.
    - **Batch parsing**: paste multiple TikTok video links at once (space-separated), parse them in sequence and get a summary of successes and failures at the end — no more repeating one by one.
    - **Smart link validation**: automatically checks whether the input link is a TikTok video link; non-TikTok links are flagged with a prompt and the process terminates, requiring you to re-enter a valid link.
    - **Clean, watermark-free**: every returned video is watermark-free, ready for collecting or remixing.
    - **Both link types recognized**: www.tiktok.com web links and vm.tiktok.com short links both work — mobile share links and desktop URLs alike.
    - **Results at a glance**: resource type, duration, download link, cover image, audio link, and full description are all laid out clearly so you know exactly what to copy.
    
    **Who Is It For**
    
    - 🎬 **Creators / Editors** — quickly save video clips from TikTok for secondary creation
    - 📚 **Content Collectors** — back up favorite TikTok videos locally, safe from deleted posts
    - 🔍 **Operators / Researchers** — download competitor or trending videos for analysis
    
    ---
    
    ## Features
    
    ### Core Features
    
    - **Video Parsing**: paste a TikTok video link to parse out the watermark-free video download URL.
    - **Batch Parsing**: paste multiple TikTok video links at once (space-separated), parse them one by one and get a summary of successes and failures at the end.
    - **Link Validation**: automatically detects whether the input link is a TikTok video link; non-TikTok links are flagged and the process terminates, requiring you to re-enter a valid link.
    - **Complete Information**: displays resource type, duration, download link, cover image, audio link, and full description line by line without truncation.
    - **Dual Link Support**: recognizes both www.tiktok.com web links and vm.tiktok.com short links.
    - **Link Expiry Reminder**: the download link returned after parsing is valid for approximately 5 minutes; users are reminded to copy and use it immediately.
    
    ---
    
    ## API Key & Security
    
    - This skill requires the environment variable: `REDFOX_API_KEY`.
    - `REDFOX_API_KEY` is provided by [RedFoxHub](https://redfox.hk/settings/api-keys?source=github) (`https://redfox.hk`).
    - Please register at [RedFoxHub](https://redfox.hk?source=github) to obtain your `REDFOX_API_KEY`.
    - Configure the `REDFOX_API_KEY` environment variable on your device before using this skill.
    - Before providing your key, confirm its source, scope, validity period, and whether it can be reset/revoked.
    - Never hardcode or expose the key in code, prompts, logs, or output files.
    
    ---
    
    ## Usage Guide
    
    Just describe what you want in natural language — no commands to memorize. When a valid TikTok video link is provided, parsing runs immediately without extra confirmation.
    
    ### Quick Reference
    
    | Intent | Example | Result |
    | ------ | ------- | ------ |
    | Download a TikTok video | "Download this video https://www.tiktok.com/@user/video/xxxxx" | Parses the link and returns a direct video download URL |
    | Batch download TikTok videos | "Download these videos link1 link2 link3" | Parses multiple links in sequence, returns download URLs and a summary |
    | Save a TikTok video | "Help me save this TikTok video" | Prompts you to paste the link, then returns the download URL |
    
    ### Output Example
    
    After parsing a single link, you will receive a result like:
    
    > ✅ Parsed successfully!
    >
    > 📝 Description: the full video caption shown in its entirety
    >
    > 🎬 Resources:
    > type, duration, download link, cover image, and audio link listed one by one
    >
    > Copy the link into your browser or download tool to download.
    >
    > ⚠️ The video download link is valid for approximately 5 minutes. Please copy it to your browser and download immediately!
    
    When batch parsing, each link's results are shown in sequence, followed by a summary:
    
    > 📋 Batch parsing complete
    > ✓ Success: 3
    > ✗ Failed: 1
    >
    > Copy the link into your browser or download tool to download.
    
    If a non-TikTok link is entered, you will see a prompt:
    
    > [✗] This is not a TikTok video link. Please enter a valid TikTok video link.
    > Valid link format examples:
    > https://www.tiktok.com/@user/video/xxxxx
    > https://vm.tiktok.com/xxxxx/
    
    ---
    
    ## Use Cases
    
    | Scenario | Role | Example | Benefit |
    | -------- | ---- | ------- | ------- |
    | Material collection | Editor | "Download this TikTok video" | Get watermark-free footage straight into your editing workflow |
    | Batch material gathering | Editor | "Download these videos link1 link2 link3" | Parse multiple links at once and get all footage in one go |
    | Content backup | Collector | "Save this TikTok video" | Keep it locally forever, even if the original video is deleted |
    | Trend analysis | Operator | "Download this viral video" | Watch offline repeatedly and break down what makes it viral |
    
  • README.md 5 KB
    # TikTok视频下载 / tiktok-video-downloader
    
    ---
    
    ## 简介
    
    贴上 TikTok 视频链接就能拿到无水印下载直链,复制到浏览器或下载工具就能保存。支持单个或批量链接解析。www.tiktok.com 网页链接和 vm.tiktok.com 短链都能认,不会让你折腾半天还下载到带水印的版本。
    
    **核心价值**
    
    - **贴链即得不费劲**:贴上视频链接就能拿到视频下载直链,复制到浏览器或下载工具就能保存,不用装插件、不用开会员。
    - **批量解析更高效**:一次粘贴多个 TikTok 视频链接(空格分隔),批量解析并在最后汇总成功与失败数量,不用一条条重复操作。
    - **链接智能校验**:自动判断输入的链接是否为 TikTok 视频链接,非 TikTok 链接会提示「请输入正确的 TikTok 视频链接」并终止流程,需要重新输入正确的链接。
    - **视频干净无水印**:返回的都是无水印视频,收藏、二次创作都能直接拿去用。
    - **两种链接都能认**:www.tiktok.com 网页链接和 vm.tiktok.com 短链都能识别,手机分享链接、电脑网页链接贴过来都能解析。
    - **结果一眼看清**:资源类型、时长、下载链接、封面图、音频链接、内容描述分开展示,拿到手就知道该复制哪一个。
    
    **适用对象**
    
    - 🎬 **创作者 / 剪辑师** — 快速保存 TikTok 上的视频素材,用于二次创作
    - 📚 **内容收藏者** — 把喜欢的 TikTok 视频备份到本地,不怕原视频被删
    - 🔍 **运营 / 研究者** — 下载竞品或热点视频,慢慢分析
    
    ---
    
    ## 功能特性
    
    ### 核心功能
    
    - **视频解析**:粘贴 TikTok 视频链接,一键解析出无水印视频下载链接。
    - **批量解析**:支持一次粘贴多个 TikTok 视频链接(空格分隔),逐个解析并在最后汇总成功与失败数量。
    - **链接校验**:自动识别输入的链接是否为 TikTok 视频链接,非 TikTok 链接会提示并终止流程,需要重新输入正确的链接。
    - **信息完整**:展示资源类型、时长、下载链接、封面图、音频链接,内容描述完整逐行展示不截断。
    - **双链接支持**:www.tiktok.com 网页链接和 vm.tiktok.com 短链都能识别。
    - **链接时效提醒**:解析成功后返回的下载链接有效期约 5 分钟,会提醒用户立即复制使用。
    
    ---
    
    ## 密钥获取与安全说明
    
    - 本技能需要使用环境变量:`REDFOX_API_KEY`。
    - `REDFOX_API_KEY` 由 [红狐 hub](https://redfox.hk/settings/api-keys?source=github) (`https://redfox.hk`) 提供。
    - 请前往 [红狐 hub](https://redfox.hk?source=github) 注册账号,获取 `REDFOX_API_KEY`。
    - 配置设备环境变量 `REDFOX_API_KEY` 后使用本技能。
    - 在提供密钥前,请先确认密钥来源、可用范围、有效期及是否支持重置/撤销。
    - 禁止在代码、提示词、日志或输出文件中硬编码/明文暴露密钥。
    
    ---
    
    ## 使用指南
    
    直接用自然语言描述需求,无需记忆命令。用户提供正确的 TikTok 视频链接时直接执行解析,无需额外确认。
    
    ### 常用说法速查
    
    | 意图 | 示例话术 | 效果 |
    | ---- | -------- | ---- |
    | 下载 TikTok 视频 | 「下载这个视频 https://www.tiktok.com/@user/video/xxxxx」 | 解析链接并返回视频下载直链 |
    | 批量下载 TikTok 视频 | 「帮我下载这几个视频 链接1 链接2 链接3」 | 批量解析多个链接,逐个返回下载直链并汇总结果 |
    | 保存 TikTok 视频 | 「帮我把这条 TikTok 视频存下来」 | 引导你贴上链接,解析后返回下载链接 |
    
    ### 输出示例
    
    单个链接解析完成后,你将收到如下格式的结果:
    
    > ✅ 解析成功!
    >
    > 📝 内容描述:视频文案完整展示
    >
    > 🎬 资源列表:
    > 类型、时长、下载链接、封面图、音频链接一一列出
    >
    > 复制链接到浏览器或下载工具即可下载。
    >
    > ⚠️ 视频下载链接有效期约 5 分钟,请立即复制到浏览器打开或下载!
    
    批量解析时,每个链接的结果会依次展示,最后还会汇总成功与失败数量:
    
    > 📋 批量解析完成
    > ✓ 成功:3 个
    > ✗ 失败:1 个
    >
    > 复制链接到浏览器或下载工具即可下载。
    
    如果输入了非 TikTok 的链接,会看到提示:
    
    > [✗] 该链接不是 TikTok 视频链接,请输入正确的 TikTok 视频链接
    > 正确的链接格式示例:
    > https://www.tiktok.com/@user/video/xxxxx
    > https://vm.tiktok.com/xxxxx/
    
    ---
    
    ## 使用场景
    
    | 场景 | 角色 | 示例问法 | 收益 |
    | ---- | ---- | -------- | ---- |
    | 素材收集 | 剪辑师 | 「下载这条 TikTok 视频」 | 快速拿到无水印素材,直接进剪辑流程 |
    | 批量素材获取 | 剪辑师 | 「帮我下载这几个视频 链接1 链接2 链接3」 | 批量解析多个链接,一次拿到多份素材 |
    | 内容备份 | 收藏者 | 「保存这个 TikTok 视频」 | 原视频删除也不怕,本地永久留存 |
    | 热点分析 | 运营 | 「把这个爆款视频下下来」 | 离线反复观看,拆解爆款逻辑 |
    
  • SKILL.md 4.6 KB
    ---
    name: tiktok-video-downloader
    description: TikTok视频下载 — 粘贴 TikTok 视频链接,一键解析返回无水印视频下载链接,支持单个或批量链接解析,自动校验 TikTok 链接有效性。当用户需要下载 TikTok 视频、保存 TikTok 视频、获取 TikTok 视频直链、批量下载 TikTok 视频时使用。触发词:TikTok视频下载、TK视频下载、TikTok视频解析、下载TikTok视频、抖音国际版视频下载、批量下载TikTok视频。
    ---
    
    # TikTok视频下载
    
    粘贴 TikTok 视频链接,一键获取无水印视频下载直链。通过 [redfox.hk](https://redfox.hk/settings/api-keys?source=github) 服务解析,支持单个或批量链接处理,自动识别并校验 TikTok 链接有效性。
    
    ---
    
    ## 简介
    
    **适用对象**:需要下载 TikTok 视频的用户,包括内容创作者、视频收藏者、运营分析人员。
    
    **核心能力**:
    - 📹 粘贴 TikTok 链接即可获取无水印 mp4 下载直链
    - 📦 支持批量链接解析(空格分隔多个链接)
    - 🔍 自动校验是否为 TikTok 视频链接,非 TikTok 链接会提示并终止流程
    - ⏱️ 下载链接有效期约 5 分钟,解析成功后请立即使用
    
    ---
    
    ## 功能特性
    
    | 功能 | 说明 |
    |------|------|
    | **无水印直链** | 自动返回无水印视频下载链接,无需手动处理 |
    | **即贴即解析** | 粘贴视频链接即可,无需额外操作 |
    | **批量解析** | 支持一次粘贴多个 TikTok 视频链接,批量解析并汇总结果 |
    | **链接校验** | 自动判断输入链接是否为 TikTok 视频链接,非 TikTok 链接会提示并终止流程 |
    | **链接自适应** | 支持 www.tiktok.com 网页链接与 vm.tiktok.com 短链两种格式 |
    | **结果直出** | 解析完成直接返回下载链接,复制即可用 |
    
    ---
    
    ## 一键安装
    
    1. 前往 [redfox.hk](https://redfox.hk/settings/api-keys?source=github) 注册获取 API Key
    2. 配置环境变量:`export REDFOX_API_KEY=ark_你的密钥`
    3. 粘贴 TikTok 视频链接即可使用
    
    ---
    
    ## 使用指南
    
    > 核心执行流程详见 `references/core_workflow.md`
    
    直接用自然语言描述需求,无需记忆命令。提供正确的 TikTok 视频链接时,直接执行解析并返回结果。
    
    ### 常用说法速查
    
    | 意图 | 示例话术 | 效果 |
    |------|----------|------|
    | 下载单个视频 | 「下载这个视频 https://www.tiktok.com/@user/video/xxxxx」 | 解析链接并返回无水印下载直链 |
    | 批量下载 | 「帮我下载这几个视频 链接1 链接2 链接3」 | 批量解析,逐个返回并汇总结果 |
    | 保存视频 | 「帮我把这条 TikTok 视频存下来」 | 引导贴上链接,解析后返回下载链接 |
    
    ### 支持的作品链接格式
    
    | 平台 | 链接格式 | 示例 |
    |------|----------|------|
    | TikTok | `https://www.tiktok.com/@<用户名>/video/<视频ID>` | PC 网页链接 / 手机分享链接 |
    | TikTok | `https://vm.tiktok.com/<短码>/` | 手机分享短链接 |
    
    ---
    
    ## 使用场景
    
    | 场景 | 角色 | 示例问法 | 收益 |
    |------|------|----------|------|
    | 素材收集 | 剪辑师 | 「下载这条 TikTok 视频」 | 快速拿到无水印素材,直接进剪辑流程 |
    | 批量素材获取 | 剪辑师 | 「帮我下载这几个视频 链接1 链接2 链接3」 | 批量解析多个链接,一次拿到多份素材 |
    | 内容备份 | 收藏者 | 「保存这个 TikTok 视频」 | 原视频删除也不怕,本地永久留存 |
    | 热点分析 | 运营 | 「把这个爆款视频下下来」 | 离线反复观看,拆解爆款逻辑 |
    
    ---
    
    ## 常见问答
    
    **Q:如何获取自己的 API Key?**
    A:前往 [redfox.hk](https://redfox.hk/settings/api-keys?source=github) 注册即可获取 Token。
    
    **Q:下载的视频有水印吗?**
    A:没有。返回的是无水印视频直链。
    
    **Q:可以批量解析多个链接吗?**
    A:支持。用空格分隔多个 TikTok 视频链接即可批量解析,逐个处理并在最后汇总成功与失败数量。
    
    **Q:输入了非 TikTok 的链接会怎样?**
    A:会自动识别并校验。如果检测到非 TikTok 链接,会提示「请输入正确的 TikTok 视频链接」并终止流程。
    
    **Q:链接提示解析失败怎么办?**
    A:确认链接是否完整、视频是否仍然存在、账号内容是否公开。私密账号或已删除视频无法解析。
    
    **Q:下载链接有时效限制吗?**
    A:有。解析成功后返回的下载链接有效期约 5 分钟,请立即复制使用,过期后需要重新解析。
    
    ---
    
    ## 了解更多
    
    本工具基于 [redfox.hk](https://redfox.hk/settings/api-keys?source=github) 的视频解析服务构建。前往官网查看更多功能和使用文档。
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related