Privacy Policy
Last updated: 2026-07-28
Last updated: 2026-07-28
1. Overview
ImgX operates in two modes:
- - BYOK mode (default): You provide your own Vision API key and endpoint in settings. Images are sent directly from your browser to your configured endpoint--no developer-controlled server is involved. Your data stays local; the extension never forwards it to anyone but your chosen provider.
- - Cloud mode (optional, opt-in): After signing in with an email one-time password, you use ImgX-provided free credits. In this mode, images are proxied through ImgX's Cloudflare Worker to the model provider, and Supabase records your email, credit ledger, and analysis requests. Cloud mode exists so users without an API key can still try ImgX; BYOK is permanently available and sign-in is never required.
ImgX also offers an opt-in (default off) local usage statistics feature: when enabled, it counts analysis runs and mode switches locally only, never uploads them. See §2.2.
This document explains what data ImgX processes, how, and what rights you have. Differences between modes are noted per section.
2. What We Collect
2.1 Data You Provide
| Data | Storage | Purpose | Transmission | Mode |
|---|---|---|---|---|
| API Endpoint | chrome.storage.local | Vision API address | Sent only to your configured endpoint | BYOK |
| API Key | chrome.storage.local | Vision API auth | Sent only as an HTTP header to your endpoint | BYOK |
| Model name | chrome.storage.local | Vision model selection | Sent to your endpoint | BYOK |
| Login email | Supabase Auth + chrome.storage.local (session) | Cloud mode identity & credit attribution | OTP email sent to this address via Resend; email stored in Supabase | Cloud |
2.2 Local Runtime Data
| Data | Storage | Retention | Purpose |
|---|---|---|---|
| Analysis history & queue | chrome.storage.local | Shared cap of 50 entries (evicts oldest done/failed by addedAt; pending prioritized) | Offline review / batch progress |
| URL reverse index | chrome.storage.local | Synced with history | Recall history on hover (no API call) |
| Classifier diagnostic log | chrome.storage.local | FIFO 100 entries | Debug classifier accuracy; host only, no full URL |
| Custom prompt templates | chrome.storage.local | Permanent until deleted | Custom system prompts |
| Local usage stats | chrome.storage.local | 30 days daily + total (opt-in, off by default) | Counts analyses & mode switches; local only, never uploaded |
| Cloud login session | chrome.storage.local (key imgx_cloud_session) | Until logout or token expiry | Stores access token, refresh token, user ID & email for Cloud auth |
Cloud session tokens are stored only in the local browser, never synced across devices, and cleared by Chrome on uninstall.
2.3 Cloud Mode Server-Side Data
When signed into Cloud mode, Supabase (ImgX's backend) records:
| Data | Storage | Retention | Purpose |
|---|---|---|---|
| Credit account | Supabase Postgres (imgx_credit_accounts) | Until account deletion | Current balance & lifetime granted credits |
| Analysis request record | Supabase Postgres (imgx_analysis_requests) | Metadata auto-purged after 90 days | Request ID, status, model, timestamp for billing & idempotency. Rows deleted after 90 days (sufficient for reconciliation); ledger kept separately |
| Success result cache | Same table, result_data field | Auto-cleared after 24 hours (set to null) | Idempotent replay: a repeated request within 24h returns the cached result without re-charging. Stores only the prompt text (bilingual + structured), never the original image |
| Credit ledger | Supabase Postgres (imgx_credit_ledger) | Until account deletion | Each grant / debit / refund with amount & reason; for reconciliation & abuse prevention |
No image pixel data is stored server-side. Request records contain only metadata and 24h prompt text.
2.4 Temporarily Processed Data
| Data | Processing | Retention | Mode |
|---|---|---|---|
| Image content | Scaled to base64 and sent | Released immediately after processing; original not persisted | Both |
| Page URL | Recorded as sourcePageUrl on enqueue | Stored in local history; deleted with history | Both |
| Image base64 via Worker | In Cloud mode, base64 is proxied through Cloudflare Worker to the model provider | Worker does not persist or log image content; released when the request ends; logs are scrubbed | Cloud |
2.5 What We Don't Collect
In either mode, ImgX:
- - ❌ Does not collect personal identification beyond the login email required by Cloud mode
- - ❌ Does not collect browsing history (only the page URL of images you actively analyze, stored locally)
- - ❌ Does not collect cookies or sessions for cross-site tracking (Cloud tokens are used only for ImgX auth)
- - ❌ Does not collect keystrokes / mouse轨迹 / form content
- - ❌ Does not collect device fingerprints
- - ❌ Does not send analytics or telemetry to third parties (local usage stats stay local)
- - ❌ No ads, no trackers
- - ❌ Does not use your images for model training
3. Authentication & Credit Security (Cloud Mode)
Google Sign-In
Google Sign-In is optional. It requests only the standard OpenID email address and basic profile information. ImgX uses this data only to create or sign in to your ImgX account and attribute Cloud credits. ImgX does not access Google Drive, Google Photos, Gmail, or other Google content, and does not use Google account data for advertising, image analysis, or model training.
- - Sign-in uses email one-time password (OTP); the code is sent via Resend SMTP to your email.
- - After sign-in, Supabase-issued access/refresh tokens are stored only in local
chrome.storage.local, never synced across devices. - - Tokens are used only to call ImgX Worker's
/v1/accountand/v1/analyzeendpoints, and to refresh the token via Supabase Auth. - - In Cloud mode you do not provide an API key--the model is called by the Worker using a server-side key; your browser never sees the model API key.
- - First sign-in grants 10 analysis credits; when exhausted, Cloud mode is unavailable but you can switch back to BYOK.
- - Credit accounting is atomic: a credit is reserved at request start, refunded on model failure, and only debited on success. A repeated request within 24h is charged once (idempotent).
4. Image Content
- - Image pixels are read only when analyzed (scaled to ≤1536px, JPEG 85% quality).
- - BYOK mode: base64 is sent directly from the browser to your configured endpoint.
- - Cloud mode: base64 is sent to the ImgX Worker, which proxies it to the model provider and releases it immediately--not persisted, not logged.
- - After processing, the original base64 is released at every stage.
- - History stores only the image URL, not the image file itself.
- - Thumbnail cache: queue-panel thumbnails use the browser's normal HTTP cache; the extension adds no separate cache.
5. Network Requests
5.1 BYOK Mode
Vision API request
- - Target: your configured
endpoint(defaulthttps://api.siliconflow.cn/v1) - - Content: image base64 + system prompt + user prompt
- - Purpose: analyze image, generate bilingual prompt
Image proxy request
- - Target: the original CDN/server of the analyzed image
- - Trigger: when an in-page
fails to load cross-origin - - Purpose: bypass hotlink protection so the queue can fetch the original
- - Carries only the page's existing Referer; no extra user identifiers
5.2 Cloud Mode
OTP email (on sign-in)
- - Target: Resend SMTP -> your inbox
- - Content: 6-digit code
- - Purpose: email authentication
Worker requests (when signed in)
- -
GET /v1/account: query email & remaining credits - -
POST /v1/analyze: submit image for analysis - - Target:
https://api.imgxapp.com - - Content: image base64 + Supabase access token (for auth & billing)
- - Purpose: Cloud mode image analysis
Supabase Auth requests
- - Target:
https://pmprjlziwabyryumvnrx.supabase.co/auth/v1/... - - Purpose: send OTP, verify sign-in, refresh token
6. Third-Party Services (Cloud Mode)
Cloud mode involves these third-party services, each governed by its own privacy policy:
| Service | Purpose | Data received | Data center |
|---|---|---|---|
| Supabase | Auth + Postgres database | Email, credit ledger, analysis request records (metadata + 24h prompt text) | ap-southeast-1 (Singapore) |
| Cloudflare | Worker edge proxy | Image base64 (proxied, not persisted), Supabase user ID, request metadata | Edge nodes |
| Resend | OTP email delivery | Recipient email, verification code | Per its terms |
| Model provider (currently SiliconFlow Qwen3-VL) | Image analysis | Image base64 + server-side-fixed system prompt | Provider's region |
In BYOK mode, images go directly to your configured endpoint and do not pass through the Cloud path above.
7. Permissions
| Permission | Required | Purpose |
|---|---|---|
storage | Required | Settings, history, queue, Cloud login session |
activeTab | Required | Current tab context |
contextMenus | Optional | Right-click menu "ImgX - Image to Prompt" |
scripting | Required | Inject result card into page |
clipboardWrite | Optional | One-click copy of prompts |
alarms | Required | Queue engine periodic scheduling |
(host permission) | Required | See below |
Why is required
ImgX's core feature is "hover any image -> analyze". This requires operating on all websites you visit: 1. Inject content script (detect image hover) 2. Read image pixel data (via Canvas) 3. Cross-origin load images (via Service Worker proxy)
Hence content_scripts matches http://*/* and https://*/*. This is industry standard for image-analysis extensions. ImgX does not use this permission to read page text, forms, or send any data without user action.
8. Data Export & Deletion
8.1 Local Data
| Action | Location | Effect |
|---|---|---|
| Export history | Queue panel -> Export | Download JSON (all analysis records) |
| Import history | Queue panel -> Import | Merge JSON records into local |
| Clear history | Queue panel -> Clear | Delete all history + URL index |
| Clear queue | Queue panel -> Clear | Delete all done/failed queue items |
| Sign out of Cloud | Settings panel -> Sign out | Clear local Cloud session (server-side ledger unaffected) |
| Uninstall extension | Chrome -> Extensions -> Remove | Chrome auto-clears all chrome.storage.local data |
8.2 Cloud Server-Side Data
Signing out of Cloud only clears the local session--it does not delete your Supabase credit account or request history. To fully delete Cloud server-side data (account deletion):
1. Email [email protected] with the login email you want deleted (do not post your email in a public GitHub Issue, to avoid exposing your address) 2. An admin runs a one-shot cleanup script to delete all data for that email: - All records in imgx_credit_accounts, imgx_analysis_requests, imgx_credit_ledger - The Supabase Auth user account 3. After deletion, the email can register again (granted fresh first-time credits)
A future version will add a self-service "Delete account" button in the extension; MVP is admin-assisted.
9. Changes
This policy is updated as ImgX evolves. Material changes will be announced in-app (changelog or banner).
- - 2026-07-27: Account deletion moved to a private mailbox ([email protected]); users are no longer asked to post login email in a public GitHub Issue. Analysis history & queue storage corrected to a shared cap of 50 entries.
- - 2026-07-26: Added Cloud mode (free credits) data processing disclosures, including login email, credit ledger, analysis request records (metadata auto-purged after 90 days), 24-hour result cache, Worker proxy, OTP email; account deletion is admin-assisted via script; self-service deletion planned for a future version.
- - 2026-07-04: Initial version (BYOK-only local architecture).
10. Contact
For privacy questions or to request Cloud account deletion, email [email protected]:
- - Account deletion: email the login email to be deleted (do not post your email in a public GitHub Issue, to avoid exposing your address)
- - General feedback: https://github.com/pamler1004/imgx/issues (please do not include personal emails or sensitive info in Issue descriptions)
中文版
最后更新:2026-07-28
最后更新:2026-07-28
1. 概述
ImgX 提供两种工作模式:
- - BYOK 模式(默认):你在设置里填自己的 Vision API Key 与 endpoint,图片从浏览器直接发往你配置的 endpoint,不经过任何开发者控制的服务器。你的数据全程留存在本地,扩展不向你之外的任何人转发。
- - Cloud 模式(可选,opt-in):你用邮箱验证码登录后,使用 ImgX 提供的免费额度。此模式下图片会经 ImgX 的 Cloudflare Worker 代理转发到模型服务商,并在 Supabase 上记录你的邮箱、额度账本与分析请求。Cloud 模式是为了让没有 API Key 的用户也能试用;BYOK 永久保留,登录不是必须的。
此外 ImgX 还提供一个 opt-in(默认关闭)的本地使用统计 功能:开启后仅在本地累计分析次数与模式切换次数,绝不上传,用于产品改进决策。详见 §2.2。
本文档说明 ImgX 处理哪些数据、如何处理、以及你有权做什么。两种模式的数据处理差异在对应章节标注。
2. 我们收集什么
2.1 你主动提供的数据
| 数据 | 存储位置 | 用途 | 对外传输 | 适用模式 |
|---|---|---|---|---|
| API Endpoint | chrome.storage.local | 指定 Vision API 地址 | 仅发往你配置的 endpoint | BYOK |
| API Key | chrome.storage.local | Vision API 鉴权 | 仅作为 HTTP Header 随请求发送到你的 endpoint | BYOK |
| 模型名称 | chrome.storage.local | 选择 Vision 模型 | 仅随请求发往你的 endpoint | BYOK |
| 登录邮箱 | Supabase Auth + chrome.storage.local(session) | Cloud 模式身份验证、额度归属 | 验证码邮件经 Resend 发往该邮箱;邮箱地址存于 Supabase | Cloud |
2.2 扩展运行时产生的本地数据
| 数据 | 存储位置 | 保留策略 | 用途 |
|---|---|---|---|
| 分析历史与队列 | chrome.storage.local | 统一上限 50 条(超出按 addedAt 优先淘汰 done/failed,待办优先保留) | 离线查看 / 批量分析进度管理 |
| URL 反向索引 | chrome.storage.local | 与历史同步(清历史即清索引) | 悬停已分析图片时召回历史(不发 API) |
| 分类器诊断日志 | chrome.storage.local | FIFO 100 条(超出自动淘汰最早的) | 调试自动分类器准确性,仅存 host 不存完整 URL |
| 自定义 Prompt 模板 | chrome.storage.local | 永久(除非用户删除) | 自定义系统提示词 |
| 本地使用统计 | chrome.storage.local | 30 天 daily + total(opt-in,默认关) | 累计分析次数与模式切换次数,仅本地、绝不上传 |
| Cloud 登录会话 | chrome.storage.local(键名 imgx_cloud_session) | 直至登出或 token 失效 | 存放 access token、refresh token、用户 ID 与邮箱,用于 Cloud 模式鉴权 |
Cloud 登录会话中的 token 仅存于本地浏览器,不跨设备同步,扩展卸载时由 Chrome 自动清理。
2.3 Cloud 模式在服务端产生的数据
登录 Cloud 模式后,Supabase(ImgX 的后端服务)会记录以下数据:
| 数据 | 存储位置 | 保留策略 | 用途 |
|---|---|---|---|
| 额度账户 | Supabase Postgres(imgx_credit_accounts) | 保留至账户注销 | 记录当前余额与累计赠送额度 |
| 分析请求记录 | Supabase Postgres(imgx_analysis_requests) | 元数据 90 天后自动清理 | 记录请求 ID、状态、所用模型、时间戳,用于额度结算与防重放。90 天后自动删除请求行(对账窗口足够),账本流水另行保留 |
| 成功结果缓存 | 同上表的 result_data 字段 | 24 小时后自动清空(置 null) | 幂等重放:同一请求 24h 内重复发送时不重复扣费,直接返回缓存结果。该字段只存模型返回的 Prompt 文本(中英双语 + 结构化字段),绝不存原始图片 |
| 额度账本流水 | Supabase Postgres(imgx_credit_ledger) | 保留至账户注销 | 记录每次赠送 / 扣减 / 退款的金额与原因,用于对账与防刷 |
服务端不存储任何图片像素数据。请求记录里只有元数据与 24h 内的 Prompt 文本结果。
2.4 扩展运行中临时处理的数据
| 数据 | 处理方式 | 保留 | 适用模式 |
|---|---|---|---|
| 图片内容 | 缩放为 base64 后发送 | 处理完成后立即释放,不持久化保存原图 | 两种模式 |
| 页面 URL | 入队时记录 sourcePageUrl | 存于本地历史记录,删除历史即删除 | 两种模式 |
| 图片 base64(经 Worker) | Cloud 模式下,图片 base64 经 Cloudflare Worker 临时转发到模型服务商 | Worker 不落盘、不写日志,请求结束即释放;日志已脱敏不记录图片内容 | Cloud |
2.5 不收集的数据
无论哪种模式,ImgX 都:
- - ❌ 不收集个人身份信息(Cloud 模式仅收集登录所必需的邮箱)
- - ❌ 不收集浏览历史(仅记录你主动分析的图片所在页面 URL,存于本地)
- - ❌ 不收集 Cookie、Session(Cloud 模式的 access/refresh token 仅用于自身鉴权,不用于跨站追踪)
- - ❌ 不收集键盘输入 / 鼠标轨迹 / 表单内容
- - ❌ 不收集设备指纹
- - ❌ 不发送分析 / 遥测数据到任何第三方(本地使用统计仅本地累计,不上传)
- - ❌ 无广告 / 无追踪器
- - ❌ 不将你的图片用于模型训练
3. 认证与额度安全(Cloud 模式)
Google 登录
Google 登录为可选功能,仅请求标准 OpenID 邮箱地址和基础资料。ImgX 只用这些数据创建或登录 ImgX 账户并归属 Cloud 额度;不会访问 Google 云端硬盘、Google 相册、Gmail 或其他 Google 内容,也不会将 Google 账户数据用于广告、图片分析或模型训练。
- - 登录采用邮箱验证码(OTP)方式,验证码通过 Resend SMTP 发往你填写的邮箱。
- - 登录成功后,Supabase 签发的 access token 与 refresh token 仅存于本地
chrome.storage.local,不跨设备同步。 - - Token 仅用于调用 ImgX Worker 的
/v1/account与/v1/analyze接口,以及直接调用 Supabase Auth 刷新 token。 - - Cloud 模式下你不需要提供 API Key--模型调用由 Worker 使用服务端密钥完成,你的浏览器永远看不到模型 API Key。
- - 首次登录赠送 10 次分析额度;额度用尽后 Cloud 模式不可用,但仍可切回 BYOK 模式。
- - 额度结算原子化:请求开始时预扣,模型失败自动退还,成功才最终扣减。同一请求 24h 内重复发送只扣一次(幂等)。
4. 图片内容
- - 图片在被分析时才读取其像素数据(缩放至 ≤1536px,JPEG 85% 质量)。
- - BYOK 模式:图片 base64 从浏览器直接发往你配置的 endpoint。
- - Cloud 模式:图片 base64 从浏览器发往 ImgX Worker,Worker 临时转发到模型服务商后立即释放,不持久化、不写日志。
- - 处理完成后,原始图片的 base64 数据在所有环节立即释放。
- - 历史记录中仅存储图片 URL,不存储图片文件本身。
- - 缩略图缓存:队列面板中显示的缩略图由浏览器常规 HTTP 缓存管理,扩展不额外缓存。
5. 网络请求
5.1 BYOK 模式
Vision API 请求
- - 目标:你配置的
endpoint(默认https://api.siliconflow.cn/v1) - - 内容:图片 base64 + 系统提示词 + 用户提示词
- - 用途:分析图片,生成中英双语 Prompt
图片代理请求
- - 目标:用户分析的图片的原始 CDN/服务器地址
- - 触发条件:页面内
跨域加载失败时 - - 用途:绕开防盗链,保证分析队列能拿到原图数据
- - 仅携带页面原有的 Referer,不额外发送任何用户标识
5.2 Cloud 模式
验证码邮件(登录时)
- - 目标:Resend SMTP -> 你的邮箱
- - 内容:6 位验证码
- - 用途:邮箱身份验证
Worker 请求(已登录)
- -
GET /v1/account:查询邮箱与剩余额度 - -
POST /v1/analyze:提交图片分析 - - 目标:
https://api.imgxapp.com - - 内容:图片 base64 + Supabase access token(用于鉴权与扣费)
- - 用途:Cloud 模式图片分析
Supabase Auth 请求
- - 目标:
https://pmprjlziwabyryumvnrx.supabase.co/auth/v1/... - - 用途:发送验证码、验证登录、刷新 token
6. 第三方服务(Cloud 模式)
Cloud 模式涉及以下第三方服务,各自的数据处理受其隐私政策约束:
| 服务 | 用途 | 收到的数据 | 数据中心 |
|---|---|---|---|
| Supabase | Auth + Postgres 数据库 | 邮箱、额度账本、分析请求记录(元数据 + 24h Prompt 文本) | ap-southeast-1(新加坡) |
| Cloudflare | Worker 边缘代理 | 图片 base64(临时转发,不落盘)、Supabase user ID、请求元数据 | 边缘节点 |
| Resend | 验证码邮件投递 | 收件邮箱、验证码 | 其服务条款所在地 |
| 模型服务商(当前为硅基流动 Qwen3-VL) | 图片分析 | 图片 base64 + 服务端固定的系统提示词 | 服务商所在地 |
BYOK 模式下,图片直接发往你配置的 endpoint,不经过上述 Cloud 路径。
7. 权限说明
ImgX 申请的 Chrome 权限及其用途:
| 权限 | 必要性 | 用途 |
|---|---|---|
storage | 必需 | 存储设置、历史记录、队列、Cloud 登录会话 |
activeTab | 必需 | 获取当前 Tab 上下文 |
contextMenus | 可选 | 右键菜单「ImgX - Image to Prompt」 |
scripting | 必需 | 向页面注入分析结果卡片 |
clipboardWrite | 可选 | 一键复制 Prompt 内容 |
alarms | 必需 | 队列引擎周期性调度 |
(主机权限) | 必需 | 见下方说明 |
为什么必需
ImgX 的核心功能是"悬停任意图片 -> 分析"。这意味着扩展需要在用户浏览的所有网站上: 1. 注入内容脚本(检测图片 hover 事件) 2. 读取图片的像素数据(通过 Canvas) 3. 跨域加载图片(通过 Service Worker 代理)
因此 content_scripts 的匹配模式设置为 http://*/* 和 https://*/*。这是 Chrome 扩展开发中图片分析类工具的行业惯例。ImgX 不会利用此权限读取页面文本内容、表单、或发送任何未经用户操作的数据。
8. 数据导出与删除
8.1 本地数据
| 操作 | 位置 | 效果 |
|---|---|---|
| 导出历史 | 队列面板 -> 导出按钮 | 下载 JSON 文件(所有分析记录) |
| 导入历史 | 队列面板 -> 导入按钮 | 合并 JSON 文件中的记录到本地 |
| 清空历史 | 队列面板 -> 清空按钮 | 删除全部历史记录 + URL 索引 |
| 清除队列 | 队列面板 -> 清除按钮 | 删除全部已完成/失败的队列项 |
| 登出 Cloud | 设置面板 -> 退出登录 | 清除本地 Cloud 登录会话(不影响服务端额度账本) |
| 卸载扩展 | Chrome -> 扩展管理 -> 移除 | 浏览器自动清理全部 chrome.storage.local 数据 |
8.2 Cloud 服务端数据
登出 Cloud 只清除本地会话,不会删除 Supabase 上的额度账户与历史请求记录。如需彻底删除 Cloud 服务端数据(注销账户):
1. 发送邮件至 [email protected],注明需要注销的登录邮箱(请勿在公开渠道如 GitHub Issue 提交邮箱,以免泄露你的地址) 2. 管理员收到申请后,使用一键清理脚本删除该邮箱的全部数据: - imgx_credit_accounts、imgx_analysis_requests、imgx_credit_ledger 中的所有记录 - Supabase Auth 中的用户账户 3. 处理完成后该邮箱可重新注册(会再次获得首次登录赠送额度)
未来版本计划在扩展内提供「注销账户」自助按钮,MVP 阶段暂由管理员手动执行。
9. 变更
本隐私政策会随 ImgX 功能更新而修订。重大变更将在扩展内通知(如更新日志或弹窗提示)。
- - 2026-07-27:注销渠道改为私有邮箱([email protected]),不再要求在公开 GitHub Issue 提交登录邮箱;分析历史与队列存储订正为统一上限 50 条。
- - 2026-07-26:新增 Cloud 模式(免费额度)相关数据处理披露,包括登录邮箱、额度账本、分析请求记录(元数据 90 天自动清理)、24 小时结果缓存、Worker 代理转发、验证码邮件;注销账户由管理员手动执行(脚本),未来版本提供自助注销。
- - 2026-07-04:初始版本(纯 BYOK 本地架构)。
10. 联系方式
如对隐私政策有疑问,或需注销 Cloud 账户,请发邮件至 [email protected]:
- - 注销账户:邮件注明需要注销的登录邮箱(请勿在公开 GitHub Issue 提交邮箱,以免泄露地址)
- - 一般问题 / 反馈:https://github.com/pamler1004/imgx/issues(请不要在 Issue 描述里包含个人邮箱等敏感信息)