Bỏ qua đến nội dung
WebAI-to-API: biến Gemini Web thành API để dùng trong n8n và Home Assistant

WebAI-to-API: biến Gemini Web thành API để dùng trong n8n và Home Assistant

Cách dựng WebAI-to-API để có một endpoint API dùng AI model miễn phí, cấu hình bằng giao diện, rồi dùng trong n8n và Home Assistant như một dịch vụ OpenAI-compatible.

Nếu bạn đang dùng n8n, Home Assistant, Open WebUI hoặc các automation cá nhân và muốn có một API dùng AI model miễn phí, repo leolionart/WebAI-to-API là một lựa chọn rất đáng thử.

Nói đơn giản: bạn chạy một service WebAI-to-API trong máy nhà, kết nối nó với tài khoản Gemini Web đang đăng nhập, sau đó các tool khác có thể gọi qua endpoint kiểu OpenAI-compatible:

Base URL: http://IP_MAY_CHAY_WEBAI:6969/v1
API Key: not-needed
Model: gemini-3.0-flash

Bài này không đi sâu vào code hay cách repo hoạt động bên trong. Mục tiêu là làm theo kiểu người không rành code vẫn tự cấu hình được: chạy service, mở giao diện admin, dán cookie bằng plugin, rồi cấu hình n8n/HASS bằng giao diện.

Bạn sẽ có gì sau khi cài?

Sau khi setup xong, WebAI-to-API sẽ đóng vai trò như một "cổng API" cho Gemini Web:

  • Cấu hình tài khoản Gemini một lần trên giao diện admin.
  • Service tự lưu trạng thái đăng nhập để dùng lại cho các lần sau.
  • Có thể bật thông báo Telegram khi phiên đăng nhập bị mất hoặc cần đăng nhập lại.
  • n8n có thể dùng bằng credential OpenAI với custom base URL.
  • Home Assistant có thể dùng qua integration Local OpenAI LLM cài từ HACS.

Với automation cá nhân, model nên bắt đầu bằng:

gemini-3.0-flash

Model này đủ nhanh cho các việc như tóm tắt webhook, phân loại email, viết nội dung thông báo Telegram, trích xuất JSON, đọc trạng thái nhà thông minh hoặc phân tích cảnh báo camera.

Cài WebAI-to-API

Cách dễ nhất là chạy bằng Docker Compose. Tạo một folder mới:

mkdir webai-to-api
cd webai-to-api
mkdir data

Tạo file docker-compose.yml:

services:
  web_ai:
    image: ghcr.io/leolionart/webai-to-api:latest
    container_name: web_ai_server
    restart: always
    ports:
      - "6969:6969"
    environment:
      - PYTHONPATH=/app/src
      - CONFIG_PATH=/app/data/config.conf
    volumes:
      - ./data:/app/data
    command: uvicorn app.main:app --host 0.0.0.0 --port 6969 --workers 1 --log-level info

Chạy service:

docker compose up -d

Mở giao diện cấu hình:

http://IP_MAY_CHAY_WEBAI:6969/admin

Nếu bạn mở ngay trên máy đang chạy service thì có thể dùng:

http://localhost:6969/admin

Điểm quan trọng: các phần cấu hình chính của service đều làm trên giao diện admin. Folder data chỉ để service tự lưu lại cấu hình sau khi bạn bấm lưu, không cần mở file cấu hình ra chỉnh tay.

Dashboard WebAI-to-API hiển thị trạng thái Gemini, Base URL và các endpoint API

Đây là bước quan trọng nhất, nhưng vẫn làm được bằng giao diện và extension trình duyệt.

Mục Import Cookies from cURL trong tab Configuration của WebAI-to-API

Làm như sau:

  1. Cài extension Copy Cookies từ Chrome Web Store.
  2. Sau khi cài xong, pin extension lên thanh công cụ Chrome để dễ bấm.
  3. Mở gemini.google.com và đăng nhập tài khoản Gemini.
  4. Khi đang đứng ở trang Gemini, bấm biểu tượng Copy Cookies và copy cookie của website hiện tại.
  5. Mở dashboard WebAI-to-API tại http://IP_MAY_CHAY_WEBAI:6969/admin.
  6. Vào tab Configuration.
  7. Ở mục Import Cookies from cURL, dán cookie vừa copy vào ô nhập liệu. Giao diện này nhận được cả raw Cookie header value, nên không bắt buộc phải dùng Chrome DevTools hay copy nguyên cURL.
  8. Bấm Import Cookies.
  9. Kiểm tra mục Cookie Status. Nếu thấy trạng thái Configured và có các cookie như __Secure-1PSID, __Secure-1PSIDTS được che bớt giá trị, nghĩa là cookie đã được nhận.
  10. Ở mục Model, chọn gemini-3.0-flash rồi bấm Save nếu model chưa đúng.

