<div align="center">
<a href="https://douyin.wtf/" alt="logo"><img src="https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/HEAD/logo/logo.svg" width="120" alt="Douyin_TikTok_Download_API"/>
</div>
<h1 align="center">Douyin_TikTok_Download_API</h1>
<div align="center">
English | 简体中文
🚀 Douyin, TikTok 및 Bilibili을 위한 자체 호스팅 데이터 API입니다. docker compose up 한 번으로, 스스로 유지되는 아이덴티티 풀, REST API, MCP 서버 및 웹 콘솔이 구축됩니다.
오픈 소스이며 무료이고 사용자의 기기에서 실행되므로 가입이나 할당량 제한이 없으며 다른 사람의 방해를 받지 않습니다. 게시물, 작성자 및 댓글, 사운드, 해시태그, 라이브 룸, 트렌딩 보드 및 검색 결과를 가져오고 워터마크 없이 비디오 및 이미지 앨범을 다운로드합니다 (플랫폼이 이미 공개한 깨끗한 스트림을 추출할 뿐 제거하는 것이 아닙니다). 그리고 수집된 모든 데이터를 사용자의 PostgreSQL에 저장합니다. 다운로드한 비디오는 같은 기기에서 오프라인으로 텍스트로 변환될 수 있으며, AI 에이전트가 MCP를 통해 이 모든 것을 구동할 수 있습니다.
⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
GitHub license
Release Version
GitHub Star
GitHub forks
GitHub issues
<br>
CI
CodeQL
Last commit
<br>
Website
Live demo
Python
MCP
Docker Pulls
Docker Image Size
</div>
이 스폰서들이 기여하여 프로젝트가 유지될 수 있었으며, Douyin_TikTok_Download_API는 그 덕분에 무료로 공개됩니다. 프로젝트를 후원하려면 GitHub Sponsors 페이지를 확인하세요.
<div align="center">
<img src="https://tikhub.io/logo.jpeg" width="100" alt="TikHub.io - 글로벌 소셜 데이터 및 API 마켓플레이스">
</a>
<h2>
</h2>
<p>궁극의 소셜 미디어 데이터 및 API 마켓플레이스 (Your Ultimate Social Media Data & API Marketplace)</p>
<p>
Douyin, Xiaohongshu, TikTok, Instagram, YouTube,
Twitter 등 전문적인 데이터 솔루션 제공.<br>
실시간 데이터 | 유연한 API | 원활한 통합 | 할인 혜택을 통한 경쟁력 있는 가격
</p>
<p>
개발자, 기업 및 콘텐츠 제작자들과 함께 TikHub.io 마켓플레이스에서 커스텀 API, 서비스 및 소셜 미디어 솔루션을 구매하고 판매하세요.<br>
</p>
<p><em>글로벌 선도 인플루언서 마케팅 및 소셜 미디어 인텔리전스 플랫폼의 신뢰를 받음 (Trusted by leading global influencer marketing and social media intelligence platforms)</em></p>
<p>
·
</p>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</div>
🧩 REER — 리버스 엔지니어링 포럼 (a forum for reverse engineering)
<div>
<div align="center">
<a href="https://reer.dev" target="_blank" rel="noopener">
<img src="https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/HEAD/logo/reer.png" width="88" alt="REER">
</a>
<h3><a href="https://reer.dev" target="_blank" rel="noopener"><b>reer.dev</b></a></h3>
</div>
작업한 내용을 올릴 수 있는 곳입니다. 이 프로젝트는 사람들이 서명이 어떻게 만들어졌는지 기록해 둔 것에서 시작되었으며, 포럼은 그 다음 단계 — 즉, 서명, 프로토콜, 패커 등 분해된 모든 것을 다루는 장소입니다.
무료이며 광고가 없고, 명백한 규칙 외에는 거의 없습니다. 이중 언어(영어 및 중국어)를 지원합니다. 등록하고 게시하면 되며, 아무것도 제한되지 않습니다.
🎬 사용 모습 보기
<div align="center">
<img src="https://raw.githubusercontent.com/Evil0ctal/Douyin_TikTok_Download_API/HEAD/screenshots/console-en.gif" width="900" alt="The DTK console: overview, identities, scheduler, playground, library, downloads, API docs and MCP"/>
</div>
실제 호출은 간단합니다. 링크를 붙여넣고 전송하면 정규화된 결과가 반환됩니다. 아이덴티티 풀(identity pool), 스케줄러(scheduler), 그리고 통과하는 API 레퍼런스 모두 하나의 콘솔에 있습니다. 인터페이스는 브라우저의 언어를 따르며, 기계 번역이 아닌 수작업으로 작성되었습니다. 中文界面
아무것도 설치하지 않고 사용해 보기
https://demo.douyin.wtf 는 누구나 사용할 수 있는 라이브 인스턴스입니다. 로그인하면 — 로그인 페이지가 데모 계정 정보를 자동으로 채워주며 — 콘솔을 사용할 수 있습니다: 플레이그라운드(playground), 스케줄러, 라이브러리, API 레퍼런스. 동일한 계정에는 스크래핑 엔드포인트에 호출할 수 있는 API 키가 제공되며, 이 키는 API keys 페이지에 평문으로 표시됩니다.
이것은 읽기 전용(read-only)입니다. 데모 요청은 요청 로그나 아카이브에 기록되지 않으므로, 공개 인스턴스의 데이터베이스가 외부인에 의해 채워질 수 없으며, 데모 모드를 끄면 모든 데모 세션이 종료되고 키는 즉시 무효화됩니다.
속도 제한 (Rate limit): 10초당 30회 요청입니다. 이 한도를 초과하면 10초 동안 차단되며, 그 시간 동안 모든 요청은 거부됩니다. 이는 공유 인스턴스이며, 그 뒤에 있는 ID 풀(identity pool)은 동시에 사용하는 모든 사람의 상한선 역할을 합니다.
이 데모는 직접 구축할지 결정하기 위한 것입니다. 기반으로 구축할 서비스가 아닙니다. 다운될 수도 있고, 초기화되거나, 꺼질 수도 있으며, 이 중 어느 것도 공지되지 않을 수 있습니다.
🚀 v4 대 v5
v5는 재작성(rewrite)된 버전입니다. 빈 브랜치에서 시작했으며 v4 코드를 상속받지 않습니다.
v4의 실제 문제는 기능 부족이 아니었습니다. 바로 API가 조용히 죽고 아무도 모르게 되는 것이었습니다. 쿠키가 만료되거나, 서명 알고리즘이 변경되거나, 엔드포인트에 속도 제한이 걸리면, 누군가가 이슈를 제기할 때 비로소 알게 됩니다. v5는 기능보다 '확인 가능함(you can see it)'과 '스스로 치유됨(it heals itself)'을 우선시합니다.
| v4 | v5 |
|---|
| ID가 생성되는 곳 | 브라우저에서 쿠키를 복사하여 config.yaml에 붙여넣기 | 헤드리스 브라우저가 게스트 ID를 생성하고, 사용 가능한 ID가 부족해지면 풀이 스스로 보충됩니다 |
| ... | | |
Bilibili는 5.0 버전에서 역행한 유일한 부분이었습니다. 왜냐하면 Douyin 및 TikTok과 서명(signing) 메커니즘이나 ID를 공유하지 않기 때문입니다. Bilibili은 5.1.6 버전으로 돌아왔으며, 자체적으로 작성해야 했던 두 가지 부분, 즉 순수 Python으로 구현된 WBI 서명과 일반 HTTP를 통해 생성되는 게스트 ID 덕분에 Bilibili 풀은 브라우저 컨테이너가 필요 없습니다.
여전히 v4를 사용하시나요?
v4 코드는 v4 브랜치에 남아 있으며, 이미지가 여전히 게시되어 있고, 다음 명령 하나로 실행할 수 있습니다:
docker run -d --name dtk-v4 --restart unless-stopped \
-p 8080:80 evil0ctal/douyin_tiktok_download_api:V4.1.2
그런 다음 http://localhost:8080을 열면 됩니다. API 레퍼런스는 /docs에 있습니다. 포트 8080은 의도적인 것인데, v5는 8000을 바인딩하기 때문에 두 버전이 하나의 머신에서 나란히 실행될 수 있도록 하기 위함입니다.
사용하기 전에 Douyin 쿠키를 교체하세요. v4는 Identity Pool이 없으며, 이미지에 내장된 쿠키는 오래전에 만료되었으므로, 자체 쿠키를 넣기 전까지 Douyin 엔드포인트는 400 응답을 반환합니다:
docker cp dtk-v4:/app/crawlers/douyin/web/config.yaml ./douyin-web.yaml
docker rm -f dtk-v4
...
TikTok의 두 설정 파일은 /app/crawlers/tiktok/web/config.yaml과 /app/crawlers/tiktok/app/config.yaml에 있으며, 동일한 방식으로 마운트됩니다.
Compose에서 관리하려면 하나의 파일만 있으면 됩니다. 이미 douyin-web.yaml이 옆으로 복사되었거나, Docker가 해당 이름의 디렉터리를 생성하고 앱이 설정 파일을 읽지 못하게 할 것입니다:
docker rm -f dtk-v4
docker compose -p dtk-v4 up -d
main은 이제 v5이며 latest는 가장 최신 v5 릴리스입니다. 이는 릴리스가 확정될 때 이동하며, main에 푸시할 때 절대 이동하지 않으므로 태그를 고정하여 v4에 머무르세요. V4.1.2가 마지막 v4 릴리스였으며, 해당 브랜치에는 그 이후 몇 개의 PR(Bilibili 다운로드, 쿠키 핫 리로딩)이 병합되었고, 이 코드는 커밋 태그 5be4838 아래에 게시되었습니다.
v4용 가이드 설치 프로그램은 없습니다. 아래 빠른 시작의 스크립트는 v5를 설치합니다. 위에 있는 내용은 v4가 할 수 있는 모든 것입니다. 해당 브랜치는 여전히 PR을 받지만, 새로운 것은 빌드되지 않으며, 새로 설치하면 v5로 시작해야 합니다.
함께 구축하기 (Building this together)
제 오픈 소스 프로젝트 주변에는 몇 개의 그룹 채팅이 있습니다. 만약 이 프로젝트에 참여하고 싶거나 단순히 기술적인 이야기를 나누고 싶다면, WeChat에서 **Evil0ctal**에게 github 交流라는 메모와 함께 연락 주시면 제가 초대하겠습니다.
그룹은 서로 배우기 위한 것입니다. 광고나 불법적인 것은 없습니다 — 친구를 사귀고 작업에 대해 이야기하기 위한 것입니다.
📦 가져올 수 있는 것 (What it can fetch)
| Capability | Douyin | TikTok | Bilibili |
|---|
| One post (video or image album) | ✅ | ✅ | ✅ |
| ... | | | |
| Douyin은 팔로워 및 팔로잉 목록을 로그인 세션에 한해서만 제공하므로, 해당 두 엔드포인트는 아예 등록되지 않았습니다. 항상 빈 페이지를 반환하는 엔드포인트는 아무 가치가 없습니다. 검색과 해시태그 아래 게시물도 마찬가지입니다. Douyin은 게스트에게 둘 다 거부하며, 아직 로그인한 답변이 측정된 적이 없으므로 그곳에서도 제공하지 않습니다. | | | |
| TikTok의 경우 검색에서 게스트에게는 얇은 페이지 하나만 보여주기 때문에, 가져온 로그인이 페이지를 채웁니다. 자체 로그인 쿠키를 가져오는 것은 나머지 내용들이 볼 수 있는 범위도 넓혀줍니다. | | | |
| Bilibili에서는 댓글이 가장 중요합니다: 게스트에게는 가장 인기 있는 세 개만 보여주므로, 가져온 로그인이 이를 전체 스레드로 만듭니다. Douyin은 작가의 '좋아요' 게시물을 아예 결정합니다: 게스트에게는 공개 여부와 관계없이 아무것도 보여주지 않으므로, 해당 목록은 로그인된 신원이 필요합니다. | | | |
대시(-)는 공백이 아닙니다. Douyin 또는 TikTok 게시물은 한 번에 하나의 비디오만 포함하므로, 나눌 부분이 없습니다.
미디어 다운로드, 콘텐츠 아카이브, 카운터 스냅샷, 컬렉션 및 시청 목록은 내장되어 있으며, 이들 중 어느 것도 다른 서비스가 필요하지 않습니다.
🤖 AI 에이전트 사용하기: MCP
Claude Code, Claude Desktop, Codex CLI, Cherry Studio 또는 기타 모든 MCP 클라이언트를 자체 인스턴스의 /mcp에서 포인트하여, 에이전트는 게시물, 작성자 및 댓글을 읽고, 게시물의 미디어를 저장하며, 이를 전사(transcribe)할 수 있습니다. 이는 REST API와 동일한 서비스 계층, 신원 풀 및 스케줄러를 거치며, API 키의 범위가 수행할 수 있는 것을 제한합니다.
claude mcp add --transport http dtk http://127.0.0.1:8000/mcp/ \
--header
| Tool | What it does |
|---|---|
| `parse_url` | 링크가 가리키는 모든 것 — 게시물, 작성자, 단축 링크, 붙여넣은 공유 텍스트를 가져옵니다 |
| ... |
Ten tools, and few on purpose: every extra tool makes an agent worse at picking the right one, so a
new capability arrives as an argument to an existing tool. Setup for each client, and what every tool returns: [MCP 및 AI 에이전트](./documents/en/12-mcp.md). The console shows the same guide at `/mcp-guide`.