Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
* text=auto eol=lf
*.jpg binary
*.png binary
*.zip binary
41 changes: 41 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: Bug 报告
description: 报告 CSV、页面兼容或任务控制问题
title: "[Bug] "
labels: [bug]
body:
- type: markdown
attributes:
value: |
请先删除账号、Cookie、合同、未公开原图和其他敏感信息。不要上传完整真实 CSV。
- type: input
id: version
attributes:
label: 扩展版本
placeholder: 例如 1.1.0
validations:
required: true
- type: input
id: browser
attributes:
label: 浏览器与版本
placeholder: 例如 Chrome 140
validations:
required: true
- type: textarea
id: steps
attributes:
label: 复现步骤
description: 请使用脱敏数据描述从哪里开始、看到什么结果。
validations:
required: true
- type: textarea
id: expected
attributes:
label: 预期结果
validations:
required: true
- type: textarea
id: logs
attributes:
label: 脱敏后的错误或页面信息
render: text
25 changes: 25 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: 功能建议
description: 建议一个符合本地、可审计边界的改进
title: "[Feature] "
labels: [enhancement]
body:
- type: textarea
id: problem
attributes:
label: 需要解决的问题
description: 请描述实际工作流和重复成本,不要只描述按钮或界面。
validations:
required: true
- type: textarea
id: outcome
attributes:
label: 期望结果
validations:
required: true
- type: checkboxes
id: boundaries
attributes:
label: 项目边界
options:
- label: 该建议不要求抓取平台数据、绕过访问控制或自动最终提交
required: true
15 changes: 15 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## 改动

请说明修改了什么,以及用户能看到的影响。

## 原因

请说明根因、兼容性依据或实际工作流问题。

## 验证

- [ ] `npm run check`
- [ ] 没有新增未说明的 Chrome 权限
- [ ] 没有新增遥测或隐藏网络请求
- [ ] 测试数据已经脱敏
- [ ] 页面结构变化附带了脱敏证据或模拟测试
29 changes: 29 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: CI

on:
push:
branches: [main]
pull_request:

permissions:
contents: read

jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 22
- name: Verify source and build package
run: npm run check
- name: Upload extension package
uses: actions/upload-artifact@v4
with:
name: VCGVisionHelper
path: |
dist/*.zip
dist/*.sha256
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
dist/
node_modules/
*.log
.DS_Store
Thumbs.db
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# 更新记录

## 1.1.0 - 2026-08-03

- 将真实扩展源码纳入 Git 仓库,移除不可维护的混淆发布方式
- 恢复并测试 CSV 解析,支持 UTF-8、BOM、GB18030/GBK
- 增加完整表头、逐行字段、重复文件名和关键词数量校验
- 增加导入预览、清晰错误状态和无障碍界面
- 使用单任务状态机重写暂停、继续和立即停止
- 增加 DOM 等待、可见元素筛选、写入验证和逐条错误隔离
- 增加处理报告导出,并防止表格公式注入
- 增加隐私、安全、贡献和使用文档
- 增加零依赖测试、静态检查、确定性 ZIP 构建和 GitHub Actions

## 1.0.1 - 2026-04-16

- 首次公开 Release
24 changes: 24 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# 参与贡献

欢迎提交问题、兼容性修复、测试和文档改进。

## 报告问题

请尽量提供浏览器版本、扩展版本、失败步骤、脱敏后的页面结构或截图、最小化 CSV 示例和控制台错误文本。

不要提交账号、Cookie、合同、未公开原图、真实收款信息或其他敏感数据。

## 开发流程

1. Fork 仓库并创建分支。
2. 修改代码和对应测试。
3. 运行 `npm run check`。
4. 提交 Pull Request,说明用户影响、测试结果和 VCG 页面兼容性。

## 设计约束

- 保持纯本地运行,不引入遥测或隐藏网络请求。
- 不增加绕过登录、验证码、访问控制或平台限制的能力。
- 不自动执行最终提交。
- DOM 选择器变化需要附带脱敏证据或模拟页面测试。
- 新权限必须在 Pull Request 中解释必要性。
34 changes: 34 additions & 0 deletions PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 隐私说明

VCG 上传助手采用纯本地架构。

## 扩展处理的数据

- 用户主动选择的 CSV 文件
- CSV 中的文件名、标题和关键词
- 当前 VCG 页面上用于匹配图片和填写表单的 DOM 元素
- 本次任务的成功、失败和跳过结果

## 数据如何使用

CSV 在扩展弹窗的内存中解析,校验通过的数据通过 Chrome 扩展消息发送到当前活动的 VCG 页面。任务报告仅在当前页面内存中保存,除非用户主动点击“导出处理报告”。

## 不会发生的行为

- 不上传 CSV、标题、关键词或页面内容
- 不采集账号、密码、Cookie 或身份信息
- 不使用分析、遥测、广告或指纹识别
- 不访问第三方接口
- 不自动点击最终提交

## 本地图片

项目中的微信和支付宝二维码是随扩展打包的静态图片。打开赞助区域不会产生网络请求。

## 数据保留

扩展不使用本地数据库或云端存储。关闭或刷新相关页面后,任务状态和内存数据会消失。用户主动导出的 CSV 报告由用户自行保管。

## 联系方式

隐私问题可发送至 `1207048080@qq.com`。
93 changes: 91 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,91 @@
# VCGVisionHelper
这个插件作者是一个刚刚经历人生毁灭打击的大学生,通过整理照片用过去和回忆疗伤,在过程中发现上传过程太过繁琐于是……欢迎使用创作助手!本工具将完全释放您的双手,自动实现关键词和标题的填充 !仅供学习交流使用!!
# VCG 上传助手

一个面向视觉中国供稿人的本地 Chrome 扩展。它读取 CSV 文件,按图片文件名匹配草稿,并辅助填写标题和关键词。

项目坚持三个原则:数据只在本地处理、用户保留最终确认权、代码保持可审计。

## 功能

- 支持 UTF-8、UTF-8 BOM、GB18030/GBK CSV
- 支持引号内逗号、换行和双引号
- 导入前检查表头、空字段、重复文件名和关键词数量
- 按 `title="文件名"` 精确匹配图片,不拼接不安全的 CSS 选择器
- 兼容 React/Vue 受控输入框
- 提供暂停、继续、立即停止、进度和逐条结果
- 处理完成后可导出 CSV 报告
- 不读取账号密码,不上传 CSV,不请求任何外部接口
- 不自动点击最终提交,结果由用户检查后提交

## 安装

### 从 Release 安装

1. 打开仓库的 [Releases](https://github.com/KanadeK/VCGVisionHelper/releases)。
2. 下载 `VCGVisionHelper-v1.1.0.zip`,不要下载 GitHub 自动生成的 Source code 压缩包。
3. 解压到固定目录。
4. 打开 `chrome://extensions/`。
5. 开启开发者模式,点击“加载已解压的扩展程序”,选择解压目录。

Chrome 和基于 Chromium 的新版 Edge 均可使用。

## CSV 格式

表头必须包含以下三列:

```csv
file_name,title,keywords
IMG_0001.jpg,清晨湖面上的薄雾,"湖泊,薄雾,清晨,自然,风景"
```

- `file_name`:包含后缀,并与网页显示的文件名完全一致。
- `title`:单行标题。
- `keywords`:5-35 个关键词,使用英文逗号分隔。

示例文件见 [`docs/sample.csv`](docs/sample.csv)。

## 使用

1. 登录视觉中国供稿人后台,进入待编辑草稿页面并刷新。
2. 点击扩展图标,选择 CSV 文件。
3. 检查导入预览与校验结果。
4. 点击“开始填写”。
5. 通过网页右上角控制台暂停、继续或停止。
6. 完成后检查标题、关键词与处理报告,再由你手动提交。

完整说明见 [`docs/USAGE.md`](docs/USAGE.md)。

## 隐私与安全

扩展不包含统计、遥测、广告、卡密验证或网络请求。CSV 只在当前浏览器内存中解析,并发送给当前活动的 VCG 页面。详见 [`PRIVACY.md`](PRIVACY.md)。

本工具用于减少重复录入,不用于抓取平台数据、绕过访问控制或替代人工审核。使用前请确认你的供稿协议和平台规则允许相应辅助操作。

## 本地开发

需要 Node.js 20 或更高版本,不需要安装第三方依赖。

```bash
npm test
npm run lint
npm run build
npm run check
```

`npm run build` 会生成:

- `dist/VCGVisionHelper-v1.1.0.zip`
- `dist/VCGVisionHelper-v1.1.0.zip.sha256`

构建脚本使用固定 ZIP 元数据,同一源码会产生相同字节和 SHA-256。

## 参与贡献

问题报告和改进建议请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md)。安全问题请按 [`SECURITY.md`](SECURITY.md) 中的方式反馈。

## 赞助与反馈

扩展内保留微信和支付宝赞助二维码。反馈邮箱:`1207048080@qq.com`。

## 许可证

[MIT](LICENSE)
19 changes: 19 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# VCG 上传助手 v1.1.0

这是第一个源码、测试和安装包保持一致的正式开源版本。

## 主要改进

- 修复公开版缺失 CSV 解析函数导致无法启动的问题
- 支持 UTF-8、UTF-8 BOM、GB18030/GBK CSV
- 导入前完整检查三列数据、重复文件名和 5-35 个关键词限制
- 新增导入预览、暂停、继续、立即停止和 CSV 处理报告
- 重写 DOM 匹配与等待逻辑,减少误填和固定延迟导致的失败
- 保持纯本地、无遥测、无网络请求、不自动提交
- 新增自动测试、CI、确定性 ZIP 和 SHA-256 校验文件

## 安装

下载 `VCGVisionHelper-v1.1.0.zip`,解压后通过 Chrome 的“加载已解压的扩展程序”安装。不要下载 GitHub 自动生成的 Source code 压缩包。

首次正式使用前,请用 2-3 张图片验证当前 VCG 页面结构,并在处理后人工检查再提交。
15 changes: 15 additions & 0 deletions SECURITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# 安全策略

## 支持版本

安全修复仅面向最新 Release。

## 报告安全问题

请不要公开披露包含账号数据或可利用细节的 Issue。发送邮件至 `1207048080@qq.com`,主题注明“VCG 上传助手安全问题”。

请包含扩展版本、浏览器版本、复现步骤和影响范围。不要发送真实密码、Cookie 或完整个人数据。

## 安全边界

扩展只在用户主动选择 CSV 并点击开始后运行。它不提供远程控制、账号接管、验证码绕过、平台数据抓取或最终提交功能。
Binary file added assets/alipay.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/wechat.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading