2Slides Logo
Tự động tạo carousel mạng xã hội với AI Slides API (2026)
2Slides Team
18 min read

Tự động hóa Carousel Mạng Xã Hội với API Slides AI (2026)

Để tự động hóa carousel mạng xã hội, hãy giữ chủ đề của bạn trong Google Sheet, cơ sở dữ liệu Notion hoặc Airtable, để Claude hoặc OpenAI biến mỗi hàng mới thành dàn ý 7 slide kèm chú thích, và dùng n8n hoặc Make gọi endpoint API 2Slides create-pdf-slides với aspectRatio: "4:5" hoặc "9:16". Theo dõi jobs/{id}, sau đó tải về PDF và các ảnh PNG từng trang. Một carousel 7 trang 2K tốn 710 credits, khoảng $1.42 đến $1.78, và công thức này phù hợp với các nhóm nội dung xuất bản vài carousel mỗi tuần mà không cần designer tham gia.

Điểm chính cần nhớ

  • Một lần gọi create-pdf-slides tạo ra carousel 7 trang dưới dạng PDF cùng các ảnh PNG từng trang ở độ phân giải 2K với giá 710 credits (10 credits lập kế hoạch + 100 credits mỗi trang).
  • aspectRatio nhận chuỗi w:h bất kỳ: 4:5 cho feed LinkedIn và Instagram, 9:16 cho Stories, Reels và TikTok, 1:1 cho bài đăng vuông.
  • create-like-this nhận referenceImageUrl của một slide thương hiệu và tạo ra toàn bộ hệ thống thiết kế từ đó, giúp mỗi carousel trong chuỗi giữ được sự nhất quán.
  • Lồng tiếng thêm 210 credits mỗi trang, và Workspace Export → Generate Video xuất video MP4 1080×1920 H.264 với 20 credits mỗi trang.
  • Mỗi API key giới hạn 6 yêu cầu mỗi phút, nên nếu gửi batch lớn hơn 6 chủ đề cần dùng node Wait và hàng đợi.

Dành cho ai

Công thức này dành cho các marketer nội dung và kỹ sư vận hành marketing đã sử dụng n8n, Make hoặc Zapier, có từ 30 đến 300 ý tưởng carousel trong bảng tính, và mất nhiều ngày của designer mỗi tháng để biến chúng thành slide. Cũng phù hợp với các agency sản xuất carousel cho nhiều thương hiệu khách hàng và cần mỗi thương hiệu giữ phong cách riêng.

Không dùng nếu mỗi carousel cần chèn ảnh sản phẩm thủ công hoặc biểu đồ do designer chỉnh sửa trong Figma. Trong trường hợp đó, tự động hóa chỉ giúp bạn bản thảo đầu tiên, và PPTX có thể chỉnh sửa từ Fast PPT là điểm khởi đầu tốt hơn.

Quy trình tổng quan

BướcCông cụViệc xảy raEndpoint 2Slides / credits
1Google Sheets, Notion hoặc AirtableHàng mới với topic, channel (LinkedIn, Instagram, Stories), status = queuedKhông
2Node Claude hoặc OpenAIViết dàn ý 7 slide (mở đầu, 5 slide nội dung, CTA) kèm caption và hashtag dưới dạng JSONKhông
3Node HTTP RequestGửi dàn ý với aspectRatio "4:5" hoặc "9:16", page: 7, resolution: "2K", mode: "async"POST /api/v1/slides/create-pdf-slides, 710 credits cho bộ 7 trang
4Node Wait + HTTP RequestPoll mỗi 8 giây đến khi statussuccess hoặc failedGET /api/v1/jobs/{id}, miễn phí, 10 req/phút
5Node HTTP RequestTải PDF từ downloadUrl và ZIP PNG từng trangPOST /api/v1/slides/download-slides-pages-voices, miễn phí
6Tùy chọnThêm giọng đọc, sau đó xuất video MP4 9:16 trong Workspacegenerate-narration, 210 credits mỗi trang; xuất video 20 credits mỗi trang
7Google Drive, SlackTải lên tài nguyên, đăng bài để duyệt, ghi link và status = ready vào hàngKhông

