UNPKG

sameweb-cli

Version:

A CLI tool to clone websites into local folders using Puppeteer and AI. Useful for developers, researchers, and learners who want to quickly grab a site's structure and assets.

190 lines (129 loc) 4.91 kB
# sameweb CLI A powerful **CLI tool to clone websites and modify them with AI** using **Puppeteer + OpenAI**. With sameweb CLI, you can scrape websites, save them locally, and then use natural language queries to modify the cloned content perfect for prototyping, experimentation, and rapid website iteration. --- ## ✨ Features - 🌐 **Clone entire websites** into local folders with accurate DOM structure - 🤖 **AI-powered modifications** using OpenAI GPT models - 💬 **Interactive query mode** - ask the AI to modify your cloned website using natural language - 🖥️ **Puppeteer-based scraping** for accurate rendering and resource fetching - 📂 **Persistent state management** - remembers your cloned websites between sessions - **Simple command-line interface** with guided setup --- ## 🚀 Quick Start ### Installation ```bash npm install -g sameweb-cli # or using pnpm pnpm add -g sameweb-cli ``` ### First Run Simply run the command to start the interactive setup: ```bash sameweb ``` On first run, you'll be guided through: 1. **Website URL** - Enter the website you want to clone 2. **OpenAI API Key** - Provide your API key (or set `OPENAI_API_KEY` in `.env`) ### Example Workflow ```bash $ sameweb 🚀 Welcome to sameweb-cli! 📌 First time setup: You need to clone a website. 🌐 Enter website URL to clone: https://example.com 🔑 Enter your OpenAI API key: sk-... Cloning website, please wait... Website cloned successfully into 'https://example.com'. Now you can ask queries to modify it. 💬 Enter a query (or type 'exit' / 'reset' ): > Change the header color to blue and add a contact form ``` --- ## 🔧 Configuration ### Environment Variables Create a `.env` file in your project root to avoid entering your API key each time: ```env OPENAI_API_KEY=sk-your-openai-api-key-here ``` ### State Management sameweb CLI automatically saves your session state in `~/.sameweb-state.json`, including: - Previously cloned website URL - OpenAI API key - Clone status --- ## 📋 Commands ### Interactive Mode Once you've cloned a website, you can enter **natural language queries** to modify it: - `"Change the background color to dark blue"` - `"Add a navigation menu with Home, About, Contact links"` - `"Remove all images and replace with placeholder text"` - `"Make the layout responsive for mobile devices"` ### Special Commands - **`exit`** - Quit the CLI - **`reset`** - Clear saved state and start fresh (will require re-cloning) --- ## 🛠️ Development Setup ### Local Development 1. **Clone the repository** ```bash git clone https://github.com/your-username/sameweb-cli.git cd sameweb-cli ``` 2. **Install dependencies** ```bash npm install # or pnpm install ``` 3. **Create environment file** ```bash cp .env.example .env # Edit .env with your OpenAI API key ``` 4. **Run in development mode** ```bash node cli.js # or if you have a dev script npm run dev ``` ### Project Structure ``` sameweb-cli/ ├── cli.js # Main CLI interface ├── cloner.js # Core cloning and AI logic ├── package.json # Dependencies and scripts ├── .env.example # Environment template └── README.md # This file ``` --- ## 🔑 API Key Setup You'll need an **OpenAI API key** to use the AI modification features: 1. **Get API Key**: Visit [OpenAI Platform](https://platform.openai.com/api-keys) 2. **Set Environment Variable**: ```bash export OPENAI_API_KEY=sk-your-key-here ``` Or create a `.env` file as shown above --- ## 🤔 How It Works 1. **Clone Phase**: Uses Puppeteer to scrape the target website, capturing HTML, CSS, images, and other resources 2. **AI Integration**: Connects to OpenAI's API for processing modification requests 3. **Query Processing**: Takes your natural language input and applies changes to the cloned website 4. **State Persistence**: Remembers your setup between sessions for seamless continuation --- ## ⚠️ Requirements - **Node.js** 16+ - **OpenAI API Key** (with sufficient credits) - **Internet connection** for initial cloning and AI requests --- ## 📝 License MIT License - see LICENSE file for details --- ## 🤝 Contributing Contributions welcome! Please feel free to submit a Pull Request. --- ## 💡 Tips - **Complex queries**: Be specific about what you want to change for better AI results - **Backup originals**: The tool modifies files in place, so keep backups if needed - **Large websites**: Cloning large sites may take time and consume API credits - **State reset**: Use `reset` command if you want to start fresh with a new website ---