{"id":30105972,"url":"https://github.com/profullstack/makedemo","last_synced_at":"2025-08-10T01:00:50.688Z","repository":{"id":305345467,"uuid":"1022632047","full_name":"profullstack/makedemo","owner":"profullstack","description":"A CLI tool that automates generating high-quality web demo MP4 videos by intelligently interacting with websites using AI-driven decision making.","archived":false,"fork":false,"pushed_at":"2025-07-19T16:23:19.000Z","size":61,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-19T18:29:22.161Z","etag":null,"topics":["ai","demo","ffmpeg","puppeteer","video"],"latest_commit_sha":null,"homepage":"https://makedemo.app/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/profullstack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-19T13:47:04.000Z","updated_at":"2025-07-19T16:23:23.000Z","dependencies_parsed_at":"2025-07-19T18:29:26.283Z","dependency_job_id":"66873ac8-c71b-4365-8001-c4b4bdf00e09","html_url":"https://github.com/profullstack/makedemo","commit_stats":null,"previous_names":["profullstack/makedemo"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/profullstack/makedemo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profullstack%2Fmakedemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profullstack%2Fmakedemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profullstack%2Fmakedemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profullstack%2Fmakedemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/profullstack","download_url":"https://codeload.github.com/profullstack/makedemo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/profullstack%2Fmakedemo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269659414,"owners_count":24455110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-09T02:00:10.424Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","demo","ffmpeg","puppeteer","video"],"created_at":"2025-08-10T01:00:49.683Z","updated_at":"2025-08-10T01:00:50.621Z","avatar_url":"https://github.com/profullstack.png","language":"JavaScript","readme":"# mkdemo - AI-Powered Web Demo Video Generator\n\nA CLI tool that automates generating high-quality web demo MP4 videos by intelligently interacting with websites using AI-driven decision making.\n\n## Features\n\n- 🤖 **AI-Driven Interactions**: Uses OpenAI GPT-4+ to intelligently decide website interactions\n- 🎬 **High-Quality Video**: Records 1080p 30fps MP4 videos optimized for web streaming\n- 🗣️ **Natural Narration**: Generates speech using ElevenLabs for professional voiceovers\n- 🔐 **Automatic Authentication**: Handles login forms automatically\n- 📝 **Transcription Export**: Provides text transcripts of all narration\n- 🛠️ **Robust Error Handling**: Comprehensive logging and error management\n\n## Installation\n\n### Prerequisites\n\n- Node.js 20 or newer\n- FFmpeg (for video processing)\n\n### Install Dependencies\n\n```bash\n# Using pnpm (recommended)\npnpm install\n\n# Or using npm\nnpm install\n```\n\n### Environment Setup\n\n1. Copy the environment template:\n```bash\ncp .env.example .env\n```\n\n2. Configure your API keys in `.env`:\n```env\n# OpenAI Configuration\nOPENAI_API_KEY=your_openai_api_key_here\nOPENAI_MODEL=gpt-4-turbo-preview\n\n# ElevenLabs Configuration\nELEVENLABS_API_KEY=your_elevenlabs_api_key_here\nELEVENLABS_VOICE_ID=your_preferred_voice_id_here\n```\n\n## Usage\n\n### Basic Command\n\n```bash\nmkdemo create --user \u003cemail\u003e --password \u003cpassword\u003e --url \u003cwebsite-url\u003e\n```\n\n### Example\n\n```bash\nmkdemo create --user anthony@chovy.com --password mypassword --url https://propozio.com\n```\n\n### Command Options\n\n- `--user, -u \u003cemail\u003e`: User email for authentication (required)\n- `--password, -p \u003cpassword\u003e`: User password for authentication (required)\n- `--url \u003curl\u003e`: Website URL to create demo from (required)\n- `--output, -o \u003cdirectory\u003e`: Output directory for generated files (default: ./output)\n- `--verbose, -v`: Enable verbose logging\n- `--max-interactions \u003cnumber\u003e`: Maximum number of interactions (default: 10)\n- `--headless`: Run browser in headless mode (default: true)\n\n## Output Files\n\nUpon successful completion, the CLI generates:\n\n- `demo_\u003ctimestamp\u003e.mp4` - Main video file\n- `transcription_\u003ctimestamp\u003e.txt` - Narration transcript\n- `mkdemo_\u003ctimestamp\u003e.log` - Detailed execution log\n\n## Development\n\n### Project Structure\n\n```\nmkdemo/\n├── src/\n│   ├── cli/           # CLI command handling\n│   ├── auth/          # Authentication logic\n│   ├── browser/       # Browser automation\n│   ├── ai/            # OpenAI integration\n│   ├── audio/         # ElevenLabs integration\n│   ├── video/         # FFmpeg video processing\n│   ├── utils/         # Utilities (logging, filesystem)\n│   └── index.js       # Main orchestration\n├── test/              # Test files\n├── output/            # Generated output files\n└── README.md\n```\n\n### Running Tests\n\n```bash\n# Run all tests\npnpm test\n\n# Run tests with coverage\npnpm run test:coverage\n\n# Run tests in watch mode\npnpm run test:watch\n```\n\n### Code Quality\n\n```bash\n# Lint code\npnpm run lint\n\n# Fix linting issues\npnpm run lint:fix\n\n# Format code\npnpm run format\n\n# Check formatting\npnpm run format:check\n```\n\n### Development Mode\n\n```bash\n# Run with file watching\npnpm run dev\n```\n\n## Technical Architecture\n\n### Core Components\n\n1. **CLI Parser** (`src/cli/`): Handles command-line argument parsing and validation\n2. **Browser Manager** (`src/browser/`): Puppeteer-based browser automation\n3. **Authentication Handler** (`src/auth/`): Automatic login form detection and filling\n4. **AI Decision Maker** (`src/ai/`): OpenAI integration for intelligent interactions\n5. **Audio Generator** (`src/audio/`): ElevenLabs speech synthesis\n6. **Video Processor** (`src/video/`): FFmpeg-based video recording and processing\n7. **Utilities** (`src/utils/`): Logging, filesystem operations, and helpers\n\n### Workflow\n\n1. Parse CLI arguments and validate configuration\n2. Initialize browser and navigate to target URL\n3. Detect and handle authentication if required\n4. Capture initial page state for AI analysis\n5. Generate interaction plan using OpenAI\n6. Execute interactions while recording video\n7. Generate narration audio for each interaction\n8. Combine video and audio into final MP4\n9. Export transcription and logs\n\n## API Requirements\n\n### OpenAI API\n\n- **Model**: GPT-4 Turbo or newer recommended\n- **Usage**: Interaction planning and narration generation\n- **Rate Limits**: Consider your plan's token limits\n\n### ElevenLabs API\n\n- **Voice**: Choose a professional voice ID\n- **Usage**: Speech synthesis for narration\n- **Rate Limits**: Consider your plan's character limits\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Browser Launch Fails**\n   - Ensure you have sufficient system resources\n   - Try running with `--headless=false` for debugging\n\n2. **Authentication Fails**\n   - Verify credentials are correct\n   - Check if the website has CAPTCHA or 2FA\n   - Review logs for specific error messages\n\n3. **Video Processing Fails**\n   - Ensure FFmpeg is installed and in PATH\n   - Check available disk space\n   - Verify output directory permissions\n\n4. **API Errors**\n   - Verify API keys are correct and active\n   - Check API rate limits and quotas\n   - Review network connectivity\n\n### Debug Mode\n\nEnable verbose logging for detailed troubleshooting:\n\n```bash\nmkdemo create --verbose --user \u003cemail\u003e --password \u003cpassword\u003e --url \u003curl\u003e\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Write tests for new functionality\n4. Ensure all tests pass\n5. Submit a pull request\n\n## License\n\nMIT License - see LICENSE file for details.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofullstack%2Fmakedemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprofullstack%2Fmakedemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprofullstack%2Fmakedemo/lists"}