Tôi đã xây dựng một nền tảng tiệc tùng AI hoàn toàn tự động để kiếm thu nhập thụ động — đây là toàn bộ mã nguồn

06 tháng 4, 2026·8 phút đọc

Vài tháng trước, tôi tự hỏi liệu mình có thể tạo ra một nền tảng nội dung vận hành hoàn toàn tự động—tự tạo ra nội dung, đăng tải và kiếm tiền—hay không? Câu trả lời là hoàn toàn được. Dưới đây là chi tiết dự án, các bài toán kỹ thuật thú vị tôi gặp phải và toàn bộ mã nguồn để bạn có thể tự chạy thử.

Tôi đã xây dựng một nền tảng tiệc tùng AI hoàn toàn tự động để kiếm thu nhập thụ động — đây là toàn bộ mã nguồn

Vài tháng trước, tôi bắt đầu tự hỏi: liệu mình có thể xây dựng một nền tảng nội dung vận hành hoàn toàn tự động—tự tạo nội dung, xuất bản và kiếm tiền—mà không cần đụng tay vào sau khi thiết lập hay không?

Câu trả lời là tôi nghĩ là được lol. Dưới đây là những gì tôi đã xây dựng, các vấn đề kỹ thuật thú vị tôi đã gặp phải và toàn bộ mã nguồn để bạn có thể tự chạy thử nghiệm.

Chức năng hoạt động

Mỗi ngày lúc 6 giờ chiều, một cron job kích hoạt một đoạn script Node.js tạo ra một bữa tiệc và nội dung cho FlashParty.co:

  1. Yêu cầu Claude sáng tạo ra một chủ đề tiệc (phù hợp theo mùa, lễ hội, không bao giờ lặp lại).
  2. Xây dựng 25 khung cảnh độc đáo với các loại góc chụp, phong cách máy ảnh và số lượng nhân vật đa dạng.
  3. Tạo tất cả 25 dòng chú thích (caption) chỉ trong một lần gọi AI.
  4. Gửi một lô tạo ảnh hàng loạt tới PartyLab (được hỗ trợ bởi mô hình hình ảnh Grok của xAI).
  5. Tải từng ảnh lên FlashParty ngay khi hoàn thành — ảnh miễn phí công khai, ảnh nhạy cảm (NSFW) được đặt sau tường phí $5 Party Pass.
  6. Thiết lập ảnh bìa và bữa tiệc chính thức trực tuyến.

Tổng thời gian chạy: 5–10 phút. Công sức của con người sau khi thiết lập ban đầu: bằng không.

Công nghệ được sử dụng (Stack)

  • Claude (Anthropic) — tạo chủ đề và viết chú thích hàng loạt. Tôi sử dụng Haiku vì nó nhanh và rẻ. Ba cuộc gọi API cho mỗi bữa tiệc tốn kém ít hơn nửa xu.
  • PartyLab — bao bọc mô hình hình ảnh Grok của xAI bằng một API chuyên biệt cho tiệc tùng. Bạn mô tả các cảnh và nhân vật, nó tạo ảnh hàng loạt và cung cấp một endpoint để kiểm tra trạng thái.
  • FlashParty — nền tảng lưu trữ các bữa tiệc, xử lý đăng ký người dùng và thanh toán Party Pass. Họ có REST API để tạo bữa tiệc và tải lên phương tiện.

Những vấn đề kỹ thuật thú vị

Tôi sẽ thành thật thật lòng — phiên bản ban đầu trông thật kinh khủng. Dưới đây là những gì đã sai và cách tôi sửa từng thứ.

Vấn đề 1: Mọi bức ảnh đều trông như được chụp bởi một người

Phiên bản đầu tiên chọn một phong cách máy ảnh cho toàn bộ bữa tiệc và "nướng" nó vào lệnh tạo ảnh. 25 bức ảnh đều có cùng tông màu xanh cam điện ảnh. Những bữa tiệc thực tế có người dùng máy ảnh DSLR, máy ảnh dùng một lần, iPhone chụp ảnh selfie mờ.

