mirror of
https://github.com/aaronjmars/opendia.git
synced 2025-12-29 16:16:00 +00:00
Compare commits
6 Commits
v1.0.6
...
8d3c2dc9fc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8d3c2dc9fc | ||
|
|
eede8cdee5 | ||
|
|
8783ae0dc2 | ||
|
|
9ad89e7248 | ||
|
|
9dcbd230c5 | ||
|
|
daa4b55ee5 |
20
README.md
20
README.md
@@ -1,7 +1,9 @@
|
||||
# OpenDia <img src="opendia-extension/icon-128.png" alt="OpenDia" width="32" height="32">
|
||||
# OpenDia <img src="opendia-extension/icons/icon-128.png" alt="OpenDia" width="32" height="32">
|
||||
|
||||
**The open alternative to Dia**
|
||||
Connect your browser to AI models. No browser switching needed—works seamlessly with Chrome, Firefox, and any Chromium browser.
|
||||
**The open alternative to Dia / Perplexity Comet**
|
||||
Connect your browser to AI models.
|
||||
No browser switching needed—works seamlessly with Chrome, Firefox, and any Chromium browser. Private, local-first & MCP focused.
|
||||
If you are not technical / never used MCPs before, we recommend using **[Perplexity Comet](https://pplx.ai/leosimon)**.
|
||||
|
||||
[](https://www.npmjs.com/package/opendia)
|
||||
[](https://github.com/aaronjmars/opendia/releases/latest)
|
||||
@@ -32,15 +34,15 @@ OpenDia lets AI models control your browser automatically. **The key advantage?
|
||||
## 🌐 Browser Support
|
||||
|
||||
Works with **Chrome, Firefox, and any Chromium-based browser**:
|
||||
- ✅ **Mozilla Firefox** (Manifest V2)
|
||||
- ✅ **Google Chrome** (Manifest V3)
|
||||
- ✅ **Arc**
|
||||
- ✅ **Google Chrome**
|
||||
- ✅ **Arc**
|
||||
- ✅ **Mozilla Firefox**
|
||||
- ✅ **Microsoft Edge**
|
||||
- ✅ **Brave**
|
||||
- ✅ **Opera**
|
||||
- ✅ **Any Chromium based browser**
|
||||
|
||||
Perfect for **Cursor users** who want to automate their local testing and development workflows!
|
||||
Also perfect for **Cursor users** who want to automate their local testing and development workflows!
|
||||
|
||||
## 🎬 What You Can Do
|
||||
|
||||
@@ -82,14 +84,14 @@ Perfect for **Cursor users** who want to automate their local testing and develo
|
||||
### 1. Install the Browser Extension
|
||||
|
||||
**For Chrome/Chromium browsers:**
|
||||
1. Download `opendia-chrome-1.0.6.zip` from [releases](https://github.com/aaronjmars/opendia/releases)
|
||||
1. Download `opendia-chrome-1.1.0.zip` from [releases](https://github.com/aaronjmars/opendia/releases)
|
||||
2. Extract the zip file to a folder
|
||||
3. Go to `chrome://extensions/` (or your browser's extension page)
|
||||
4. Enable "Developer mode"
|
||||
5. Click "Load unpacked" and select the extracted folder
|
||||
|
||||
**For Firefox:**
|
||||
1. Download `opendia-firefox-1.0.6.zip` from [releases](https://github.com/aaronjmars/opendia/releases)
|
||||
1. Download `opendia-firefox-1.1.0.zip` from [releases](https://github.com/aaronjmars/opendia/releases)
|
||||
2. Extract the zip file to a folder
|
||||
3. Go to `about:debugging#/runtime/this-firefox`
|
||||
4. Click "Load Temporary Add-on..."
|
||||
|
||||
112
build-dxt.sh
112
build-dxt.sh
@@ -34,7 +34,7 @@ cp opendia-mcp/server.js dist/opendia-dxt/
|
||||
cat > dist/opendia-dxt/package.json << 'EOF'
|
||||
{
|
||||
"name": "opendia",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "🎯 OpenDia - The open alternative to Dia. Connect your browser to AI models with anti-detection bypass for Twitter/X, LinkedIn, Facebook",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
@@ -116,7 +116,7 @@ cat > dist/opendia-dxt/manifest.json << 'EOF'
|
||||
"dxt_version": "0.1",
|
||||
"name": "opendia",
|
||||
"display_name": "OpenDia - Browser Automation",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "🎯 OpenDia - The open alternative to Dia. Connect your browser to AI models with anti-detection bypass for Twitter/X, LinkedIn, Facebook + universal automation",
|
||||
"author": {
|
||||
"name": "Aaron Elijah Mars",
|
||||
@@ -127,9 +127,6 @@ cat > dist/opendia-dxt/manifest.json << 'EOF'
|
||||
"license": "MIT",
|
||||
"keywords": ["browser", "automation", "mcp", "ai", "claude", "chrome", "firefox", "extension", "twitter", "linkedin", "facebook", "anti-detection"],
|
||||
"icon": "icon.png",
|
||||
"icons": {
|
||||
"128": "icon.png"
|
||||
},
|
||||
|
||||
"server": {
|
||||
"type": "node",
|
||||
@@ -153,16 +150,16 @@ cat > dist/opendia-dxt/manifest.json << 'EOF'
|
||||
"title": "WebSocket Port",
|
||||
"description": "Port for Chrome/Firefox extension connection",
|
||||
"default": 5555,
|
||||
"minimum": 1024,
|
||||
"maximum": 65535
|
||||
"min": 1024,
|
||||
"max": 65535
|
||||
},
|
||||
"http_port": {
|
||||
"type": "number",
|
||||
"title": "HTTP Port",
|
||||
"description": "Port for HTTP/SSE server",
|
||||
"default": 5556,
|
||||
"minimum": 1024,
|
||||
"maximum": 65535
|
||||
"min": 1024,
|
||||
"max": 65535
|
||||
},
|
||||
"enable_tunnel": {
|
||||
"type": "boolean",
|
||||
@@ -251,30 +248,7 @@ cat > dist/opendia-dxt/manifest.json << 'EOF'
|
||||
"name": "page_style",
|
||||
"description": "🎨 Transform page appearance with themes and effects"
|
||||
}
|
||||
],
|
||||
|
||||
"capabilities": {
|
||||
"browser_automation": true,
|
||||
"anti_detection": true,
|
||||
"background_tabs": true,
|
||||
"multi_tab_workflows": true,
|
||||
"content_extraction": true,
|
||||
"form_filling": true,
|
||||
"social_media_posting": true,
|
||||
"page_styling": true,
|
||||
"bookmark_management": true,
|
||||
"history_search": true,
|
||||
"tab_management": true
|
||||
},
|
||||
|
||||
"requirements": {
|
||||
"browser_extension": {
|
||||
"name": "OpenDia Browser Extension",
|
||||
"description": "Required Chrome/Firefox extension for browser automation by Aaron Elijah Mars",
|
||||
"version": "1.0.6",
|
||||
"auto_install": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -295,9 +269,21 @@ cp LICENSE dist/opendia-dxt/ 2>/dev/null || echo "⚠️ LICENSE not found, ski
|
||||
cat > dist/opendia-dxt/EXTENSION_INSTALL.md << 'EOF'
|
||||
# OpenDia Browser Extension Installation
|
||||
|
||||
## Quick Setup
|
||||
**🔗 Official Repository:** https://github.com/aaronjmars/opendia
|
||||
|
||||
### For Chrome/Chromium Browsers
|
||||
## Complete Installation Guide
|
||||
|
||||
### Step 1: Install the DXT Package (Already Done!)
|
||||
✅ You've successfully installed the OpenDia DXT package in Claude Desktop
|
||||
|
||||
### Step 2: Install Browser Extension
|
||||
|
||||
**📦 Get Latest Extension:**
|
||||
Download the latest extension from: https://github.com/aaronjmars/opendia/releases
|
||||
|
||||
**Or use the included extension in this DXT package:**
|
||||
|
||||
#### For Chrome/Chromium Browsers
|
||||
|
||||
1. **Enable Developer Mode**
|
||||
- Go to `chrome://extensions/`
|
||||
@@ -306,37 +292,57 @@ cat > dist/opendia-dxt/EXTENSION_INSTALL.md << 'EOF'
|
||||
2. **Install Extension**
|
||||
- Click "Load unpacked"
|
||||
- Select the `extension/` folder from this DXT package
|
||||
- Extension should appear in your extensions list
|
||||
- Extension should appear in your extensions list with OpenDia icon
|
||||
|
||||
### For Firefox
|
||||
#### For Firefox
|
||||
|
||||
1. **Load Temporary Add-on**
|
||||
- Go to `about:debugging#/runtime/this-firefox`
|
||||
- Click "Load Temporary Add-on..."
|
||||
- Select the `manifest-firefox.json` file from the `extension/` folder
|
||||
|
||||
> **Note**: Firefox extensions are loaded as temporary add-ons and will be removed when Firefox restarts.
|
||||
> **Firefox Note**: Extensions are loaded as temporary add-ons and will be removed when Firefox restarts. For permanent installation, use the signed extension from GitHub releases.
|
||||
|
||||
## Verify Connection
|
||||
### Step 3: Verify Everything Works
|
||||
|
||||
- Click the OpenDia extension icon
|
||||
- Should show "Connected to MCP server"
|
||||
- Green status indicator means ready to use
|
||||
1. **Check Extension Status**
|
||||
- Click the OpenDia extension icon in your browser
|
||||
- Should show "Connected to MCP server"
|
||||
- Green status indicator means ready to use
|
||||
|
||||
2. **Test in Claude Desktop**
|
||||
- Ask Claude: "List my open browser tabs"
|
||||
- Should return your current tabs if working correctly
|
||||
|
||||
## Supported Browsers
|
||||
- Mozilla Firefox (Manifest V2)
|
||||
- Google Chrome (Manifest V3)
|
||||
- Arc Browser, Microsoft Edge, Brave Browser, Opera
|
||||
- Any Chromium-based browser
|
||||
- ✅ **Mozilla Firefox** (Manifest V2)
|
||||
- ✅ **Google Chrome** (Manifest V3)
|
||||
- ✅ **Arc Browser, Microsoft Edge, Brave Browser, Opera**
|
||||
- ✅ **Any Chromium-based browser**
|
||||
|
||||
## Features
|
||||
🎯 Anti-detection bypass for Twitter/X, LinkedIn, Facebook
|
||||
📱 Smart automation and page analysis
|
||||
🔧 Form filling with enhanced compatibility
|
||||
📊 Multi-tab workflows and background operations
|
||||
🎨 Page styling and visual customization
|
||||
## Key Features
|
||||
🎯 **Anti-detection bypass** for Twitter/X, LinkedIn, Facebook
|
||||
📱 **Smart automation** and intelligent page analysis
|
||||
🔧 **Form filling** with enhanced compatibility
|
||||
📊 **Multi-tab workflows** and background operations
|
||||
🎨 **Page styling** and visual customization
|
||||
🔒 **Privacy-first** - everything runs locally
|
||||
|
||||
For more help, visit: https://github.com/aaronjmars/opendia
|
||||
## Getting Help
|
||||
|
||||
- **📖 Full Documentation:** https://github.com/aaronjmars/opendia
|
||||
- **🐛 Report Issues:** https://github.com/aaronjmars/opendia/issues
|
||||
- **💬 Discussions:** https://github.com/aaronjmars/opendia/discussions
|
||||
|
||||
## What's Next?
|
||||
|
||||
Try these example prompts in Claude Desktop:
|
||||
- "List my open browser tabs"
|
||||
- "Analyze the content of my current tab"
|
||||
- "Apply a dark theme to this webpage"
|
||||
- "Extract the main article text from this page"
|
||||
|
||||
**🚀 Ready to supercharge your browser with AI!**
|
||||
EOF
|
||||
|
||||
# Verify structure before zipping
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "OpenDia",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "Connect your browser to AI models",
|
||||
"icons": {
|
||||
"16": "icons/icon-16.png",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "OpenDia",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "Connect your browser to AI models",
|
||||
"applications": {
|
||||
"gecko": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "OpenDia",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "Connect your browser to AI models",
|
||||
"icons": {
|
||||
"16": "icon-16.png",
|
||||
|
||||
4
opendia-extension/package-lock.json
generated
4
opendia-extension/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "opendia-extension",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "opendia-extension",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.6",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"webextension-polyfill": "^0.12.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "opendia-extension",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "Connect your browser to AI models",
|
||||
"scripts": {
|
||||
"build": "node build.js",
|
||||
|
||||
@@ -358,7 +358,7 @@ async function getTabContentScriptStatus(tabId) {
|
||||
}
|
||||
|
||||
const response = await new Promise((resolve, reject) => {
|
||||
const timeout = setTimeout(() => resolve(null), 1000);
|
||||
const timeout = setTimeout(() => resolve(null), 3000); // Increase to 3 seconds
|
||||
browser.tabs.sendMessage(tabId, { action: 'ping' }, (response) => {
|
||||
clearTimeout(timeout);
|
||||
resolve(response);
|
||||
@@ -382,12 +382,12 @@ function getAvailableTools() {
|
||||
/*
|
||||
🎯 BACKGROUND TAB WORKFLOW GUIDE:
|
||||
|
||||
1. DISCOVER TABS: Use tab_list with check_content_script=true to see all tabs and their IDs
|
||||
1. DISCOVER TABS: Use tab_list with check_content_script=false to see all tabs and their IDs
|
||||
2. TARGET SPECIFIC TABS: Add tab_id parameter to any tool to work on background tabs
|
||||
3. MULTI-TAB OPERATIONS: Process multiple tabs without switching between them
|
||||
|
||||
Example Multi-Tab Workflow:
|
||||
- tab_list({check_content_script: true}) → Get tab IDs and readiness status
|
||||
- tab_list({check_content_script: false}) → Get tab IDs quickly
|
||||
- page_analyze({intent_hint: "article", tab_id: 12345}) → Analyze background research tab
|
||||
- page_extract_content({content_type: "article", tab_id: 12345}) → Extract content without switching
|
||||
- get_selected_text({tab_id: 67890}) → Get quotes from another background tab
|
||||
@@ -689,8 +689,8 @@ function getAvailableTools() {
|
||||
inputSchema: {
|
||||
type: "object",
|
||||
examples: [
|
||||
{ check_content_script: true }, // RECOMMENDED: Check which tabs are ready for background operations
|
||||
{ current_window_only: false, check_content_script: true } // Check all tabs across windows
|
||||
{ check_content_script: false }, // RECOMMENDED: Default false to avoid timeouts
|
||||
{ current_window_only: false, check_content_script: false } // Get all tabs across windows
|
||||
],
|
||||
properties: {
|
||||
current_window_only: {
|
||||
|
||||
4
opendia-mcp/package-lock.json
generated
4
opendia-mcp/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "opendia",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.6",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "opendia",
|
||||
"version": "1.0.5",
|
||||
"version": "1.0.6",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "opendia",
|
||||
"version": "1.0.6",
|
||||
"version": "1.1.0",
|
||||
"description": "🎯 OpenDia - The open alternative to Dia. Connect your browser to AI models with anti-detection bypass for Twitter/X, LinkedIn, Facebook",
|
||||
"main": "server.js",
|
||||
"bin": {
|
||||
|
||||
Reference in New Issue
Block a user