{"id":48883169,"url":"https://github.com/visterainer/aidea-zotero","last_synced_at":"2026-04-16T04:03:25.990Z","repository":{"id":342077037,"uuid":"1172659082","full_name":"Visterainer/aidea-zotero","owner":"Visterainer","description":"AIdea — Free AI chat in Zotero's side panel. OAuth login (no API key needed), supports OpenAI-compatible APIs and local models (Ollama, LM Studio). | 免费 AI 助手，Zotero 侧边栏对话，OAuth 登录无需 API Key，支持 OpenAI 兼容接口与本地模型（Ollama、LM Studio）","archived":false,"fork":false,"pushed_at":"2026-04-15T23:16:31.000Z","size":15852,"stargazers_count":29,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-04-16T01:21:00.059Z","etag":null,"topics":["academic","ai","ai-assistant","apikey-authentication","chatgpt","free","free-chatgpt","no-api-key","no-api-keys","oauth","oauth-login","ollama","openai","openai-api","research","zotero","zotero-addon","zotero-plugin"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Visterainer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2026-03-04T14:59:08.000Z","updated_at":"2026-04-15T16:52:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Visterainer/aidea-zotero","commit_stats":null,"previous_names":["visterainer/aidea-zotero"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/Visterainer/aidea-zotero","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visterainer%2Faidea-zotero","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visterainer%2Faidea-zotero/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visterainer%2Faidea-zotero/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visterainer%2Faidea-zotero/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Visterainer","download_url":"https://codeload.github.com/Visterainer/aidea-zotero/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Visterainer%2Faidea-zotero/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31870517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"online","status_checked_at":"2026-04-16T02:00:06.042Z","response_time":69,"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":["academic","ai","ai-assistant","apikey-authentication","chatgpt","free","free-chatgpt","no-api-key","no-api-keys","oauth","oauth-login","ollama","openai","openai-api","research","zotero","zotero-addon","zotero-plugin"],"created_at":"2026-04-16T04:03:04.053Z","updated_at":"2026-04-16T04:03:25.974Z","avatar_url":"https://github.com/Visterainer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"addon/content/icons/icon-96.png\" alt=\"AIdea Logo\" width=\"80\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eAIdea\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eA free, open-source AI assistant plugin for Zotero\u003c/strong\u003e\u003cbr/\u003e\n  OAuth login with your existing account, or connect any OpenAI-compatible endpoint\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  🎉🎊 \u003cstrong\u003eNow supporting ChatGPT 5.4!\u003c/strong\u003e 🚀✨\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  🟢 \u003cstrong\u003eOpenAI (ChatGPT)\u003c/strong\u003e\u003cbr/\u003e\n  🔵 \u003cstrong\u003eGoogle Gemini\u003c/strong\u003e\u003cbr/\u003e\n  🟣 \u003cstrong\u003eQwen (通义千问)\u003c/strong\u003e\u003cbr/\u003e\n  ⚫ \u003cstrong\u003eGitHub Copilot\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README_CN.md\"\u003e中文版\u003c/a\u003e \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#-installation\"\u003eInstallation\u003c/a\u003e \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#-getting-started\"\u003eGetting Started\u003c/a\u003e \u0026nbsp;|\u0026nbsp;\n  \u003ca href=\"#-license\"\u003eLicense\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## ✨ Features\n\n### 💬 AI Chat in Side Panel\n\nChat with AI directly in Zotero's side panel — available in both the **Library** view and the **PDF Reader**. Ask questions, get summaries, and interact with your research seamlessly.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/screenshots/chat_en.png\" alt=\"Side panel chat\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n### 📄 Paper-Aware Context\n\nSelect text in the PDF reader and click **\"Add Text\"** to attach the selected passage to the context area. The AI will use it as reference when answering your questions — enabling precise, passage-level Q\u0026A.\n\n### ⚡ Quick Action Shortcuts\n\nOne-click shortcut buttons for common tasks like **Summarize**, **Explain**, **Translate**, and more. Fully customizable — add, edit, reorder, or remove shortcuts to fit your workflow.\n\n### 🖼️ Multimodal Support\n\nAttach images (screenshots, figures, charts) to your messages. Drag \u0026 drop, paste from clipboard, or use the screenshot tool to capture content directly from your PDFs.\n\n### 🔐 OAuth Account Login (No API Key Required)\n\nSign in with your **existing account** via OAuth — no need for an API key or subscription. Supports multiple providers with different OAuth flows for seamless authentication.\n\n\u003e **Latest supported version: ChatGPT 5.4**\n\n### 🌐 Multi-Provider Support\n\n| Provider             | Auth Method                   | Extra Setup              |\n| -------------------- | ----------------------------- | ------------------------ |\n| **OpenAI (ChatGPT)** | OAuth via Codex CLI           | Node.js (auto-installed) |\n| **Google Gemini**    | In-plugin OAuth (PKCE)        | Node.js (auto-installed) |\n| **Qwen (通义千问)**  | In-plugin OAuth (Device Code) | None                     |\n| **GitHub Copilot**   | In-plugin OAuth (Device Code) | None                     |\n\n### 📝 Note Export\n\nSave AI responses as Zotero notes with one click. Responses are formatted in Markdown with full LaTeX math rendering support.\n\n### 💾 Persistent Chat History\n\nAll conversations are saved locally in Zotero's database. Switch between multiple conversations, continue where you left off, and manage your chat history.\n\n### 🧠 Memory System\n\nThe AI automatically captures and recalls important information across conversations, enabling personalized, context-aware responses that improve over time.\n\n- **Auto-Capture** — detects preferences, decisions, facts, and key entities from natural conversation\n- **Per-Library Isolation** — memories are scoped to each Zotero library, keeping research projects separate\n- **Smart Deduplication** — Jaccard token similarity (≥90%) prevents storing redundant memories\n- **Relevance-Ranked Retrieval** — multi-factor scoring (token overlap × 0.65 + substring boost + recency × 0.15 + importance × 0.20)\n- **Prompt Injection Defense** — built-in pattern detection prevents malicious content from being stored\n- **Fully Local** — all memories are stored in Zotero's SQLite database; nothing is sent externally\n\n### 🎨 Rich Rendering\n\n- Full **Markdown** rendering (headings, lists, code blocks, tables)\n- **LaTeX** math formula support (powered by KaTeX)\n- **Syntax highlighting** for code blocks\n- Smooth **streaming** responses\n\n### 🌍 Bilingual Interface\n\nFull support for **English** and **Chinese** (中文) — switch languages in Settings at any time.\n\n---\n\n## 📦 Installation\n\n### Requirements\n\n- **Zotero 7 or later** (version 7.0+)\n- **Node.js** — required for OpenAI and Gemini; **auto-installed** by the plugin if missing (Qwen and GitHub Copilot do not require Node.js)\n\n### Install the Plugin\n\n1. Download the latest `AIdea-x.x.x.xpi` from [Releases](https://github.com/Visterainer/aidea-zotero/releases)\n2. In Zotero, go to **Tools → Add-ons**\n3. Click the gear icon ⚙️ → **Install Add-on From File...**\n4. Select the downloaded `.xpi` file\n5. Restart Zotero\n\n### Upgrade\n\nSimply install the new `.xpi` file — it will automatically replace the old version. **All your chat history and settings are preserved.**\n\n---\n\n## 🚀 Getting Started\n\n### 1. Open Settings\n\nGo to **Tools → Add-ons → AIdea → Settings** (or **Edit → Settings → AIdea** on older Zotero)\n\n### 2. Set Up a Provider\n\nAIdea offers two connection modes. You can use one or both:\n\n#### Option A: OAuth Login (No API Key Required)\n\nSign in with your **existing account** — no API key needed. For each provider you want to use, the setup flow on the **provider card** is:\n\n\u003e **① `Install/Update Env`** → **② `OAuth Login`** → **③ `Refresh Models`**\n\n| Button                   | What it does                                                                                                                                                                                                                                                                      |\n| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **`Install/Update Env`** | Automatically installs and configures the required CLI tool and runtime (Node.js, npm, etc.). A risk notice appears on first run — read it and confirm to proceed. For **Qwen** and **GitHub Copilot**, this step is not needed.                                                  |\n| **`OAuth Login`**        | Opens the OAuth authentication flow. For **OpenAI / Gemini**, your browser opens — sign in with your account. For **Qwen / GitHub Copilot**, a dialog shows your authorization code; click **OK** to copy it and open the browser, then paste the code to complete authorization. |\n| **`Refresh Models`**     | After login, click this to load the list of available models for this provider.                                                                                                                                                                                                   |\n| **`Remove Auth`**        | Clears the saved OAuth token for this provider.                                                                                                                                                                                                                                   |\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/screenshots/settings_oauth_en.png\" alt=\"OAuth Providers\" width=\"700\" /\u003e\n\u003c/p\u003e\n\n\u003e 💡 **Tip:** You only need to do this once per provider. The login session is saved locally and persists across Zotero restarts.\n\n#### Option B: Custom OpenAI-Compatible Endpoint\n\nAs an alternative to OAuth, AIdea supports connecting to any **OpenAI-compatible chat endpoint**. This is useful for users who want to use local or self-hosted models (e.g. Ollama, LM Studio, vLLM), or third-party services (e.g. DeepSeek, OpenRouter, Groq).\n\nIn **Settings**, switch to the **API Mode** tab and fill in the following fields:\n\n| Field            | Required | Description                                                                                                                                                      |\n| ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **API Base URL** | Yes      | The base URL of your endpoint (e.g. `https://api.openai.com/v1` or a local address like `http://localhost:11434/v1`). Local and self-hosted endpoints are supported. |\n| **API Key**      | No       | An API key if your endpoint requires authentication. Leave blank if no key is needed.                                                                            |\n| **Model**        | Yes      | Enter a model ID manually, or click **Auto Fetch Models** to discover available models automatically.                                                            |\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/screenshots/settings_api_en.png\" alt=\"API Mode custom endpoint\" width=\"700\" /\u003e\n\u003c/p\u003e\n\n\u003e **Note:** This feature targets OpenAI-compatible `/chat/completions` endpoints. It does not guarantee compatibility with provider-specific features such as tool calling, file uploads, or image inputs beyond basic chat completion.\n\n#### Available Models\n\nBoth connection modes share a unified model list. You can select which models to use, manage per-provider models, and refresh them at any time.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"doc/screenshots/settings_models_en.png\" alt=\"Available Models\" width=\"700\" /\u003e\n\u003c/p\u003e\n\n### 3. Start Chatting\n\n- **Library Panel**: Select any item in your library — the AIdea panel appears in the right sidebar\n- **PDF Reader**: Open any PDF — the AIdea panel appears in the reader's side panel\n- Type your question and press **Send** or hit `Enter`\n\n### 4. Use Quick Actions\n\nClick any shortcut button (**Summarize**, **Explain**, **Translate**, etc.) for one-click actions. Right-click a shortcut to edit or remove it.\n\n---\n\n## ⚙️ Configuration\n\n| Setting             | Description                                            | Default                      |\n| ------------------- | ------------------------------------------------------ | ---------------------------- |\n| **UI Language**     | Interface language (EN / CN)                           | EN                           |\n| **System Prompt**   | Custom instructions for the AI                         | Empty (use built-in default) |\n| **Show \"Add Text\"** | Show the Add Text option in the reader selection popup | ☑ On                         |\n| **Show All Models** | Show all available models vs. curated best models only | ☐ Off                        |\n\n---\n\n## 🔒 Privacy \u0026 Security\n\n- 🔑 OAuth tokens are stored **locally only** — never sent to third-party servers\n- 📡 All API communication is **directly between you and the AI provider**\n- 🚫 This plugin **does not collect any user data**\n- 📖 Fully **open-source** — inspect the code anytime at [GitHub](https://github.com/Visterainer/aidea-zotero)\n\n---\n\n## 🗺️ Roadmap\n\nPlanned features for upcoming releases:\n\n- 🔤 **Highlight Translation** — Select text in the PDF reader to instantly translate highlighted passages in place\n- 📖 **One-Click Full Document Translation** — Translate the entire paper with a single click, generating a side-by-side bilingual view\n- 🗂️ **One-Click Architecture Diagram** — Automatically generate a structural diagram from the paper's content, visualizing the research framework at a glance\n\n\u003e 💡 Have a feature request? Feel free to open an [Issue](https://github.com/Visterainer/aidea-zotero/issues)!\n\n---\n\n## 🛠️ Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Development mode (with hot reload)\nnpm start\n\n# Build production XPI\nnpm run build\n\n# Run tests\nnpm run test:unit\n```\n\n---\n\n## 📄 License\n\n[AGPL-3.0-or-later](./LICENSE)\n\nThis project is a fork of [llm-for-zotero](https://github.com/yilewang/llm-for-zotero) by Yile Wang. See [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md) for full attribution.\n\n---\n\n## ⭐ Star History\n\n\u003ca href=\"https://star-history.com/#Visterainer/aidea-zotero\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=Visterainer/aidea-zotero\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=Visterainer/aidea-zotero\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=Visterainer/aidea-zotero\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  Author: \u003cstrong\u003ezhile\u003c/strong\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisterainer%2Faidea-zotero","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvisterainer%2Faidea-zotero","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisterainer%2Faidea-zotero/lists"}