sameweb-cli
v1.0.9
Published
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.
Downloads
5
Maintainers
Readme
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
npm install -g sameweb-cli
# or using pnpm
pnpm add -g sameweb-cliFirst Run
Simply run the command to start the interactive setup:
samewebOn first run, you'll be guided through:
- Website URL - Enter the website you want to clone
- OpenAI API Key - Provide your API key (or set
OPENAI_API_KEYin.env)
Example Workflow
$ 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:
OPENAI_API_KEY=sk-your-openai-api-key-hereState 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 CLIreset- Clear saved state and start fresh (will require re-cloning)
🛠️ Development Setup
Local Development
Clone the repository
git clone https://github.com/your-username/sameweb-cli.git cd sameweb-cliInstall dependencies
npm install # or pnpm installCreate environment file
cp .env.example .env # Edit .env with your OpenAI API keyRun in development mode
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:
- Get API Key: Visit OpenAI Platform
- Set Environment Variable:
Or create aexport OPENAI_API_KEY=sk-your-key-here.envfile as shown above
🤔 How It Works
- Clone Phase: Uses Puppeteer to scrape the target website, capturing HTML, CSS, images, and other resources
- AI Integration: Connects to OpenAI's API for processing modification requests
- Query Processing: Takes your natural language input and applies changes to the cloned website
- 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
resetcommand if you want to start fresh with a new website