2Slides cung cấp hai cách tạo slide qua API. generate (Fast PPT) điền vào mẫu thiết kế sẵn và trả về PPTX có thể chỉnh sửa trong khoảng 30 giây. create-pdf-slides (pipeline thiết kế ảnh Nano Banana) vẽ từng trang từ prompt và trả về PDF cùng ảnh từng trang.

Carousel cần pipeline thứ hai vì ba lý do. Nó nhận aspectRatio tùy chỉnh, điều Fast PPT không có. Nó trả về PNG từng trang, đúng định dạng LinkedIn và Instagram dùng. Và các job của nó có thể lồng tiếng và xuất MP4, điều Fast PPT không làm được.

Trước khi kết nối, hãy thử vài prompt thủ công trên trang sản phẩm Nano Banana. Nó có hộp prompt và số trang giống API, giúp bạn hoàn thiện câu lệnh designStyle với người thật trước khi tự động hóa.

Trang sản phẩm 2Slides Nano Banana thiết kế slide bằng ảnh với hộp prompt và điều khiển số trang
Hình 1: Trang sản phẩm Nano Banana. Thử prompt thiết kế và số trang ở đây trước khi đưa vào workflow n8n.

Để so sánh công bằng: Tài liệu nhà phát triển Gamma có công thức carousel tương tự dùng Make + Claude, nhưng API key của họ yêu cầu gói Pro, trong khi API key 2Slides dùng được cho mọi tài khoản, kể cả mới với 500 credits miễn phí. 2Slides là sản phẩm của chúng tôi, nên hãy thử cả hai với thương hiệu và ngân sách của bạn.

Bước 2: Biến mỗi hàng chủ đề thành dàn ý và chú thích

Bước LLM là nơi biến danh sách chủ đề thành carousel. Yêu cầu Claude hoặc OpenAI trả về JSON có cấu trúc, không phải văn bản tự do, để node tiếp theo đọc dễ dàng mà không cần regex:

Bạn viết carousel LinkedIn và Instagram cho {{brand}}. Chủ đề: {{topic}} Khán giả: {{audience}} Chỉ trả về JSON: { "slides": [ { "n": 1, "title": "<mở đầu, tối đa 8 từ>", "body": "<một dòng>" }, ... đúng 7 slide; slide 7 là lời kêu gọi hành động ... ], "caption": "<120 đến 200 từ, không hashtag>", "hashtags": ["<5 đến 8 thẻ>"] } Quy tắc: mỗi slide một ý, không dùng danh sách dấu đầu dòng trong slide, ngôn ngữ đơn giản.

Sau đó, gộp các slide thành chuỗi userInput mà 2Slides yêu cầu. Giữ mỗi slide chỉ tiêu đề và một dòng phụ; 7 slide dày đặc ở tỷ lệ 4:5 rất dễ chật chội. Đặt contentDetail: "concise" vì lý do này.

// Node Code n8n (hoặc script Node 20 bất kỳ): xây payload 2Slides từ JSON LLM const plan = JSON.parse($json.llmOutput); const userInput = plan.slides .map((s) => `Slide ${s.n}: ${s.title}\n${s.body}`) .join("\n\n"); const aspectRatio = $json.channel === "Stories" ? "9:16" : "4:5"; return [{ json: { userInput, aspectRatio, caption: plan.caption, hashtags: plan.hashtags } }];

Lưu captionhashtags lại trên hàng; người lên lịch đăng cần chúng bên cạnh ảnh PNG.

Bước 3: Thiết lập gọi API 2Slides

Tạo API key tại 2slides.com/api trong tab API Keys. Tài khoản mới có 500 credits miễn phí. Đặt key vào kho credentials của công cụ tự động và gửi kèm header Authorization: Bearer $SLIDES_API_KEY. Không bao giờ đặt key trong script phía trình duyệt hoặc ô Sheet công khai.

Tham khảo API 2Slides hiển thị tham số endpoint và các ngôn ngữ đầu ra hỗ trợ
Hình 2: Tham khảo API liệt kê mọi tham số và hơn 20 ngôn ngữ đầu ra. Truyền tên ngôn ngữ như "Spanish" trong responseLanguage, không phải mã.

