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.

Lấy cookie Gemini bằng Copy Cookies trên Chrome
Đâ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.

Làm như sau:
- Cài extension Copy Cookies từ Chrome Web Store.
- Sau khi cài xong, pin extension lên thanh công cụ Chrome để dễ bấm.
- Mở gemini.google.com và đăng nhập tài khoản Gemini.
- Khi đang đứng ở trang Gemini, bấm biểu tượng Copy Cookies và copy cookie của website hiện tại.
- Mở dashboard WebAI-to-API tại
http://IP_MAY_CHAY_WEBAI:6969/admin. - Vào tab Configuration.
- Ở 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.
- Bấm Import Cookies.
- 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. - Ở mục Model, chọn
gemini-3.0-flashrồ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) và 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: Connected và Current Model: gemini-3.0-flash, cấu hình cơ bản đã ổn.
Trong Dashboard có mục API Reference và Usage 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:
- Mở Credentials.
- Bấm New credential.
- Chọn OpenAI API.
- Ở ô API key, nhập:
not-needed
- Mở phần tuỳ chọn base URL/custom base URL.
- Điền:
http://IP_MAY_CHAY_WEBAI:6969/v1
- 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:
- Mở HACS.
- Vào Integrations.
- Mở menu Custom repositories.
- Dán repository:
https://github.com/leolionart/hass_local_openai_llm
- Category chọn Integration.
- Download integration.
- Restart Home Assistant.
Sau khi restart:
- Vào Settings -> Devices & services.
- Bấm Add integration.
- Tìm Local OpenAI LLM.
- Đ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ự:
- Container còn chạy không.
- Dashboard admin có mở được không.
- Cookie Gemini còn đăng nhập không.
- Telegram notification có báo mất session không.
- 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
6969trự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ủ đề
- Hướng dẫn cấu hình CLIProxyAPI vào OpenClaw
- AI-Powered Home Assistant Nhận Diện Shipper Thông Minh với LLM
- Home Assistant - Mở ra một thế giới mới cho công cuộc Internet of Things
- Dùng Claude Code để chuẩn hóa cấu hình OpenClaw