AI Systems · TikTok Miner · Demo, public

TikTok Miner turns a creator's whole catalog into something you can ask questions of

TikTok content intelligence: an ETL pipeline ingests video URLs, transcribes the audio, pulls frame-by-frame metadata, then chunks and embeds everything into a vector store, the “Digital Brain” you can query.

Demo · publicstatus
Full catalogaudio + frames + metadata
An evening, thirty videos

Studying one creator: three hours of scrolling, thirty videos, no pattern

Every short-form script I wrote started the same way: open a creator who was winning, watch at 2x, pause, retype the hook into a doc, screenshot the caption, scroll on. An evening of that produced notes on maybe thirty videos and a hunch about a pattern I could never actually check.

The accounts I most wanted to study made it worse. The sharpest playbooks in my niches lived on Douyin, in Chinese, behind catalogs of hundreds of videos, and the only question that mattered, which openings does this person repeat, and do the repeated ones earn the plays?, is one a feed cannot answer. A feed shows you videos one at a time, in the order it chooses, in whatever language they were shot. Somewhere around the hundredth swipe of one catalog I admitted the problem was not my patience. The catalog should be queryable, and no amount of disciplined note-keeping was going to make it so.

Before · studying one creator
Watch, pause, retype the hook3–4 min a video
One evening of scrolling~30 videos logged
The best scripts, on Douyinlanguage wall
The starting state: content research as a feed you scroll, notes that go stale in a week, and the strongest reference material locked behind a language I could not skim.
The research

Creative Center, downloader chains, a spreadsheet

Tried, then droppedtrends, chains, a link list
Trend dashboards: hot sounds, one creator's catalog out of reach
Downloader + transcriber chains: one video at a time, stats lost
A spreadsheet of links: stale in a week, still no transcripts

TikTok's own Creative Center is genuinely good at what it does: trending sounds, hashtags and top-performing ads, refreshed constantly. But trends were never my question. My question was about one specific creator's body of work.

The manual route existed too: a downloader tab, a transcription app, a spreadsheet. Chained together they could turn one video into text in about ten minutes of copy-pasting, with the play counts left behind on the platform; multiplied across a catalog, that was the old evening again with more tabs open. And nothing off the shelf spoke Douyin at all, where login walls and anti-bot defenses stop casual tools cold. What I needed was narrower than any of it: pull one creator's whole catalog with the stats attached, transcribe exactly the videos I choose, verbatim, in the original language, and keep a person between the scrape and the model at every step.

Scope, decided first

Narrower than any tool on the market, on purpose

I fixed the boundary before writing anything. This would not become a scheduler or an auto-poster. One pipeline, two human gates, clean exports.

Goals: paste a creator URL and get the catalog back as a sortable table, plays, likes, comments and shares attached; every transcript verbatim and in its original language, Chinese included; and the model never runs unattended, I pick the videos worth transcribing and sign off the transcript before anything gets rewritten.

creator url → publishable script nothing reaches a model until a human picks the videos Creator URL Douyin · TikTok input Cookie capture Playwright login · QR auth Batch scrape videos + stats collect Select videos human picks · credit check gate Strip audio ffmpeg · 64kbps mp3 audio Transcribe Gemini 2.5 Flash verbatim Review transcript human edits, signs off gate Polish · TTS · XLSX localized script out output
What a single run does: a real Playwright session captures login cookies, the collector batch-scrapes the catalog with its stats, and nothing reaches a model until I pick the videos. Audio is stripped with ffmpeg, transcribed verbatim by Gemini 2.5 Flash, and only a transcript I have signed off gets polished into a localized script, voiced with Inworld TTS and exported to Excel.
What the collector handles

The transcription API I never had to add

I assumed I would need a dedicated speech-to-text service, then tried uploading the audio straight to Gemini 2.5 Flash through the Files API with a verbatim-transcript prompt. It came back clean, in the right language, Chinese included, in one call: recognition, language handling and formatting collapsed into a single request, and the file is deleted right after. ffmpeg strips each video to a 64kbps mp3 first, so the upload stays small.