Gọi gửi cho carousel feed LinkedIn trông như sau. designStyle là văn bản tự do; mô tả rõ nền, màu nhấn, kiểu chữ và điều cần tránh.

curl -X POST https://2slides.com/api/v1/slides/create-pdf-slides \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Slide 1: 5 email onboarding mọi SaaS nên gửi\nHầu hết trial bỏ trước ngày 3. Năm email này khắc phục.\n\nSlide 2: Ngày 0, lời chào mừng\nMột nhiệm vụ: đưa họ đến khoảnh khắc aha đầu tiên.\n\nSlide 3: Ngày 1, chiến thắng nhanh\nHiện một tính năng, một kết quả, một nút bấm.\n\nSlide 4: Ngày 3, bằng chứng xã hội\nTrích dẫn khách hàng và một con số.\n\nSlide 5: Ngày 5, kiểm tra rào cản\nHỏi điều gì ngăn họ. Trả lời cá nhân.\n\nSlide 6: Ngày 7, quyết định\nNhắc lại giá trị, rồi giá tiền.\n\nSlide 7: Lưu carousel này\nTheo dõi để nhận mẫu chuỗi đầy đủ.", "designStyle": "Carousel biên tập đậm cho LinkedIn. Nền trắng ngà, một màu xanh navy đậm làm điểm nhấn, tiêu đề serif cỡ lớn mỗi slide, dòng nội dung nhỏ sans-serif, bộ đếm trang mỏng góc trên bên phải, logo thương hiệu góc dưới bên trái. Không dùng ảnh stock, không gradient.", "aspectRatio": "4:5", "resolution": "2K", "page": 7, "contentDetail": "concise", "imageModel": "gemini-3-pro-image", "responseLanguage": "English", "mode": "async" }'

Phản hồi là { "jobId": "..." }. Với phiên bản Stories hoặc TikTok, đổi aspectRatio thành "9:16" và yêu cầu tiêu đề cao hơn trong designStyle để UI nền tảng không che. resolution: "2K" là mặc định, giá 100 credits mỗi trang như 512px và 1K; 4K gấp đôi, 200 credits mỗi trang.

Trong n8n, toàn bộ luồng gồm tám node. Cấu trúc tương tự dùng được trong Make với module HTTP và Sleep (xem trung tâm trợ giúp Make), và tài liệu n8n hướng dẫn về credentials HTTP Request.

  • Trigger: Google Sheets, Notion hoặc Airtable trigger khi có hàng mới, hoặc Schedule Trigger đọc các hàng status = queued
  • Node Claude hoặc OpenAI: prompt bước 2, output JSON
  • Node Code: xây userInput, chọn aspectRatio theo cột channel
  • Node HTTP Request: POST /api/v1/slides/create-pdf-slides với mode: "async", lưu jobId vào hàng
  • Node Wait: 8 giây
  • Node HTTP Request: GET /api/v1/jobs/{jobId}; node IF lặp lại node Wait khi statuspending hoặc processing
  • Node HTTP Request: tải PDF từ downloadUrl, rồi POST /api/v1/slides/download-slides-pages-voices lấy ZIP PNG
  • Giao hàng: tải lên Google Drive, đăng caption lên Slack, đặt status = ready

Nếu bạn muốn tự quản vòng lặp bằng code, đây là chuỗi tương tự bằng script Node 20 không phụ thuộc thư viện.

