二维码工具箱(qr-code-toolbox)
成品文件公式:用户给链接/文本/WiFi 信息 → 拿到一张可直接扫、可直接用的二维码 PNG 文件(不是教程,不是参数建议)。全程本地生成(qrcode + Pillow),无需联网、无需 API Key。
功能
| 子命令 | 用途 | 典型场景 |
|---|---|---|
make |
生成单个二维码 | 把官网/公众号/名片链接做成二维码 |
batch |
批量生成(读 txt/csv 每行一条) | 一批链接/商品各生成一张图标 |
wifi |
生成 WiFi 联网二维码 | 门店/办公室贴墙,客人扫码自动连 WiFi |
通用能力(各子命令均支持):
- 文字标签
--label "扫码关注":二维码下方加一行说明文字(支持中文) - 中心 Logo
--logo logo.png:在二维码中心贴品牌 logo,自动加白底 + 提高纠错级别到 H,保证可扫 - 自定义颜色
--color '#1a73e8':改变二维码前景色(背景固定白色) - 自定义尺寸
--size 400:输出边长像素(默认 400) - 纠错级别
--ec L/M/Q/H:默认 M;内容较密或加了 logo 时建议 H
工作流程
- 确认需求类型:
- 单个链接/文本 →make
- 一批链接(txt 每行一条 / csv 表格)→batch
- WiFi 信息 →wifi - 确定参数:输出路径
-o(必填);是否要文字标签 / logo / 颜色 / 尺寸。 - 执行命令(见下方命令参考)。
- 交付成果:把生成的 PNG 路径告诉用户;尺寸与内容会打印在[完成]行里。
命令参考
脚本路径固定为:
SKILL_DIR="$HOME/.workbuddy/skills/qrcode-toolbox"
[ -f "$SKILL_DIR/scripts/qr_toolbox.py" ] || SKILL_DIR="$PWD/.workbuddy/skills/qrcode-toolbox"
[ -f "$SKILL_DIR/scripts/qr_toolbox.py" ] || SKILL_DIR="/sandbox/workspace/skills/qrcode-toolbox"
S="$SKILL_DIR/scripts/qr_toolbox.py"
make —— 单个二维码
# 最基本:URL 生成 400x400 二维码
python3 $S make --data "https://open.workbuddy.cn" -o /workspace/workspace/qr.png --size 400
# 带下方文字标签
python3 $S make --data "https://open.workbuddy.cn" -o qr.png --label "扫码关注"
# 自定义颜色 + 中心 logo
python3 $S make --data "https://shop.example.com" -o qr.png \
--color "#1a73e8" --logo logo.png --size 600
# 内容很密时降低纠错、放大尺寸
python3 $S make --data "<很长的文本>" -o qr.png --ec L --size 800
参数:--data(必填) -o/--out(必填) --size(默认400) --border(默认4)
--label --color(默认#000000) --logo --ec(默认M)
batch —— 批量生成
# txt:每行一条内容(可选 "名称<TAB>内容",用名称作文件名)
python3 $S batch links.txt -o /workspace/workspace/qrs/ --size 300
# csv:指定名称列与内容列(列名或序号均可)
python3 $S batch list.csv -o qrs/ --name-col name --data-col url
# csv 无表头时用序号
python3 $S batch list.csv -o qrs/ --name-col 0 --data-col 1 --no-header
- 输出目录内每行一个 PNG:有名称则用名称命名,否则
item_N.png - txt 支持同一行用
<TAB>分隔"文件名 + 内容" - csv 需
--name-col/--data-col(可用列名或从 0 开始的序号)
wifi —— WiFi 联网二维码
# WPA/WPA2(家用最常见)
python3 $S wifi --ssid "MyHome_5G" --password "Passw0rd!" -o wifi.png
# 开放网络(无密码)
python3 $S wifi --ssid "Guest-WiFi" --security nopass -o wifi_open.png
参数:--ssid(必填) --password --security WPA/WEP/nopass(默认WPA)
另外支持 --label(默认自动显示WiFi: 名称)/ --size / --logo 等。
手机连 WiFi 时扫码即可自动连接。
示例对话
例 1(单个)
> 用户:帮我给官网 https://open.workbuddy.cn 做个二维码
> 助手:python3 $S make --data "https://open.workbuddy.cn" -o /workspace/workspace/ima_qr.png --size 400
> → 交付 ima_qr.png(400x400)
例 2(带文字)
> 用户:做个扫码加群的二维码,下面写上"扫码进群"
> 助手:python3 $S make --data "<群链接>" -o qr.png --label "扫码进群"
例 3(批量)
> 用户:这几条链接都做成二维码发我
> 助手:写入 links.txt(每行一条)→ python3 $S batch links.txt -o qrs/
> → 交付 qrs/ 目录,内含每行一个 PNG
例 4(WiFi)
> 用户:店里 WiFi 是 XXCoffee,密码 coffee2024,做个二维码贴墙上
> 助手:python3 $S wifi --ssid "XXCoffee" --password "coffee2024" -o wifi.png
运行环境
- 脚本:
scripts/qr_toolbox.py(相对技能根目录) - Python:3.9+
- 第三方库:
Pillow(pip install Pillow)、qrcode[pil](pip install qrcode)
开工前先跑一次自检,缺什么当场补,别等跑到一半报错:
python3 -c "import PIL" 2>/dev/null || echo "缺 Pillow,请执行 pip install Pillow"
python3 -c "import qrcode" 2>/dev/null || echo "缺 qrcode[pil],请执行 pip install qrcode"
> 缺依赖时用中文告诉用户缺什么、装完就能用,不要把 Python 的英文 traceback 原样贴给用户。
注意事项
- 依赖已就绪:脚本头部已
sys.path.insert(0,'./.pylibs'),qrcode从此处加载;PIL走系统。 - 温度区(quiet zone):
--border 4是标准最小值,缩小可能导致部分扫码器识别失败,一般不要低于 3。 - 内容过长:超容量时会明确报错并给出建议(缩短内容 / 用短链 /
--ec L/ 增大--size),不会静默失败。二维码容量上限约:数字/字母 L 级 ~2953 字节,中文按 UTF-8 每字 3 字节,实际更少。 - 加 logo 会自动把纠错级别提到 H(除非显式指定
--ec),并在 logo 周围加白底,保证可扫。 - 本工具只生成、不解码:验证可用手机相机/微信扫码;批处理场景建议先生成 1 张扫码确认无误再批量。
- 输出格式为 PNG,背景固定白色;
--color仅改前景色,过浅的颜色会降低识别率。 - 全部本地处理,不联网、不上传任何内容,适合含内部链接/WiFi 密码的场景。