📘 This is the English version of the documentation. For the Turkish version, please refer to the link above.
A fully automated ChatGPT conversation and image generation library using Puppeteer + Stealth. This system works both as a CLI tool and as a reusable module.
- 💬 Automatically send messages to ChatGPT and receive ordered responses
- 🎨 Generate images using DALL·E (.png or base64)
- 🔁 Retry-supported image generation (
queueImage) - 🧠 Descriptive fallback for failed generations (
describeInstead) - ☁️ Stealth support against Cloudflare and bot protections
- 🍪 Session (cookie) management: login once and reuse
- ⚙️ Advanced configuration: proxy, language, headless, fingerprint etc.
git clone https://github.com/Eren-Seyfi/web-chatgpt.git
cd web-chatgpt
npm installweb-chatgpt/
├── index.js → Main entry point
├── login.js → Login utility to save cookies
├── test.js → Test scripts
├── sessions/cookies.json → Saved session cookies
├── lib/
│ ├── core/ → Bot, queue, page controllers
│ ├── features/ → Chat, image generation features
│ └── utils/ → delay, logger, helpers
└── package.json → Project configuration
| Command | Description |
|---|---|
npm run login |
Opens login page and saves cookies to sessions/ |
npm run test |
Executes test.js with sample chat/image logic |
npm start |
Runs index.js |
npm run dev |
Starts development mode with nodemon |
const res = await gpt.chat(["Hello!", "Tell me a random joke."]);Response:
[
{ prompt: "Hello!", content: "Hi there! 👋 How can I help you?" },
{ prompt: "Tell me a random joke.", content: "Why did the..." }
]await gpt.image("a teddy bear made of glowing glass", "bear.png");const base64 = await gpt.imageBase64("a glowing butterfly at night");
console.log(base64.slice(0, 100) + "...");Use: <img src="data:image/png;base64,...">
await gpt.queueImage([
{
prompt: "neon teddy bear",
output: "bear.png",
retry: 3,
retryDelay: 2000,
backoff: true,
describeInstead: true
}
], async (prompt) => {
await gpt.describe(prompt);
});await gpt.describe("neon teddy bear");These can be passed to createChatGPT({...}):
| Option | Type | Description |
|---|---|---|
model |
string |
GPT model to use (gpt-4, gpt-3.5) |
headless |
boolean |
Whether to hide browser UI (true by default) |
language |
string |
Browser language (en-US, tr-TR, etc.) |
stealth |
boolean |
Enables puppeteer-extra stealth plugin |
fingerprint |
boolean |
Fakes navigator.language, platform, etc. |
proxy.enabled |
boolean |
Use proxy server |
proxy.server |
string |
Proxy URL like http://127.0.0.1:8080 |
cookiePath |
string |
File path to store session cookies (sessions/cookies.json by default) |
The library handles session cookies automatically.
- If no cookie file exists or the session is invalid:
- The browser will open
- You must manually log in to ChatGPT
- After login, cookies will be saved to disk
- On next run, login will be skipped
- If valid cookies exist:
- Login screen is skipped
- You are automatically signed in
- This makes repeated automation faster and seamless
✅ Tip: run
npm run loginmanually once to save a working session before automation.
import { createChatGPT } from "./index.js";
const gpt = await createChatGPT({
model: "gpt-4", // GPT model to use
headless: false, // Show browser window
language: "tr-TR", // Set browser language to Turkish
stealth: true, // Enable stealth plugin to avoid bot detection
fingerprint: true, // Fake navigator fingerprint
proxy: {
enabled: false, // Disable proxy
server: "" // Proxy address if needed
},
cookiePath: "sessions/cookies.json" // Path to session cookie file
});
await gpt.chat(["Hello!", "How are you today?"]);
await gpt.image("an owl reading a book under lamp light", "owl.png");
const base64 = await gpt.imageBase64("an ancient city in smoke");
console.log(base64.slice(0, 100));
await gpt.queueImage([
{
prompt: "crystal teapot",
output: "teapot.png",
retry: 3,
retryDelay: 2000,
backoff: true,
describeInstead: true
}
], async (prompt) => {
await gpt.describe(prompt);
});
await gpt.close();Eren Seyfi
📫 eren50seyfi@gmail.com
🌐 GitHub
MIT © 2025 Eren Seyfi