// Node 20+. Chạy server-side; key không bao giờ rời môi trường của bạn. import { writeFile } from "node:fs/promises"; const BASE = "https://2slides.com"; const headers = { Authorization: `Bearer ${process.env.SLIDES_API_KEY}`, "Content-Type": "application/json", }; const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); async function submitCarousel(row) { const res = await fetch(`${BASE}/api/v1/slides/create-pdf-slides`, { method: "POST", headers, body: JSON.stringify({ userInput: row.userInput, designStyle: row.designStyle, aspectRatio: row.aspectRatio, // "4:5" hoặc "9:16" resolution: "2K", page: 7, contentDetail: "concise", responseLanguage: "English", mode: "async", }), }); if (!res.ok) throw new Error(`submit failed: ${res.status} ${await res.text()}`); const { jobId } = await res.json(); return jobId; } async function waitForJob(jobId) { for (;;) { const res = await fetch(`${BASE}/api/v1/jobs/${jobId}`, { headers }); const job = await res.json(); if (job.status === "success") return job; if (job.status === "failed") throw new Error(`job ${jobId} failed`); await sleep(8000); // 5 đến 10 giây giữ dưới giới hạn 10 req/phút jobs/{id} } } async function downloadAssets(jobId, job, slug) { const pdf = await fetch(job.downloadUrl); await writeFile(`${slug}.pdf`, Buffer.from(await pdf.arrayBuffer())); const zip = await fetch(`${BASE}/api/v1/slides/download-slides-pages-voices`, { method: "POST", headers, body: JSON.stringify({ jobId }), }); await writeFile(`${slug}-pages.zip`, Buffer.from(await zip.arrayBuffer())); } // rows lấy từ export Sheet/Notion/Airtable sau bước LLM for (const row of rows) { const jobId = await submitCarousel(row); const job = await waitForJob(jobId); await downloadAssets(jobId, job, row.slug); await sleep(10_000); // giữ dưới 6 lần gửi mỗi phút mỗi key }

Giải nén file ZIP trang và bạn có 7 ảnh PNG tỷ lệ 4:5 hoặc 9:16 như yêu cầu. Đây là file bạn tải lên theo thứ tự cho bài đăng tài liệu LinkedIn hoặc bài đăng nhiều ảnh Instagram.

Bước 5: Tùy chọn video 9:16 có lồng tiếng cho Reels, Stories và TikTok

Job tạo carousel có thể được lồng tiếng. generate-narration nhận jobId từ create-pdf-slides hoặc create-like-this và tạo kịch bản cùng track giọng cho từng trang. Chọn một trong 30 giọng (Zephyr, Puck, Charon, Kore, Aoede, Leda) và giữ contentMode: "concise" để mỗi trang chạy vài giây.

curl -X POST https://2slides.com/api/v1/slides/generate-narration \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "jobId": "JOB_ID_FROM_STEP_3", "mode": "single", "speakerName": "Host", "voice": "Kore", "contentMode": "concise", "includeIntro": false }'

Lồng tiếng chỉ chạy async, nên poll jobs/{id} tương tự. Khi xong, download-slides-pages-voices trả về ZIP gồm PNG từng trang và WAV từng trang, có thể dùng FFmpeg ghép thành video dọc. Nếu không muốn chạy FFmpeg, mở job trong Workspace 2Slides và dùng Export → Generate Video, xuất MP4 1080×1920 H.264 trong trình duyệt với 20 credits mỗi trang.

Để biết cách điều chỉnh nhịp độ, câu mở đầu và thời gian caption trong video dọc, xem hướng dẫn faceless educational shorts và bài thực hành tốt về lồng tiếng và video.

designStyle giúp bạn gần với phong cách thương hiệu, nhưng văn bản dễ gây mơ hồ. Nếu nhóm bạn có một slide mà mọi người đều đồng ý đẹp, hãy chuyển sang gọi create-like-this và truyền URL ảnh đó làm referenceImageUrl. 2Slides sẽ tạo toàn bộ hệ thống thiết kế (bảng màu, tỷ lệ chữ, lưới bố cục) từ ảnh tham chiếu, giúp carousel 40 trông giống carousel 1. Chi phí và giới hạn giống create-pdf-slides.

curl -X POST https://2slides.com/api/v1/slides/create-like-this \ -H "Authorization: Bearer $SLIDES_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "userInput": "Slide 1: 5 email onboarding mọi SaaS nên gửi ... Slide 7: Lưu carousel này", "referenceImageUrl": "https://assets.yourbrand.com/carousel-style-reference.png", "aspectRatio": "4:5", "resolution": "2K", "page": 7, "contentDetail": "concise", "mode": "async" }'

Ảnh tham chiếu phải là URL công khai: CDN của bạn, bucket S3 hoặc R2 có quyền đọc công khai, hoặc link chia sẻ không cần đăng nhập. Giữ một ảnh tham chiếu mỗi thương hiệu trong cột của bảng chủ đề để node Code chọn theo hàng.