Giải pháp: Thay vì một phong cách máy ảnh ở mức công việc, tôi gán một phong cách ngẫu nhiên cho từng cảnh riêng lẻ. Có 8 phong cách: DSLR chụp tự nhiên, phim 35mm, banh biên tập (editorial night), máy ảnh dùng một lần có đèn flash, ống kính điện ảnh, chế độ chân dung iPhone, chế độ đêm Google Pixel và máy ảnh phim cũ vintage. Mỗi ảnh chọn một phong cách độc lập.

const CAMERA_STYLES = [
  {
    name: 'Film Photography',
    descriptors: 'shot on 35mm Kodak Portra 400 film, warm golden tones, organic film grain, slight halation, nostalgic analog texture'
  },
  {
    name: 'Flash Party Cam',
    descriptors: 'disposable camera aesthetic, direct on-camera flash, overexposed highlights, red-eye effect, Fujifilm disposable lo-fi'
  },
  // ... 6 more
];

// Each scene gets its own randomly selected style
const cam = pick(CAMERA_STYLES);
scene.prompt = `${scene.prompt}, ${cam.descriptors}`;

Vấn đề 2: Tất cả ảnh nhạy cảm (NSFW) bị dồn vào đầu cùng một chỗ

Danh sách cảnh được xây dựng bằng cách thêm các cảnh NSFW sau tất cả các cảnh an toàn (SFW). PartyLab xử lý chúng theo thứ tự, nên chúng hoàn thành và được tải lên cùng nhau trong một khối. Người dùng thấy một bức tường nội dung người lớn ngay đầu feed bữa tiệc.

Giải pháp: Xen kẽ các cảnh NSFW vào các vị trí cách đều nhau trong danh sách SFW trước khi gửi công việc. Vì PartyLab tạo ảnh theo thứ tự cảnh, các bức ảnh giờ đây xuất hiện phân bố tự nhiên trên toàn bộ bữa tiệc.

// Interleave NSFW scenes at evenly-spaced positions
const scenes = [...sfwScenes];
if (nsfwScenes.length > 0) {
  const step = scenes.length / (nsfwScenes.length + 1);
  nsfwScenes.forEach((scene, idx) => {
    scenes.splice(Math.round(step * (idx + 1)) + idx, 0, scene);
  });
}

Vấn đề 3: Ảnh nhạy cảm thực ra không hề nhạy cảm

Khoảng một nửa ảnh "NSFW" chỉ là hôn hoặc đặt tay lên vai. Người dùng trả $5 cho Party Pass, mở khóa nội dung và cảm thấy bị lừa dối.

Nguyên nhân gốc rễ: các câu lệnh (prompt) như "hai người hôn nhau nồng cháy, hóa học mãnh liệt, hạng R" không tạo ra ảnh NSFW — nó chỉ tạo ra nụ hôn. Tôi đã viết lại mọi câu lệnh để mô tả rõ ràng sự trần trụi thay vì ám chỉ. Nếu bạn muốn mô hình render da thịt, bạn phải yêu cầu trực tiếp điều đó.

Vấn đề 4: AI liên tục tạo ra cùng một chủ đề tiệc

Ba đêm liên tiếp: "Spring Fling Soirée". Claude Haiku thấy "Hôm nay là tháng Tư, Mùa: xuân" và hội tụ về câu trả lời hiển nhiên mỗi lần. Không có bộ nhớ giữa các lần chạy.

Giải pháp: Một tệp logs/used-themes.json lưu trữ 90 tên chủ đề gần nhất. Trước mỗi lần chạy, script đọc 30 chủ đề cuối và chuyển chúng cho Claude dưới dạng danh sách loại trừ rõ ràng.

const recentThemes = readUsedThemes(30);
const exclusionLine = recentThemes.length > 0
  ? `Do NOT use any of these recently used themes:\n${recentThemes.map(t => `- ${t}`).join('\n')}`
  : '';

// Injected into the Claude prompt
const prompt = `...${exclusionLine}
Generate ONE party theme for tonight...`;

Vấn đề 5: Mọi bức ảnh đều có cùng một khung hình