Collection was the opposite: nothing collapsed, everything layered. The design goal was to behave like the person whose account is doing the reading, because that is what the account is entitled to see. So the collector runs at a deliberately slow rate, waits a randomised interval between pages instead of a fixed one, walks the catalogue by simulating the clicks a reader would make, and signs in with the user's own session rather than a shared pool. There is more in there, and I am not going to write the whole recipe down. The part worth stating is the constraint it is built around: one person's own access, at one person's pace. The proxy that makes it reachable from the browser is pinned to douyin.com and tiktok.com and refuses private IPs, so it cannot be turned into an open relay. Everything lives in one 2,400-line App.tsx workbench on an Express backend, with Stripe credits, free 20, lite 200, pro 1,500, enforced on both client and server.

Shipped on
React 19 Vite Express Gemini 2.5 Flash Playwright Vercel
From URL to brain

Paste a URL, get a catalogue you can interrogate

tk-miner-2-0.vercel.app
TK-Miner landing page stating the knowledge-mining thesis
TK-Miner dashboard showing videos scraped, knowledge chunks and estimated API cost
TK-Miner mining queue with batch scrape jobs, worker status and system logs
TK-Miner knowledge base with one digital-brain card per tracked creator

Once a catalogue is embedded, four things sit on top of it that scrolling could never give you.

Ask the brain

Retrieval-augmented chat against one creator's whole corpus. A question like how this person frames pricing is answered from hundreds of their own videos, with the clips it drew on.

Read the mechanics

Engagement heatmaps, pacing scores and hook efficacy per video, plus two creators placed side by side so a format difference shows up as a shape rather than an opinion.

Mine on a schedule

The workers re-run on their own, transcribing, vectorizing and indexing new posts as they drop, so a tracked creator stays current without anyone remembering to check.

Watch the category

Aggregating across hundreds of creators surfaces the topics heating up in a niche, which is the read a content calendar actually needs.

The model split follows the same cost logic as the rest of these tools. Gemini handles the reasoning passes, DeepSeek handles the code and logic analysis, and the embeddings live in Pinecone behind a React and TypeScript front end. Access is scoped with SSO and roles, with each account's vector store kept separate, because a shared index across clients is the one failure this class of product cannot recover from.

The evening, reclaimed

The evening of scrolling became a query

Studying a creator used to be an evening of scrolling that logged thirty-ish videos. Now one pasted URL brings the whole catalog back as a table I sort by plays, and any video I select returns as a verbatim transcript minutes later. I will not invent a revenue number for this one; that is what I can measure.

The other change is the language wall. A Douyin video I could not have used at all now goes from Chinese audio to a reviewed transcript to a native-English short-form script with a voiceover, in one sitting, and the lot exports to Excel where the rest of my workflow already lives. The two human gates are why I trust the output: the model transcribes what I picked and rewrites what I approved, nothing else.

Studying one creator
1 URL was an evening of scrolling
From Douyin to draft
Verbatim transcript, original language
Localized English script
Voiceover + XLSX export
Before and after: catalog research collapses from an evening of scrolling to a pasted URL and a sortable table, and a Chinese-language video becomes a publishable English script in one reviewed pass.
Keep reading
What it runs on

An ETL pipeline with a vector store at the end of it

Application

React 19 logoReact 19Dashboard, mining queue and the digital-brain views. TypeScript logoTypeScriptAcross the app and the worker contracts. Vite logoViteBuild tooling. Express logoExpressThe job API behind the miners.

Pipeline

Playwright logoPlaywrightSession capture and catalogue collection. FFmpeg logoFFmpegAudio extraction before transcription.

Models

Gemini 2.5 Flash logoGemini 2.5 FlashTranscription and the chunk summaries. DeepSeek logoDeepSeekLogic and comparison passes across creators. GPT-4o logoGPT-4oThe retrieval-augmented chat over a creator’s corpus.

Data and delivery

Neon Postgres logoNeon PostgresCatalogues, transcripts and job state. Pinecone logoPineconeThe embeddings behind the digital brain and its retrieval. Stripe logoStripePlan tiers. Vercel logoVercelHosting and the serverless ETL workers.

This is the only tool in the set with a vector store, because it is the only one whose question is open-ended. The others match against a bounded rulebook, where retrieval would add cost and remove certainty.

Want this kind of tooling on your team?

Nine systems shipped, compliance, reporting, intelligence, content.