Nếu bạn chưa có slide thương hiệu, Thư viện 2Slides chứa các bộ slide thực tế bạn có thể dùng làm cảm hứng thiết kế hoặc truyền trực tiếp làm referenceImageUrl. Các ảnh dưới đây lấy từ hai bộ slide trong Thư viện. Chúng không phải đầu ra API của workflow này; là kiểu phong cách nguồn bạn sẽ chỉ cho API.

Bộ slide nghiên cứu mạng xã hội Eventbrite từ Thư viện 2Slides, dùng làm tham chiếu phong cách carousel
Hình 3: Bìa bộ slide nghiên cứu mạng xã hội Eventbrite trong Thư viện 2Slides. Kiểu chữ tương phản cao và một màu nhấn chuyển thể tốt sang carousel 4:5.

Bộ slide nghiên cứu mạng xã hội Eventbrite từ Thư viện 2Slides, dùng làm tham chiếu phong cách carousel
Hình 4: Một slide bên trong cùng bộ slide Thư viện. Truyền một slide nội dung như thế này, không chỉ bìa, để các trang thân bài kế thừa bố cục.

Slide tham chiếu Adobe Creative Trends 2026 từ Thư viện 2Slides
Hình 5: Một slide từ bộ Adobe Creative Trends 2026 trong Thư viện, phong cách biên tập dày đặc phù hợp carousel dựa trên dữ liệu.

Chọn ảnh tham chiếu có tiêu đề rõ ràng, nền đơn giản và logo thương hiệu dễ thấy. Tham chiếu rối với ảnh và nhiều biểu đồ tạo carousel khó đọc trên điện thoại.

Chi phí

Mỗi carousel 7 trang 2K tốn 10 credits lập kế hoạch + 7 × 100 = 710 credits. Credits có giá $0.0025 mỗi credit trong gói $5 (2,000 credits) và $0.002 mỗi credit trong gói $80 (40,000 credits). Tải PNG và poll miễn phí.

Khối lượngCredits mỗi thángGói phù hợpUSD mỗi thángUSD mỗi carousel
20 carousel, 7 trang, 2K, không lồng tiếng14,200$42.50 cho 20,000 credits≈ $30.18≈ $1.51
500 carousel, 7 trang, 2K, không lồng tiếng355,0009 × $80 cho 40,000 credits≈ $710 tại $0.002 mỗi credit≈ $1.42
Thêm lồng tiếng cho một carousel 7 trang+1,470≈ $2.94 đến $3.68
Thêm xuất video Workspace cho một carousel 7 trang+140≈ $0.28 đến $0.35

Gói Pro tùy chọn bao gồm 10,000 credits mỗi tháng ($12.50 tháng khuyến mãi, $25 giá niêm yết), đủ cho 14 carousel mỗi tháng. 500 credits đăng ký miễn phí không đủ cho bộ 7 trang, nên thử chạy 3 trang (310 credits) trước. Xem hướng dẫn batch cho nhóm marketing nếu bạn tính cho nhiều thương hiệu.

Fast PPT hay slide thiết kế ảnh cho trường hợp này?

Nhu cầuDùngTại sao
Xuất 4:5 hoặc 9:16, PNG từng trang, lồng tiếng, MP4create-pdf-slides hoặc create-like-thisPipeline thiết kế ảnh nhận aspectRatio và có thể lồng tiếng; Fast PPT không làm được
PPTX có thể chỉnh sửa cho webinar hoặc deck bán hàng cùng chủ đềgenerate (Fast PPT)10 credits mỗi trang, PPTX gốc từ 1,500+ mẫu qua themes/search
Một phong cách thương hiệu cố định cho hàng trăm carouselcreate-like-this với referenceImageUrlTạo hệ thống thiết kế từ một ảnh thay vì giải thích bằng văn bản
Bản thảo nhanh nội bộ trước khi duyệt thiết kếcreate-pdf-slidesresolution: "512px"Giá 100 credits mỗi trang như 2K; tạo lại ở 2K khi duyệt xong

