{"id":33386165,"url":"https://github.com/ralyodio/defpromo","last_synced_at":"2026-03-03T16:09:49.133Z","repository":{"id":322997487,"uuid":"1083069651","full_name":"ralyodio/defpromo","owner":"ralyodio","description":"a web extension  that helps with self promotion on the major social media platforms.","archived":false,"fork":false,"pushed_at":"2025-11-18T13:57:48.000Z","size":351,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-11-18T15:54:50.619Z","etag":null,"topics":["ai","chrome","firefox","promotion","safari","web-extension"],"latest_commit_sha":null,"homepage":"https://defpromo.com","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/ralyodio.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-25T09:31:22.000Z","updated_at":"2025-11-18T13:57:51.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ralyodio/defpromo","commit_stats":null,"previous_names":["ralyodio/defpromo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ralyodio/defpromo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralyodio%2Fdefpromo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralyodio%2Fdefpromo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralyodio%2Fdefpromo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralyodio%2Fdefpromo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ralyodio","download_url":"https://codeload.github.com/ralyodio/defpromo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ralyodio%2Fdefpromo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285903251,"owners_count":27251119,"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-11-23T02:00:06.149Z","response_time":135,"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","chrome","firefox","promotion","safari","web-extension"],"created_at":"2025-11-23T05:00:52.026Z","updated_at":"2025-11-23T05:01:48.381Z","avatar_url":"https://github.com/ralyodio.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DefPromo\n\nAI-powered social media self-promotion assistant with comprehensive analytics and A/B testing capabilities.\n\n## Installation\n\n[![Chrome Web Store](https://img.shields.io/badge/Chrome-Install-blue?logo=googlechrome)](https://chromewebstore.google.com/detail/defpromo/efdlekcpbjccbilfonhbdicfoaklanap)\n[![Firefox Add-ons](https://img.shields.io/badge/Firefox-Install-orange?logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/defpromo/)\n\n- **Chrome/Edge**: [Install from Chrome Web Store](https://chromewebstore.google.com/detail/defpromo/efdlekcpbjccbilfonhbdicfoaklanap)\n- **Firefox**: [Install from Firefox Add-ons](https://addons.mozilla.org/en-US/firefox/addon/defpromo/)\n\n## Features\n\n- 🤖 **AI Content Generation**: Generate multiple promotional content variations using OpenAI\n- 📊 **Analytics Dashboard**: Track performance across platforms with detailed metrics\n- 🔄 **A/B Testing**: Compare content variation performance\n- 💾 **Data Portability**: Export/import all data as JSON for cross-browser/machine use\n- 🎯 **Multi-Project Management**: Manage multiple products simultaneously\n- 🌐 **Cross-Platform**: Supports 14 platforms:\n  - **Social Media**: Twitter/X, LinkedIn, Facebook, Instagram, Threads, TikTok, YouTube\n  - **Communities**: Reddit, Stacker News\n  - **Decentralized**: Primal.net (Nostr)\n  - **Messaging**: Slack, Discord, Telegram\n  - **Coming Soon**: Bluesky (disabled to prevent account bans)\n- 📱 **Cross-Browser Sidebar**: Content-script based sidebar works on all browsers without platform-specific APIs\n\n## Installation\n\n### Development Setup\n\n1. **Clone the repository**\n   ```bash\n   git clone https://github.com/ralyodio/defpromo.git\n   cd defpromo\n   ```\n\n2. **Install dependencies**\n   ```bash\n   pnpm install\n   ```\n\n3. **Build the extension**\n   ```bash\n   # Build for Chrome/Edge (default)\n   pnpm build\n   # or\n   pnpm build:chrome\n   \n   # Build for Firefox\n   pnpm build:firefox\n   \n   # Build for Safari\n   pnpm build:safari\n   \n   # Build for all browsers\n   pnpm build:all\n   ```\n   \n   **Note:** Each build automatically cleans its target directory before building, ensuring no stale code remains.\n\n### Load in Chrome/Edge\n\n1. Build: `pnpm build:chrome`\n2. Open `chrome://extensions/` (or `edge://extensions/`)\n3. Enable \"Developer mode\" (toggle in top right)\n4. Click \"Load unpacked\"\n5. Select the `dist/chrome` folder\n\n### Load in Firefox\n\n1. Build: `pnpm build:firefox`\n2. Open `about:debugging#/runtime/this-firefox`\n3. Click \"Load Temporary Add-on\"\n4. Navigate to `dist/firefox` and select `manifest.json`\n\n### Load in Safari\n\nSafari supports web extensions but requires conversion using Xcode:\n\n1. Build: `pnpm build:safari`\n2. Install Xcode from the Mac App Store\n3. Run the Safari Web Extension Converter:\n   ```bash\n   xcrun safari-web-extension-converter dist/safari/\n   ```\n3. Follow the prompts to create a Safari app project\n4. Open the generated Xcode project\n5. Build and run the project\n6. Enable the extension in Safari preferences\n\nSee [Apple's documentation](https://developer.apple.com/documentation/safariservices/safari_web_extensions/converting_a_web_extension_for_safari) for detailed instructions.\n\n**Note:** Safari conversion creates a native macOS/iOS app wrapper around the web extension. The extension code remains the same, but distribution requires the App Store or developer signing.\n\n## Usage\n\n### Initial Setup\n\n1. Click the DefPromo extension icon in your browser toolbar (or press `Ctrl+Shift+S` / `Cmd+Shift+S`)\n2. The sidebar will appear on the right side of the page\n3. Navigate to **Settings** tab\n4. Add your API keys:\n   - **OpenAI API Key**: Required for AI content generation\n   - **Web Scraper API Key**: Required for automatic product information extraction\n   - Choose your preferred scraper service (ScrapingBee, ScraperAPI, or Browserless)\n5. Click \"Save Settings\"\n\n### Creating a Project\n\n1. Go to the **Projects** tab\n2. Click \"+ New Project\"\n3. Enter:\n   - Project name\n   - Product URL (will be auto-scraped for details)\n   - Optional description\n4. Click \"Create Project\"\n\nThe extension will automatically scrape your product page and use AI to extract key information.\n\n### Generating Content\n\n1. Select a project from the **Projects** tab\n2. Navigate to the **Content** tab\n3. Choose content type (Post or Comment)\n4. Click \"Generate Variations\"\n5. Review and edit the generated variations\n6. Select your preferred variation\n\n### Using Content on Social Media\n\n1. Visit any supported platform (Twitter/X, LinkedIn, Reddit, Facebook)\n2. Navigate to a post or comment form\n3. Look for the DefPromo auto-fill button near the form\n4. Click the button to insert your generated content\n5. The extension automatically tracks this submission in analytics\n\n### Tracking Analytics\n\n1. Navigate to the **Analytics** tab\n2. View comprehensive metrics:\n   - Total submissions by platform\n   - Time-series charts\n   - Platform comparisons\n   - Best performing content\n   - A/B testing insights\n3. Manually update engagement metrics (likes, comments, shares) for tracked content\n\n### Export/Import Data\n\n**Export:**\n1. Go to **Settings** tab\n2. Click \"Export All Data\"\n3. Save the JSON file to your preferred location\n\n**Import:**\n1. Go to **Settings** tab\n2. Click \"Import Data\"\n3. Select your previously exported JSON file\n4. All data will be restored (replaces current data)\n\n## Development\n\n### Available Scripts\n\n```bash\n# Start development server\npnpm dev\n\n# Build for production\npnpm build\n\n# Run tests\npnpm test\n\n# Run tests with UI\npnpm test:ui\n\n# Run tests with coverage\npnpm test:coverage\n\n# Lint code\npnpm lint\n\n# Format code\npnpm format\n```\n\n### Project Structure\n\n```\ndefpromo/\n├── src/\n│   ├── sidebar/            # Content-script sidebar (NEW)\n│   │   ├── index.html      # Sidebar HTML template\n│   │   └── index.jsx       # Sidebar entry point\n│   ├── sidepanel/          # Main app interface\n│   │   ├── App.jsx         # Main app component (reused by sidebar)\n│   │   ├── views/          # View components\n│   │   └── index.jsx       # Entry point\n│   ├── popup/              # Browser action popup\n│   ├── background/         # Background service worker\n│   ├── content/            # Content scripts\n│   │   ├── sidebar-injector.js  # Sidebar injection logic (NEW)\n│   │   └── [platform].js   # Platform-specific scripts\n│   ├── storage/            # IndexedDB layer (Dexie.js)\n│   ├── services/           # API services (OpenAI, Scraper)\n│   ├── components/         # Shared React components\n│   └── styles/             # Global styles\n├── public/\n│   ├── manifest.json       # Extension manifest\n│   └── icons/              # Extension icons\n├── docs/\n│   └── SIDEBAR_ARCHITECTURE.md  # Sidebar implementation details\n└── dist/                   # Build output\n```\n\nFor detailed information about the sidebar architecture, see [`docs/SIDEBAR_ARCHITECTURE.md`](docs/SIDEBAR_ARCHITECTURE.md).\n\n## Tech Stack\n\n- **Frontend**: React 19 + JavaScript (ES2024+)\n- **Styling**: Tailwind CSS v4\n- **Build Tool**: Vite 7\n- **Database**: IndexedDB with Dexie.js\n- **Testing**: Vitest + Testing Library\n- **Charts**: Recharts\n- **APIs**: OpenAI API, Web Scraper APIs\n\n## API Requirements\n\n### OpenAI API\n\nGet your API key from [OpenAI Platform](https://platform.openai.com/api-keys)\n\n### Web Scraper Services\n\nChoose one:\n- **ScrapingBee**: [https://www.scrapingbee.com/](https://www.scrapingbee.com/) - $49/mo for 100k credits\n- **ScraperAPI**: [https://www.scraperapi.com/](https://www.scraperapi.com/) - $49/mo for 100k calls\n- **Browserless**: [https://www.browserless.io/](https://www.browserless.io/) - $29/mo for 10k requests\n\n## Browser Compatibility\n\nThe extension now uses a **cross-browser content-script sidebar** instead of browser-specific APIs, providing 100% compatibility:\n\n- ✅ Chrome/Chromium (Manifest V3) - Full support\n- ✅ Edge (Manifest V3) - Full support\n- ✅ Firefox (Manifest V3) - Full support\n- ✅ Safari (with Xcode conversion) - Full support\n\n**Key Features:**\n- No platform-specific APIs (`sidePanel`, `sidebar_action`)\n- Shadow DOM for style isolation\n- Resizable sidebar (300-600px)\n- Keyboard shortcut: `Ctrl+Shift+S` (Windows/Linux) or `Cmd+Shift+S` (Mac)\n- State persistence across page navigations\n\n## Privacy \u0026 Security\n\n- All data stored locally in IndexedDB\n- No data sent to external servers except user-configured APIs (OpenAI, Web Scraper)\n- API keys stored securely in browser storage\n- Export files contain sensitive data - handle with care\n\n## Contributing\n\nThis is a personal project, but suggestions and bug reports are welcome via GitHub issues.\n\n## License\n\nISC\n\n## Support\n\nFor issues or questions, please open an issue on GitHub.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralyodio%2Fdefpromo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fralyodio%2Fdefpromo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fralyodio%2Fdefpromo/lists"}