Trong giao diện còn có mục Manual Cookie Entry để nhập thủ công, nhưng với extension Copy Cookies thì cách nhanh nhất là dán trực tiếp vào Import Cookies from cURL. Không chụp màn hình hoặc gửi cookie này vào chat/log vì cookie có thể dùng để truy cập phiên đăng nhập Gemini.

Sau khi kết nối thành công, bạn không cần lấy cookie lại mỗi lần chạy workflow. Service sẽ lưu session và tự dùng lại cho các request sau. Chỉ khi Google bắt đăng nhập lại, đổi mật khẩu, logout tài khoản, hoặc cookie hết hạn thì bạn mới cần lấy cookie mới và dán lại.

Bật thông báo Telegram khi mất đăng nhập

Trong dashboard WebAI-to-API, vào Configuration rồi tìm mục Telegram Notifications. Điền:

Bot token: token của Telegram bot
Chat ID: chat hoặc group nhận cảnh báo
Cooldown: số giây giãn cách giữa các cảnh báo

Bật Enable notifications, chọn các loại lỗi muốn báo ở Notify on error types. Ít nhất nên bật Auth / Cookie expired để biết khi phiên Gemini hết hạn. Nếu muốn theo dõi lỗi vận hành kỹ hơn, có thể bật thêm Stream error (503)Server error (500).

Sau đó bấm Save. Có thể bấm Send Test để kiểm tra bot và chat ID có nhận được tin nhắn hay không.

Việc này hữu ích vì service có thể chạy ổn trong thời gian dài, nhưng khi Gemini mất phiên đăng nhập, bạn sẽ muốn biết ngay để vào dashboard dán lại cookie. Với người dùng gia đình/homelab, đây là điểm đáng bật ngay từ đầu.

Test nhanh trên dashboard

Sau khi import cookie, quay lại tab Dashboard. Nếu phần trên cùng hiển thị Gemini Status: ConnectedCurrent Model: gemini-3.0-flash, cấu hình cơ bản đã ổn.

Trong Dashboard có mục API ReferenceUsage Examples. Bạn có thể dùng tab Chat để copy lệnh cURL mẫu gọi endpoint:

http://IP_MAY_CHAY_WEBAI:6969/v1/chat/completions

Nếu cURL mẫu trả lời được, endpoint đã sẵn sàng để gắn vào n8n hoặc Home Assistant. Khi vừa đổi cookie hoặc model mà service chưa nhận ngay, dùng nút Reinitialize Gemini Client trên Dashboard để khởi tạo lại client.

Cấu hình trong n8n bằng OpenAI credential

Trong n8n, cứ cấu hình WebAI-to-API như một OpenAI-compatible service.

Vào n8n:

  1. Mở Credentials.
  2. Bấm New credential.
  3. Chọn OpenAI API.
  4. Ở ô API key, nhập:
not-needed
  1. Mở phần tuỳ chọn base URL/custom base URL.
  2. Điền:
http://IP_MAY_CHAY_WEBAI:6969/v1
  1. Lưu credential.

Khi tạo workflow, dùng các node AI như OpenAI Chat Model, AI Agent hoặc node nào trong n8n cho chọn OpenAI credential. Chọn credential vừa tạo, rồi nhập model:

gemini-3.0-flash

Ví dụ workflow dễ áp dụng:

  • Webhook nhận dữ liệu -> AI tóm tắt -> gửi Telegram.
  • Email mới -> AI phân loại khẩn cấp/không khẩn cấp -> tạo task.
  • Google Sheet -> AI viết mô tả sản phẩm.
  • Log lỗi -> AI tóm tắt nguyên nhân -> gửi cảnh báo.
  • Payload JSON -> AI trích xuất dữ liệu sạch cho bước sau.