AI mặc định chụp 2–3 người ở góc trung bình (medium shot), mỗi lần đều như thế. Thư viện ảnh tiệc thực sự pha trộn giữa ảnh đám đông rộng, cận cảnh chặt, chân dung đơn, selfie và ảnh chi tiết ly cocktail hoặc trang trí.

Giải pháp: Tôi đã thêm hai nhóm mới — SHOT_TYPES (10 tùy chọn khung/góc) và SUBJECT_COUNTS (6 tùy chọn từ "chỉ một người" đến "đám đông chật kín") — và gán chúng ngẫu nhiên cho từng ảnh. Tôi cũng đã thêm hai loại cảnh mới: Selfie (với mô tả camera iPhone phía trước) và Atmosphere (ảnh chi tiết không có người).

Các loại cảnh được cân bằng trọng số để phù hợp với vẻ ngoài của thư viện ảnh tiệc thực sự:

const SFW_TEMPLATES = [
  { name: 'Dance Floor',    weight: 4 },  // ~8 of 23 SFW images
  { name: 'Candid Moments', weight: 3 },  // ~6
  { name: 'At the Bar',     weight: 2 },  // ~4
  { name: 'Arrivals',       weight: 1 },  // ~2
  { name: 'Selfie',         weight: 1 },  // ~2
  { name: 'Atmosphere',     weight: 0.5 } // ~1
];

Vấn đề 6: Chữ phụ (caption) lặp lại 7 cụm từ

Hàm caption ban đầu có 4 tùy chọn SFW và 3 tùy chọn NSFW. Với 25 ảnh cho mỗi bữa tiệc, bạn đảm bảo sẽ thấy "Party vibes only" bốn lần.

Giải pháp: Một cuộc gọi API Claude duy nhất tạo tất cả 25 caption cùng lúc. Mô hình nhìn thấy danh sách cảnh được sắp xếp đầy đủ và tên chủ đề, sau đó viết các caption độc đáo, phù hợp với ngữ cảnh cho từng cái.

const prompt = `Write exactly ${scenes.length} captions for a "${themeName}" party.
Scenes: ${sceneList}
Rules: under 10 words, no hashtags, vary the tone, never repeat.
Respond with ONLY a JSON array of strings.`;

Chi phí cho 25 caption qua Claude Haiku: khoảng $0.001. Nhóm dự phòng tĩnh vẫn chạy nếu cuộc gọi API thất bại.

Mô hình kiếm tiền

Script đặt premium_pass_price: 5 khi tạo bữa tiệc. FlashParty xử lý hàng rào thanh toán — ảnh NSFW bị làm mờ cho đến khi người dùng mua Party Pass.

Ở mức chủ đề 2 (5–9 ảnh NSFW), mỗi bữa tiệc có đủ nội dung cao cấp để make người dùng cảm thấy vé mua xứng đáng. Một lượt bán bù đắp chi phí tạo hàng đêm khoảng một tuần.

Lấy mã nguồn

Mọi thứ đều có trên GitHub: github.com/adamhawk-maker/flashparty-party-generator.git

Thiết lập mất khoảng 5 phút:

git clone https://github.com/adamhawk-maker/flashparty-party-generator.git
cd ai-party-generator
npm install
cp .env.example .env
# Add your three API keys to .env
node party-generator.js

Bạn sẽ cần các khóa API từ FlashParty, PartyLab và Anthropic. README có hướng dẫn thiết lập đầy đủ và bảng phân tích chi phí.

Tôi sẽ xây dựng gì tiếp theo

Một số thứ trong lộ trình nếu bạn muốn mở rộng dự án này:

  • Chủ đề do người dùng gửi — để khán giả của bạn bình chọn cho chủ đề bữa tiệc đêm mai.
  • Xử lý hàng loạt nhiều bữa tiệc — tạo một tuần nội dung tiệc trong một lần chạy vào Chủ Nhật.
  • Móc lưới tương tác — email hoặc thông báo đẩy khi một bữa tiệc mới trực tuyến.
  • Định giá độngpremium_pass_price cao hơn cho các chủ đề có cấp độ NSFW cao hơn.

Nếu bạn xây dựng một cái gì đó với nó, tôi rất muốn được xem. Hãy để lại liên kết trong phần bình luận.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