A Chrome extension (Manifest V3) that provides quick access to Grokipedia from Wikipedia articles. Built with vanilla JavaScript - no frameworks, all logic runs locally in the content script.
- Automatic URL Building: Extracts the Wikipedia article title and builds the corresponding Grokipedia URL
- Existence Check: Performs a client-side HEAD request to check if the Grokipedia page exists
- Two Modes:
- Prompt Mode (default): Shows a small, unobtrusive panel near the article heading
- Redirect Mode: Automatically redirects to Grokipedia when the page exists
- Graceful CORS Handling: If the HEAD request is blocked by CORS, shows the panel in
(unknown)state so users can manually check - Keyboard Accessible: Panel is keyboard accessible with Esc to dismiss
- Privacy-Focused: Only reads article titles, no content or user data is collected or stored
- Open Chrome and navigate to
chrome://extensions/ - Enable Developer mode (toggle in the top-right corner)
- Click Load unpacked
- Select the
grokmeupfolder (the folder containingmanifest.json) - The extension should now appear in your extensions list
- The extension icon should appear in your Chrome toolbar
- Right-click the icon and select "Options" to access the settings page
- Visit any Wikipedia article (e.g.,
https://en.wikipedia.org/wiki/Assassination_of_Archduke_Franz_Ferdinand) - The extension will:
- Extract the article title
- Build the Grokipedia URL:
https://grokipedia.com/page/Assassination_of_Archduke_Franz_Ferdinand - Check if the page exists via HEAD request
- Show a panel or redirect based on your mode setting
- (available): The Grokipedia page exists (HEAD returned 2xx)
- (unknown): CORS blocked the check or network error occurred
- No panel: The page doesn't exist (HEAD returned 404)
Right-click the extension icon → Options to toggle between:
- Prompt Mode: Shows panel/icon, click to open in new tab
- Redirect Mode: Auto-redirects when page exists
Visit: https://en.wikipedia.org/wiki/Assassination_of_Archduke_Franz_Ferdinand
Expected Behavior:
- Extension builds URL:
https://grokipedia.com/page/Assassination_of_Archduke_Franz_Ferdinand - If HEAD returns 200:
- Prompt mode: Panel appears with "(available)" state
- Redirect mode: Page redirects to Grokipedia
- If HEAD is blocked by CORS:
- Panel appears with "(unknown)" state
- Clicking the icon opens Grokipedia in a new tab
Visit a Wikipedia article that doesn't have a corresponding Grokipedia page. The extension should:
- Not show a panel
- Not redirect
If you need to change the Grokipedia domain, edit content_script.js:
const GROK_DOMAIN = "https://grokipedia.com/page/";Change this constant to your desired domain.
Problem: Panel shows "(unknown)" state even when the page exists.
Cause: The HEAD request is being blocked by CORS (Cross-Origin Resource Sharing) policy. This is common when grokipedia.com doesn't allow cross-origin requests from Wikipedia domains.
Solution:
- The extension handles this gracefully by showing the panel in "(unknown)" state
- Users can click the icon to manually open Grokipedia
- This is expected behavior and not a bug
Possible Causes:
- The page doesn't exist (404) - this is expected, no panel should appear
- The article title couldn't be extracted - check browser console for errors
- The content script hasn't loaded - check
chrome://extensions/to ensure the extension is enabled
Debug Steps:
- Open browser DevTools (F12)
- Check the Console tab for
[Grokiphile]log messages - Verify the extension is enabled and has permissions
Possible Causes:
- The page doesn't exist (404) - redirect only happens when page exists
- CORS blocked the check - redirect only happens when existence is confirmed
- Mode not saved - check Options page to verify mode is set to "redirect"
Debug Steps:
- Check Options page to confirm mode is "redirect"
- Check console logs to see the check result
- Try a page you know exists on Grokipedia
Possible Causes:
- Manifest V3 compatibility - ensure you're using Chrome 88+ or Edge 88+
- Invalid manifest.json - check for syntax errors
- Missing files - ensure all files are present
Debug Steps:
- Check
chrome://extensions/for error messages - Click "Errors" button if available
- Verify all files are in the correct locations
grokmeup/
├── manifest.json # Extension manifest (MV3)
├── content_script.js # Main content script logic
├── content_style.css # Panel styling
├── options.html # Options page UI
├── options.js # Options page logic
├── icons/ # Extension icons
│ ├── grok-16.png
│ ├── grok-32.png
│ ├── grok-48.png
│ └── grok-128.png
├── generate_icons.py # Icon generator script (optional)
├── generate_icons.html # Alternative icon generator (optional)
└── README.md # This file
This extension:
- ✅ Only reads Wikipedia article titles
- ✅ Performs local HEAD requests to check page existence
- ✅ Stores only the user's mode preference (prompt/redirect)
- ❌ Does NOT collect or store page content
- ❌ Does NOT collect or store user data
- ❌ Does NOT transmit data to any server
All checks are performed locally in your browser. The only external request is the HEAD request to Grokipedia to check if a page exists.
- Manifest Version: 3
- Content Script: Runs on
*://*.wikipedia.org/wiki/*and*://*.wikipedia.org/*/wiki/* - Permissions:
storage,tabs,scripting - Host Permissions:
https://*.wikipedia.org/*,https://grokipedia.com/* - Run At:
document_idle(can be changed todocument_startfor faster redirects)
The extension extracts the article title using:
- Primary: DOM element
#firstHeading(if available) - Fallback: URL parsing
/wiki/<title>with URL decoding
Titles are converted to Grokipedia URLs by:
- Replacing spaces with underscores
- URL encoding the result
- Appending to
https://grokipedia.com/page/
The extension uses fetch() with method: 'HEAD' and mode: 'cors':
- 2xx status: Page exists
- 404 status: Page doesn't exist
- 3xx status: Follows redirect and checks final URL
- CORS/Network error: Treated as unknown
This extension is provided as-is for educational and personal use.
For issues or questions:
- Check the Troubleshooting section above
- Verify all files are present and manifest.json is valid
- Ensure the extension is enabled and has proper permissions