Những lỗi thường gặp

  • Gửi 30 hàng cùng lúc bị lỗi 429. Mỗi key giới hạn 6 yêu cầu mỗi phút ở các endpoint tạo slide và 10 yêu cầu mỗi phút ở jobs/{id}. Đặt node Wait giữa các lần gửi và poll không nhanh hơn 5 giây một lần.
  • Lưu API key trong Sheet hoặc script phía client. Key tiêu tốn credits của bạn. Giữ trong credentials n8n hoặc Make hoặc biến môi trường server, và đổi key nếu nó bị lộ ra trình duyệt.
  • Cố lồng tiếng cho job Fast PPT. generate-narration từ chối job từ generate. Chỉ job create-pdf-slidescreate-like-this mới lồng tiếng hoặc xuất MP4 được.
  • Gửi page: 0 mà mong đợi 7 slide. page: 0 nghĩa là tự động phát hiện số trang, có thể trả về 4 hoặc 12 trang. Đặt page: 7 rõ ràng để chi phí và bố cục dự đoán được.
  • Gửi mã ngôn ngữ. responseLanguage nhận tên ngôn ngữ như "Spanish" hoặc "Simplified Chinese", không phải "es" hay "zh-CN".
  • Gửi bài viết 2,000 từ làm userInput. Mô hình ảnh sẽ cố gắng nhồi nhét. Hãy để bước LLM rút gọn thành 7 tiêu đề với một dòng mỗi tiêu đề trước khi gửi.

Câu hỏi thường gặp

Tôi có thể tự động hóa carousel mạng xã hội mà không cần designer không?

Có, cho bản thảo đầu tiên và hầu hết định dạng lặp lại. LLM viết dàn ý 7 slide, create-pdf-slides vẽ slide theo designStyle hoặc từ referenceImageUrl, và n8n giao PNG đến kênh duyệt. Người vẫn duyệt từng carousel trước khi đăng, nhưng công việc thiết kế và bố cục đã xong khi họ xem.

Tôi nên dùng tỷ lệ khung hình nào cho carousel LinkedIn và Instagram?

Dùng aspectRatio: "4:5" cho feed LinkedIn và carousel feed Instagram, vì cả hai hiển thị thẻ dọc theo tỷ lệ đó. Dùng "9:16" cho Instagram Stories, bìa Reels và slideshow TikTok. "1:1" dùng nếu bạn cần bộ vuông cho mọi nền tảng. Tham số nhận chuỗi w:h bất kỳ, nên bạn có thể thêm tỷ lệ sau mà không đổi workflow.

Gọi API tạo carousel AI tốn bao nhiêu cho mỗi carousel?

Carousel 7 trang độ phân giải 2K tốn 710 credits: 10 credits lập kế hoạch cộng 100 credits mỗi trang. Khoảng $1.78 với gói $5 và $1.42 với gói $80. Poll và tải PNG miễn phí. Lồng tiếng thêm 210 credits mỗi trang, xuất video trong Workspace thêm 20 credits mỗi trang.

Quy trình có tạo được video có lồng tiếng của carousel không?

Có. Gọi generate-narration với jobId carousel, chọn một trong 30 giọng, poll đến khi thành công. Sau đó tải ZIP PNG và WAV từ download-slides-pages-voices để ghép bằng FFmpeg, hoặc mở job trong Workspace 2Slides và dùng Export → Generate Video để xuất MP4 1080×1920. Lồng tiếng chỉ dùng được với job create-pdf-slidescreate-like-this.

Tự động carousel Instagram có chạy được với Make hoặc Zapier thay vì n8n không?

Có. Mỗi bước là gọi HTTPS đơn giản với token Bearer, nên module HTTP của Make và hành động Webhooks của Zapier có thể gửi, poll và tải về tương tự. Yêu cầu duy nhất là vòng lặp chờ 5 đến 10 giây giữa các lần kiểm tra jobs/{id}. n8n và Make hỗ trợ sẵn; Zapier bạn có thể dùng Delay step và Zap thứ hai để poll.

Các bước tiếp theo

About 2Slides

Create stunning AI-powered presentations in seconds. Transform your ideas into professional slides with 2slides AI Agent.

Try For Free