N8N

Workflow tự động download video TikTok không logo với n8n

TikTok đã trở thành một nền tảng video ngắn không thể thiếu trong cuộc sống số của chúng ta. Tuy nhiên, việc tải video TikTok về mà không kèm theo logo thương hiệu vẫn luôn là một thách thức. Có vô số lý do để bạn cần một video sạch: từ việc muốn đăng lại lên các nền tảng khác, sử dụng cho mục đích phân tích nội dung, hay đơn giản chỉ là lưu giữ khoảnh khắc yêu thích.

Trong cộng đồng tự động hóa, đặc biệt là với công cụ n8n, đã có nhiều giải pháp được chia sẻ. Tuy nhiên, phần lớn thường dừng lại ở việc tải video hoặc phụ thuộc vào các API của bên thứ ba không ổn định.

Hướng dẫn này sẽ đi sâu vào một workflow hoàn chỉnh, không chỉ giúp bạn tải video TikTok không logo mà còn tự động trích xuất thông tin, đổi tên file một cách khoa học và lưu trữ lên Google Drive, sẵn sàng để chia sẻ.

Chia sẻ bởi Little Excel 

Dựa trên chia sẻ của bài viết, mình có làm thành workflow, có sửa và thêm 1 vài tính năng cơ bản để bạn thử nghiệm và phát triển thêm ý tưởng

Download free workflow n8n: DOWNLOAD_VIDEO_TIKTOK.json

Bóc tách cấu trúc dữ liệu TikTok: Chìa khóa để tải video không logo

Để tự động hóa, chúng ta cần hiểu cách TikTok cung cấp dữ liệu. Khi bạn truy cập một trang video TikTok trên trình duyệt, máy chủ sẽ gửi về mã nguồn HTML, trong đó có một “kho báu” ẩn.

1. Khám phá nguồn dữ liệu ẩn

Bên trong mã nguồn trang, có một thẻ <script> đặc biệt với id="__UNIVERSAL_DATA_FOR_REHYDRATION__". Thẻ này chứa một chuỗi JSON khổng lồ với tất cả thông tin chúng ta cần.

2. Phân tích chuỗi JSON

Chuỗi JSON này chứa mọi thứ, từ ID video, mô tả, thông tin tác giả, cho đến liên kết video gốc. Khi phân tích, bạn sẽ thấy dữ liệu video nằm sâu trong đường dẫn: __DEFAULT_SCOPE__ -> webapp.video-detail -> itemInfo -> itemStruct. Bên trong itemStruct, mục tiêu chính của chúng ta là đối tượng video, nơi chứa:

  • playAddr: Một chuỗi (string) chứa liên kết trực tiếp để tải video với chất lượng gốc, không chứa logo.

Xây dựng workflow n8n để tải và lưu trữ video

Bây giờ, hãy bắt tay vào việc xây dựng workflow trong n8n.

1. Lấy dữ liệu thô từ TikTok (Nodes: URL, HTTP Request, Code in JavaScript)

  • Node URL (Set): Bắt đầu bằng việc định nghĩa URL của video TikTok cần tải.
  • Node HTTP Request: Dùng phương thức GET để tải về nội dung HTML của trang. Điều quan trọng là phải bật tùy chọn Full Response trong Options -> Response để lấy được cả headers, đặc biệt là set-cookie cho các bước sau.
  • Node Code in JavaScript: Nội dung trả về là HTML thô. Chúng ta dùng một đoạn mã JavaScript với biểu thức chính quy (regex) để tìm và trích xuất chuỗi JSON từ thẻ script có id="__UNIVERSAL_DATA_FOR_REHYDRATION__", sau đó chuyển nó thành một đối tượng JSON có thể sử dụng được.
const htmlContent = $input.first().json.data;
const regex = /<script[^>]*id=\"__UNIVERSAL_DATA_FOR_REHYDRATION__\"[^>]*>([\s\S]*?)<\/script>/i;
const match = htmlContent.match(regex);

if (match && match[1]) {
    const jsonString = match[1].replace('', '').trim();
    const videoData = JSON.parse(jsonString);
    return [{ json: videoData }];
} else {
    throw new Error('Không tìm thấy dữ liệu video TikTok.');
}

2. Trích xuất và chuẩn bị dữ liệu (Node: Clean Data)

Sau khi có đối tượng JSON, chúng ta sử dụng một node Set (đặt tên là Clean Data) để trích xuất và chuẩn bị tất cả các thông tin cần thiết cho các bước tiếp theo:

  • urlDownload: Lấy link tải video gốc:
    ={{ $json.__DEFAULT_SCOPE__['webapp.video-detail'].itemInfo.itemStruct.video.playAddr }}
  • cookie: Ghép các set-cookie từ header lại thành một chuỗi duy nhất để xác thực:
    ={{ $('HTTP Request').item.json.headers['set-cookie'].join(';') }}
  • urlTiktok: Lấy lại URL gốc để dùng làm Referer:
    ={{ $('URL').item.json.url }}
  • videoID: Trích xuất ID của video để đặt tên file:
    ={{ $json.__DEFAULT_SCOPE__['webapp.video-detail'].itemInfo.itemStruct.id }}
  • author: Trích xuất ID của tác giả để đặt tên file:
    ={{ $json.__DEFAULT_SCOPE__['webapp.video-detail'].itemInfo.itemStruct.author.uniqueId }}

3. Tải video không logo (Node: Download Video)

Bây giờ chúng ta tạo một node HTTP Request thứ hai để tải video. Node này sử dụng các dữ liệu đã được chuẩn bị ở bước trước:

  • URL: Sử dụng biến urlDownload.
  • Send Headers: Bật tùy chọn này và thêm các header sau:
    • Cookie: Giá trị là biến cookie.
    • Referer: Giá trị là biến urlTiktok.

Kết quả trả về từ node này là dữ liệu nhị phân (binary data) của video.


Mở rộng workflow: Tự động lưu trữ lên Google Drive

Phần bổ sung này của workflow này giúp video được lưu trữ và có thể dùng lại cho các mục đích khác.

1. Đặt tên file động
(Node: Set Name for Video)

Để tránh các file có tên ngẫu nhiên, chúng ta dùng một node Code để tạo tên file có cấu trúc author-videoID.mp4. Điều này giúp quản lý file dễ dàng hơn rất nhiều.

return items.map((item) => {
  const author = $input.first().json.author
  const videoID = $input.first().json.videoID
  const filename = `${author}-${videoID}.mp4`;

  item.binary.data.fileName = filename;

  return item;
});

2. Tải file lên Google Drive
(Node: Upload to Google Drive)

Node này sẽ lấy dữ liệu video nhị phân (với tên file đã được đặt ở bước trên) và tự động tải nó lên một thư mục được chỉ định trước trong Google Drive của bạn.

LƯU Ý:
Bạn cần thiết lập thông tin xác thực (Credentials) cho API Google Drive để node này hoạt động.

3. Chia sẻ file công khai
(Node: Set file permissions to public with link)

Bước cuối cùng, workflow sử dụng một node Google Drive khác để thay đổi quyền truy cập của file vừa tải lên thành “bất kỳ ai có đường liên kết”. Điều này giúp bạn có ngay một liên kết công khai để chia sẻ video mà không cần phải thực hiện thêm bất kỳ thao tác thủ công nào.


Bằng cách kết hợp các node của n8n, chúng ta không chỉ giải quyết được bài toán tải video TikTok không logo mà còn xây dựng được một quy trình tự động hóa hoàn chỉnh: từ việc lấy dữ liệu, tải file, xử lý metadata để đặt tên, cho đến việc lưu trữ lên đám mây và tạo link chia sẻ. Workflow này mở ra nhiều cơ hội cho các nhà sáng tạo nội dung, nhà phân tích, giúp tiết kiệm thời gian và tăng hiệu quả công việc.

Hy vọng những chia sẻ chi tiết này sẽ giúp bạn tự tin xây dựng giải pháp của riêng mình. Chúc bạn thành công!

Duy Nghiện
Hãy làm khán giả, đừng làm nhân vật chính :)

You may also like

Nhận thông báo qua email
Nhận thông báo cho
guest

0 Bình luận
Mới nhất
Cũ nhất Nhiều like nhất
Phản hồi nội tuyến
Xem tất cả bình luận