Quản lý mạng xã hội white label cho agency và SaaS
Gửi cho mỗi khách hàng một link dẫn tới trang kết nối mang logo, nội dung và giao diện của bạn. Khách hàng kết nối TikTok, Instagram, YouTube hoặc LinkedIn một lần. Từ đó, bạn đăng bài và lên lịch thay họ qua API, n8n hoặc Make.
Bắt đầu miễn phí, không cần thẻ tín dụng. White label có từ gói Professional.
import { UploadPost } from 'upload-post';
const api = new UploadPost('YOUR_API_KEY');
// Mỗi khách hàng một hồ sơ
const client = 'client-harbor';
await api.createUser(client);
// Link kết nối mang thương hiệu của bạn, hiệu lực 48 giờ
const { access_url } = await api.generateJwt(client, {
logoImage: 'https://agencycuaban.vn/logo.png',
connectTitle: 'Kết nối tài khoản của bạn',
redirectUrl: 'https://agencycuaban.vn/hoan-tat',
platforms: ['instagram', 'tiktok', 'linkedin']
});
// Gửi access_url cho khách hàng Ảnh chụp màn hình thật
Khách hàng của bạn sẽ thấy gì
Đây là trang kết nối thật mà khách hàng của bạn mở ra, hiển thị với một thương hiệu mẫu. Northwind Studio là agency giả định và "Harbor Demo Cafe" là khách hàng giả định; còn trang, bố cục và các tùy chọn đều là thật.
platforms.
connect_theme: "dark". Khi bạn cố định chế độ, nút chuyển sáng/tối bị ẩn, nên khách hàng nào cũng thấy đúng lựa chọn của bạn.
ui_labels: dòng chữ nhỏ trên tiêu đề, tiêu đề các mục, đoạn quyền riêng tư và mọi nút Connect giờ hiển thị đúng câu chữ agency muốn.
platforms, khách hàng thấy mọi mạng xã hội, các mạng ít phổ biến nằm sau nút "Show 9 more networks". Reddit hiện là không khả dụng vào ngày chúng tôi chụp ảnh này.
Khách hàng làm được gì trên trang đó
- Kết nối TikTok, Instagram, YouTube, LinkedIn và các mạng dùng OAuth khác ngay trên màn hình đăng nhập của chính mạng đó, nên mật khẩu của họ không bao giờ đến tay bạn hay Upload-Post. Bluesky, Telegram, Discord và một vài mạng khác thì dùng app password, bot token hoặc webhook.
- Chọn Trang Facebook, trang công ty LinkedIn hoặc địa điểm Google Business mà bạn sẽ đăng bài lên.
- Kết nối lại tài khoản đã hết quyền truy cập, hoặc ngắt kết nối bất cứ lúc nào.
- Xem lịch các bài đã lên lịch, nếu bạn để tab này bật. Với tùy chọn chỉ xem, họ chỉ làm được đúng việc này.
- Quay về website của bạn bằng nút mà bạn đã đặt tên.
Link gắn với một hồ sơ duy nhất. Khách hàng chỉ xem và thay đổi được tài khoản của chính họ, không bao giờ thấy các khách hàng khác của bạn hay API key của bạn.
Cách hoạt động với một agency
Năm bước từ lúc có khách hàng mới đến bài đăng đầu tiên được lên lịch. Bước nào cũng làm được từ dashboard hoặc qua API.
- 1
Tạo một hồ sơ cho mỗi khách hàng
Trong dashboard, vào Manage Users và thêm một hồ sơ (profile), hoặc gọi
POST /api/uploadposts/usersvới username nhưclient-harbor. Mỗi hồ sơ giữ một tài khoản cho mỗi mạng xã hội. - 2
Tạo link kết nối mang thương hiệu của bạn
Bấm Share cạnh hồ sơ rồi điền logo, tiêu đề, mô tả, ngôn ngữ, URL chuyển hướng, chữ trên nút và các mạng. Hoặc gửi các trường đó tới
POST /api/uploadposts/users/generate-jwt. Bạn nhận lại mộtaccess_urldùng được trong 48 giờ. - 3
Gửi link cho khách hàng
Qua email, chat hoặc ngay trong quy trình onboarding của bạn. Khách hàng không cần tài khoản Upload-Post và không bao giờ thấy dashboard của bạn.
- 4
Khách hàng kết nối tài khoản
Họ đăng nhập TikTok, Instagram, YouTube hoặc LinkedIn và cấp quyền truy cập. Token được lưu mã hóa và tự động làm mới. Nếu bạn thiết lập webhook, bạn nhận sự kiện
social_account_connectedngay khi việc đó xảy ra. - 5
Đăng bài và lên lịch thay họ
Đăng bài với
user=client-harborvà thêmscheduled_dateđể lên lịch. Bạn làm việc này từ dashboard, từ code của mình, từ template n8n, một scenario Make hoặc trợ lý AI qua MCP server. Lấy số liệu của từng khách hàng từ endpoint analytics.
Tất cả tùy chọn thương hiệu
Tất cả đều là trường của lệnh gọi generate-jwt và được lưu trên hồ sơ của khách hàng. Cột cuối cho biết bạn có đặt được tùy chọn đó từ dashboard hay không.
| Tùy chọn | Tham số | Chức năng | Ví dụ | Dashboard |
|---|---|---|---|---|
| Logo | logo_image | Hiển thị logo của bạn ở đầu trang. Dùng được mọi URL ảnh công khai (http hoặc https). | "https://agencycuaban.vn/logo.png" | Có |
| Tiêu đề trang | connect_title | Thay tiêu đề chính, mặc định là "Connect your social accounts". | "Kết nối tài khoản với Northwind Studio" | Có |
| Mô tả | connect_description | Thay dòng chữ nằm dưới tiêu đề. | "Liên kết các kênh mà chúng tôi sẽ quản lý cho bạn." | Có |
| Mạng xã hội hiển thị | platforms | Chỉ những mạng bạn liệt kê mới xuất hiện. Không gửi trường này thì khách hàng thấy mọi mạng xã hội. | ["instagram", "tiktok", "linkedin"] | Có |
| URL chuyển hướng | redirect_url | Nơi nút quay lại đưa khách hàng về khi họ làm xong. | "https://agencycuaban.vn/onboarding/hoan-tat" | Có |
| Chữ trên nút quay lại | redirect_button_text | Nhãn hiển thị trên nút quay lại đó. | "Quay lại Northwind Studio" | Có |
| Ngôn ngữ | language | Cố định tiếng Anh, Tây Ban Nha, Đức, Pháp, Bồ Đào Nha, Ba Lan hoặc Thổ Nhĩ Kỳ. Nếu không đặt, trang theo ngôn ngữ của trình duyệt và mặc định về tiếng Anh. | "en" | Có |
| Mọi đoạn chữ trên trang | ui_labels | Viết lại từng đoạn chữ của trang theo khóa (key): nút bấm, tiêu đề các mục, đoạn về quyền riêng tư. Tối đa 100 khóa, mỗi khóa 300 ký tự. | {"connect.card.connect": "Liên kết tài khoản"} | Chỉ qua API |
| Chế độ sáng/tối | connect_theme | Cố định chế độ sáng hoặc tối và ẩn nút chuyển chế độ. "auto" trả lại quyền chọn cho người xem. | "dark" | Chỉ qua API |
| Tab lịch | show_calendar | Hiện hoặc ẩn tab lịch với các bài đã lên lịch của hồ sơ đó. Mặc định bật. | false | Có |
| Lịch chỉ xem | readonly_calendar | Khách hàng chỉ xem được lịch. Họ không thể sửa hay xóa bài, cũng không thể kết nối hoặc ngắt kết nối tài khoản. | true | Có |
Mọi tùy chọn trong một request
curl -X POST https://api.upload-post.com/api/uploadposts/users/generate-jwt \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "client-harbor",
"logo_image": "https://agencycuaban.vn/logo.png",
"connect_title": "Kết nối tài khoản với Northwind Studio",
"connect_description": "Liên kết các kênh mà chúng tôi sẽ quản lý cho bạn.",
"platforms": ["instagram", "tiktok", "linkedin"],
"redirect_url": "https://agencycuaban.vn/onboarding/hoan-tat",
"redirect_button_text": "Quay lại Northwind Studio",
"language": "en",
"connect_theme": "light",
"ui_labels": { "connect.card.connect": "Liên kết tài khoản" },
"show_calendar": false
}' Cần lưu ý
- Hãy gửi đầy đủ thông tin thương hiệu mỗi lần tạo link. Logo, tiêu đề, mô tả, chữ trên nút, URL chuyển hướng, danh sách mạng và ngôn ngữ sẽ bị xóa khỏi hồ sơ nếu bạn không gửi.
-
ui_labels,connect_themevà hai công tắc lịch chỉ thay đổi khi bạn gửi chúng. Gửinullhoặc{}để đặt lại các nhãn. - Nhãn thay chữ trong ngôn ngữ mà trang đang hiển thị. Nếu bạn viết nhãn bằng tiếng Việt mà trình duyệt của khách hàng dùng tiếng Pháp, phần còn lại của trang vẫn là tiếng Pháp, vì vậy hãy đặt cả
language. - Danh sách khóa nhãn và mô tả đầy đủ các tham số có trong tài liệu User Profiles API.
Những phần không được white label
Thà bạn đọc ở đây còn hơn phát hiện ra qua khách hàng. Những phần này của quy trình vẫn hiển thị Upload-Post hoặc mạng xã hội.
Địa chỉ trang
Trang có sẵn nằm ở app.upload-post.com/connect. Không có tùy chọn tên miền riêng hay CNAME. Nếu cần dùng tên miền của mình, hãy tự dựng trang bằng Connect API; OAuth callback vẫn đi qua app.upload-post.com trong chốc lát.
Màn hình cấp quyền của các mạng xã hội
Khi khách hàng đăng nhập, TikTok, Meta, Google, LinkedIn và các mạng khác hiển thị màn hình riêng với ứng dụng đã đăng ký ở đó, tức là ứng dụng đã được duyệt của Upload-Post. Đó cũng là lý do bạn không phải qua vòng duyệt ứng dụng (app review) của họ.
Hộp quyền riêng tư
Trang luôn có một ghi chú ngắn "How your data is used", kèm link tới chính sách quyền riêng tư của Upload-Post và [email protected]. Mặc định, ghi chú này nêu TONVI TECH SL, công ty đứng sau Upload-Post, là bên xử lý dữ liệu. Bạn có thể viết lại câu chữ bằng ui_labels, nhưng hộp này và các link đó vẫn ở lại.
Màu sắc, tiêu đề tab và dashboard của bạn
Bạn chọn sáng hoặc tối, không chọn được màu thương hiệu: các nút vẫn giữ màu chàm (indigo) của Upload-Post. Tiêu đề và biểu tượng trên tab trình duyệt là của Upload-Post. Dashboard mà nhóm của bạn đăng nhập là Upload-Post, không phải một ứng dụng đã đổi thương hiệu.
Sao không tự xây các tích hợp?
Tích hợp trực tiếp nghĩa là phải qua vòng duyệt ứng dụng với Meta và TikTok, tự viết logic làm mới token và xử lý các thay đổi API gây lỗi, lặp lại cho từng mạng. Với một API duy nhất, bạn có mọi mạng xã hội sau một endpoint cùng trang kết nối ở phía trên.
Agency
Mỗi khách hàng một hồ sơ, thương hiệu của bạn trên link kết nối, đăng bài và lên lịch từ một nơi
Nền tảng SaaS
Thêm tính năng đăng lên mạng xã hội vào sản phẩm mà không phải xây tích hợp riêng cho từng mạng
Công cụ sáng tạo nội dung
Cho người dùng chia sẻ những gì họ tạo ra thẳng lên tài khoản mạng xã hội của chính họ
Các lệnh gọi API phía sau
Dành cho lập trình viên nhúng tính năng này vào SaaS hoặc công cụ của agency. Không phải tự xây luồng OAuth, không phải quản lý thông tin xác thực của từng nền tảng.
Tạo hồ sơ cho mỗi khách hàng hoặc người dùng
Hồ sơ là nơi chứa các tài khoản mạng xã hội của một khách hàng (hoặc một người dùng trong ứng dụng của bạn). Hãy dùng ID nội bộ của bạn làm username để việc đối chiếu về sau thật đơn giản.
curl -X POST https://api.upload-post.com/api/uploadposts/users \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "your-internal-user-id-123"}' Tạo URL kết nối mang thương hiệu của bạn
Đây là nơi bạn đặt thông tin thương hiệu: logo, tiêu đề, URL chuyển hướng, các mạng và những tùy chọn khác trong bảng ở trên. Phản hồi chứa access_url, có hiệu lực 48 giờ.
curl -X POST https://api.upload-post.com/api/uploadposts/users/generate-jwt \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "your-internal-user-id-123",
"redirect_url": "https://yourapp.com/social-connected",
"logo_image": "https://yourapp.com/logo.png",
"platforms": ["tiktok", "instagram", "youtube"]
}' Khách hàng kết nối tài khoản
Đưa khách hàng hoặc người dùng tới access_url. Trên các mạng dùng OAuth như TikTok, Instagram và YouTube, họ xác thực trực tiếp với mạng đó, nên Upload-Post không bao giờ thấy mật khẩu của họ, và token nhận được sẽ được lưu mã hóa.
Upload-Post lo giúp bạn
Luồng OAuth 2.0
Làm mới token
Lưu trữ mã hóa
Đăng hoặc lên lịch thay họ
Đưa username của hồ sơ vào tham số user trong bất kỳ request upload nào. Thêm scheduled_date để đăng sau thay vì đăng ngay.
curl -X POST https://api.upload-post.com/api/upload \
-H "Authorization: ApiKey YOUR_API_KEY" \
-F "user=your-internal-user-id-123" \
-F "video=@/path/to/video.mp4" \
-F "title=Thực đơn mùa thu mới" \
-F "platform[]=tiktok" \
-F "platform[]=instagram" \
-F "scheduled_date=2026-10-02T09:00:00Z" Một API key, mỗi khách hàng một hồ sơ
Tất cả khách hàng của bạn nằm dưới một tài khoản và một API key, mỗi khách hàng có hồ sơ riêng với các tài khoản mạng xã hội riêng.
Hồ sơ hoạt động thế nào
Mỗi hồ sơ kết nối một tài khoản cho mỗi mạng. Gói của bạn quyết định số hồ sơ, và số hồ sơ không phải là giới hạn tổng số tài khoản mạng xã hội: với gói Professional, bạn có thể kết nối cùng lúc 25 tài khoản TikTok, 25 tài khoản Instagram và 25 tài khoản LinkedIn.
- Thông tin xác thực tách biệt: token mạng xã hội của mỗi khách hàng chỉ thuộc về hồ sơ của họ
- Webhook cho từng khách hàng: đặt cho mỗi hồ sơ một URL riêng để nhận sự kiện kết nối và upload
- Một hóa đơn: một gói đăng ký duy nhất cho mọi khách hàng
Ví dụ cách tổ chức
| Gói | Số hồ sơ | Trả theo tháng | Trả theo năm |
|---|---|---|---|
| Professional | 25 | $50/tháng | $33/tháng ($400/năm) |
| Advanced | 75 | $147/tháng | $118/tháng ($1.411/năm) |
| Business | 225, sau đó $1/tháng cho mỗi hồ sơ thêm | $438/tháng | $350/tháng ($4.205/năm) |
Giá bằng USD tại thời điểm tháng 9/2026. Giá bằng euro và các gói hồ sơ bổ sung cho Professional và Advanced có trong mục bảng giá, luôn là nguồn cập nhật nhất.
Ai dùng tích hợp mạng xã hội white label?
Nền tảng SaaS
Hệ thống quản lý nội dung, nền tảng marketing automation và phần mềm doanh nghiệp.
Agency marketing
Agency digital marketing và các công ty dịch vụ quản lý mạng xã hội.
Nền tảng nội dung
Nền tảng blog, trang lưu trữ video và công cụ sáng tạo nội dung.
Nền tảng giáo dục
Hệ thống quản lý học tập (LMS) và nền tảng nội dung giáo dục.
Nền tảng thương mại điện tử
Sàn thương mại điện tử và các giải pháp bán hàng online.
Nền tảng video
Nền tảng lưu trữ video và dịch vụ phát trực tuyến.
Thông số kỹ thuật và tuân thủ
Nền tảng được hỗ trợ
Và 11 nền tảng khác, gồm Google Business, Slack, Mastodon và WordPress. Xem đủ 22 nền tảng
Tính năng bảo mật
Token mạng xã hội được mã hóa khi lưu trữ.
Trên các mạng dùng OAuth, khách hàng đăng nhập ngay trên màn hình của chính mạng đó. Mật khẩu của họ không bao giờ đi qua bạn hay Upload-Post.
Mỗi link kết nối chỉ mở một hồ sơ và hết hạn sau 48 giờ.
Đưa thương hiệu của bạn vào quy trình onboarding khách hàng
Tạo hồ sơ, bấm Share, gửi link. Trang kết nối mang thương hiệu đầu tiên của bạn chỉ mất vài phút.
Bắt đầu miễn phí, không cần thẻ tín dụng. White label có từ gói Professional.
Quản lý mạng xã hội white label: câu hỏi thường gặp
Những câu hỏi agency và đội ngũ SaaS thường đặt ra trước khi gửi link kết nối mang thương hiệu đầu tiên
Khách hàng của tôi có cần tài khoản Upload-Post không?
Không. Link kết nối mang theo một token chỉ dành cho hồ sơ của khách hàng đó. Khách hàng mở link, đăng nhập vào từng mạng xã hội là xong. Link có hiệu lực trong 48 giờ, hết hạn thì bạn tạo link mới.
Tôi có thể đặt trang kết nối trên tên miền riêng không?
Với trang có sẵn thì không: trang luôn nằm ở app.upload-post.com/connect và không hỗ trợ tên miền riêng. Nếu địa chỉ trang quan trọng với bạn, Connect API cho phép bạn tự dựng trang kết nối trên website của mình. Kể cả khi đó, mạng xã hội vẫn đưa khách hàng đi qua app.upload-post.com trong chốc lát, vì đó là địa chỉ OAuth callback đã đăng ký với từng nền tảng.
Gói nào có white label?
Professional, Advanced và Business. Gói Free và Basic không có. Professional gồm 25 hồ sơ, Advanced 75 và Business 225; với Business, mỗi hồ sơ thêm có giá $1/tháng. Không cần gọi cho bộ phận kinh doanh: bạn tự chọn gói trên trang bảng giá.
Một hồ sơ chứa được bao nhiêu tài khoản của khách hàng?
Mỗi hồ sơ giữ một tài khoản cho mỗi mạng xã hội, nên một hồ sơ có thể là một khách hàng đã kết nối Instagram, TikTok, LinkedIn và YouTube. 25 hồ sơ nghĩa là tối đa 25 tài khoản trên mỗi mạng, không phải tổng cộng 25 tài khoản. Khách hàng có hai tài khoản Instagram thì cần hai hồ sơ.
Mỗi lần tạo link tôi có phải gửi lại thông tin thương hiệu không?
Có, với logo, tiêu đề, mô tả, chữ trên nút, URL chuyển hướng, danh sách mạng và ngôn ngữ. Mỗi lần gọi generate-jwt sẽ lưu đúng những gì bạn gửi, nên trường nào bạn không gửi sẽ bị xóa khỏi hồ sơ đó. ui_labels, connect_theme, show_calendar và readonly_calendar thì khác: chúng chỉ thay đổi khi bạn gửi.
Khách hàng có xem được những bài đã lên lịch không?
Có. Tab lịch được bật sẵn và hiển thị các bài đã lên lịch của hồ sơ đó. Bật readonly_calendar thì link trở thành lịch nội dung chỉ xem: khách hàng xem được nhưng không thể sửa, xóa hay thay đổi kết nối. Gửi họ đến /connect/calendar với cùng token để mở thẳng trang lịch.
Trang kết nối hỗ trợ những ngôn ngữ nào?
Tiếng Anh, Tây Ban Nha, Đức, Pháp, Bồ Đào Nha, Ba Lan và Thổ Nhĩ Kỳ. Bạn có thể cố định một ngôn ngữ cho từng hồ sơ bằng tham số language hoặc để trang theo trình duyệt. Trang chưa có sẵn tiếng Việt: muốn khách hàng đọc chữ tiếng Việt hay bất kỳ câu chữ nào khác, bạn tự viết bằng ui_labels.
Làm sao biết khách hàng đã kết nối tài khoản?
Dùng webhook. Upload-Post gửi các sự kiện social_account_connected, social_account_disconnected, social_account_reauth_required và upload_completed. Mỗi hồ sơ có thể có URL webhook riêng, nên mỗi khách hàng có thể báo về một endpoint khác nhau trong hệ thống của bạn.
Tôi có lấy được số liệu analytics theo từng khách hàng không?
Có. Endpoint analytics nhận username của hồ sơ, nên bạn lấy số liệu của từng khách hàng một và tự dựng báo cáo riêng dựa trên đó.
Upload-Post có SDK không?
Có SDK chính thức cho Python (pip install upload-post) và JavaScript/Node (npm install upload-post). Ngoài ra đây là REST API thông thường dùng API key, nên ngôn ngữ lập trình hay công cụ no-code nào gửi được HTTP request cũng dùng được.
Thiết lập mất bao lâu?
Không cần code: tạo một hồ sơ trong Manage Users, bấm Share, điền thông tin thương hiệu và gửi link. Với API thì chỉ cần hai lệnh gọi, một để tạo hồ sơ và một để tạo link, cộng với các lệnh upload bạn vốn đã cần để đăng bài.
Tôi được hỗ trợ những gì?
Tài liệu có code mẫu cho mọi endpoint, và hỗ trợ qua email tại [email protected]. Gói Advanced và Business có hỗ trợ ưu tiên.
Chi tiết hơn: User Profiles API, Connect API, Webhooks và SDK.