# AIEA Local Chrome Screenshot + OpenAI Assistant Local-only (unpacked) Chrome extension + Python bridge that: 1. Captures the visible tab screenshot. 2. Extracts visible page text hierarchy (reduced HTML tree). 3. Saves files to `./screenshots`. 4. Calls OpenAI with: - screenshot image - extracted page content - system instructions from `AI_EA_INSTRUCTIONS.MD` - optional extra instructions from the extension UI 5. Returns short + medium response suggestions per visible post back to the extension popup. No Chrome Web Store publishing is required. ## Project Structure - `chrome_screenshot_ext/` unpacked MV3 extension (popup UI + capture + extraction) - `tools/local_screenshot_bridge.py` local HTTP server (`127.0.0.1`) + OpenAI call - `AI_EA_INSTRUCTIONS.MD` system instructions fed to the model - `screenshots/` generated outputs (`.png`, `.json`, `.content.json`, `.ai.json`) ## Prerequisites - macOS/Linux shell - Python 3.9+ - Google Chrome - OpenAI API key ## Setup (venv) From repo root: ```bash python3 -m venv .venv source .venv/bin/activate pip install -U pip pip install -r requirements.txt ``` Set API key with either: 1. Environment variable ```bash export OPENAI_API_KEY="your_api_key_here" ``` 2. `.env` file in project root ```bash OPENAI_API_KEY=your_api_key_here ``` ## Run the Local Server With OpenAI enabled: ```bash python3 tools/local_screenshot_bridge.py --port 8765 --out-dir screenshots --ai ``` Without OpenAI (save files only): ```bash python3 tools/local_screenshot_bridge.py --port 8765 --out-dir screenshots ``` More logging (includes AI request/response ids + parse details): ```bash python3 tools/local_screenshot_bridge.py --port 8765 --out-dir screenshots --ai --log-level debug python3 tools/local_screenshot_bridge.py --port 8765 --out-dir screenshots --ai --log-level debug --ai-max-output-tokens 2500 ``` Health check: ```bash curl http://127.0.0.1:8765/health ``` ## Load the Chrome Extension (Unpacked) 1. Open `chrome://extensions` 2. Enable Developer mode 3. Click `Load unpacked` 4. Select `chrome_screenshot_ext/` If you change extension code, click `Reload` on this extension page. ## Use the Extension 1. Open any normal webpage (not `chrome://` pages). 2. Click extension icon. 3. Keep endpoint: `http://127.0.0.1:8765/screenshot` 4. Optional: add `Extra instructions` (2-line input in popup). 5. Click `Capture`. Popup shows: - Saved file paths - AI suggestions per detected post (6 total): - improved short + medium - critical short + medium - suggested short + medium - Any AI error details History in popup: - `History` dropdown stores recent generations locally (`chrome.storage.local`) - `Show` displays a previous result - `Clear` removes local popup history ## Output Files Generated in `screenshots/`: - `YYYYMMDDTHHMMSSZ-.png` screenshot - `YYYYMMDDTHHMMSSZ-.json` metadata - `YYYYMMDDTHHMMSSZ-.content.json` extracted visible content tree - `YYYYMMDDTHHMMSSZ-.ai.json` structured AI suggestions ## AI Behavior Notes - System instructions source: `AI_EA_INSTRUCTIONS.MD` - Extra per-capture instructions source: popup `Extra instructions` - AI output is sanitized post-generation: - quote/dash/space cleanup - invisible unicode cleanup - collapsed extra spaces/newlines - forced lowercase (no capital letters) ## Useful CLI Options ```bash python3 tools/local_screenshot_bridge.py --help ``` Common options: - `--ai-model` (default: `gpt-5.2`) - `--ai-max-posts` (default: `12`) - `--ai-content-max-chars` (default: `120000`) - `--ai-image-detail` (default: `auto`) - `--ai-max-output-tokens` (default: `1400`) - `--run ...` optional post-save hook command ## Troubleshooting - `missing_openai_api_key`: set `OPENAI_API_KEY` in shell or `.env`, then restart server. - `missing_openai_sdk`: run `pip install -r requirements.txt` inside your venv. - Capture fails on Chrome internal pages: `chrome://*`, Web Store, and some protected tabs cannot be scripted. - No AI results in popup: verify server started with `--ai`.