Nếu n8n chạy trong Docker hoặc trên máy khác, đừng dùng localhost theo thói quen. Hãy dùng IP của máy đang chạy WebAI-to-API trong mạng LAN, ví dụ 192.168.1.10.

Cấu hình trong Home Assistant bằng HACS

Với Home Assistant, dùng integration leolionart/hass_local_openai_llm. Toàn bộ thao tác có thể làm trên giao diện.

Trong Home Assistant:

  1. Mở HACS.
  2. Vào Integrations.
  3. Mở menu Custom repositories.
  4. Dán repository:
https://github.com/leolionart/hass_local_openai_llm
  1. Category chọn Integration.
  2. Download integration.
  3. Restart Home Assistant.

Sau khi restart:

  1. Vào Settings -> Devices & services.
  2. Bấm Add integration.
  3. Tìm Local OpenAI LLM.
  4. Điền thông tin server:
Server Name: Gemini Free API
Server URL: http://IP_MAY_CHAY_WEBAI:6969/v1
API Key: not-needed

Sau đó chọn model gemini-3.0-flash ở nơi integration hoặc tính năng Assist/AI task cho phép chọn model.

Bạn có thể dùng endpoint này cho:

  • Assist/conversation agent trong nhà.
  • Tóm tắt trạng thái cảm biến mỗi sáng.
  • Phân tích camera snapshot trước khi gửi cảnh báo.
  • Viết thông báo TTS tự nhiên hơn.
  • Tóm tắt log hoặc cảnh báo từ các automation.

Trên Geek Playground mình từng viết bài AI-Powered Home Assistant Nhận Diện Shipper Thông Minh với LLM. WebAI-to-API có thể đóng vai trò endpoint model miễn phí cho các kiểu automation tương tự.

Lệnh vận hành thường dùng

Bạn chỉ cần nhớ vài lệnh cơ bản:

docker compose up -d
docker compose logs -f
docker compose restart
docker compose pull && docker compose up -d
docker compose down

Nếu API không trả lời, kiểm tra theo thứ tự:

  1. Container còn chạy không.
  2. Dashboard admin có mở được không.
  3. Cookie Gemini còn đăng nhập không.
  4. Telegram notification có báo mất session không.
  5. n8n/HASS có đang trỏ đúng IP máy chạy WebAI-to-API không.

Lưu ý an toàn

  • Không public endpoint này cho người khác dùng chung.
  • Không đưa cookie Gemini vào chat, Git, log hoặc ảnh chụp màn hình.
  • Không expose cổng 6969 trực tiếp ra Internet.
  • Nên dùng cho homelab, automation cá nhân, thử nghiệm, workflow nội bộ.
  • Nếu cần SLA, quota, billing rõ ràng hoặc hệ thống production, nên dùng API chính thức.

Khi nào nên dùng?

Nên dùng nếu:

  • Bạn cần API dùng AI model miễn phí cho automation cá nhân.
  • Bạn dùng n8n hoặc Home Assistant trong homelab.
  • Bạn muốn cấu hình một lần rồi dùng lại trong nhiều workflow.
  • Bạn chấp nhận thỉnh thoảng phải dán lại cookie khi Gemini mất đăng nhập.

Không nên dùng nếu:

  • Bạn cần hệ thống production ổn định dài hạn.
  • Bạn muốn public API cho nhiều người dùng.
  • Bạn không muốn dùng cookie trình duyệt.
  • Bạn cần giải pháp chính thức từ provider.

Đọc thêm cùng chủ đề

Nguồn tham khảo

Bạn thấy bài viết hữu ích?

Đăng ký để nhận thông báo khi có bài viết mới.

Kiểm tra hộp thư để xác nhận email!
Bạn đã đăng ký thành công vào Geek Playground
Tuyệt vời! Tiếp theo, hoàn tất thanh toán để có quyền truy cập đầy đủ vào Geek Playground
Chào mừng trở lại! Bạn đã đăng nhập thành công.
Thành công! Tài khoản của bạn đã được kích hoạt đầy đủ, bạn hiện có quyền truy cập vào tất cả nội dung.
Thành công! Thông tin thanh toán của bạn đã được cập nhật.
Cập nhật thông tin thanh toán không thành công.