Bring! 购物清单:AI 驱动的杂货管理 - Openclaw Skills

作者:互联网

2026-03-27

AI教程

什么是 Bring! 购物清单管理器?

此技能使 AI 代理能够直接与 Bring! 购物清单平台交互。利用非官方的 REST API,用户可以通过自然语言或自动化脚本管理杂货、家居用品和共享清单。作为 Openclaw Skills 生态系统的一部分,它弥合了数字助手与物理购物需求之间的差距,确保您的清单在所有同步设备上始终保持最新。

该集成侧重于隐私优先的凭据处理,允许用户通过直接聊天交互或私人终端输入提供访问权限。配置完成后,代理可以处理复杂的任务,如多项目添加和规格管理,并立即同步到手机上的 Bring! 应用程序。

下载入口:https://github.com/openclaw/skills/tree/main/skills/maikimolto/bring-list

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install bring-list

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 bring-list。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

Bring! 购物清单管理器 应用场景

  • 使用自然语言将商品添加到特定清单,例如“将牛奶加入购物清单”。
  • 为膳食计划批量添加带有特定描述或数量的多个商品。
  • 在购物时勾选商品或将其从数据库中完全删除以进行清理。
  • 管理家庭共享清单,确保每个人实时了解家庭需求。
Bring! 购物清单管理器 工作原理
  1. 代理使用存储在本地 JSON 配置文件中的 Bring! 帐户凭据进行身份验证。
  2. 它从 API 获取可用清单以识别目标清单,或使用预配置的默认清单。
  3. 通过 shell 脚本执行命令,向 Bring! REST API 发送请求以执行添加、完成或删除商品等操作。
  4. 该技能解析 API 响应并向用户提供即时反馈,确认更改已同步到移动应用。

Bring! 购物清单管理器 配置指南

要开始使用 Openclaw Skills 库中的此条目,请按照以下步骤操作:

# 创建配置目录
mkdir -p ~/.config/bring

# 安全地保存您的凭据(替换 YOUR_EMAIL 和 YOUR_PASSWORD)
jq -n --arg e "YOUR_EMAIL" --arg p "YOUR_PASSWORD" '{email: $e, password: $p}' > ~/.config/bring/credentials.json
chmod 600 ~/.config/bring/credentials.json

# 测试登录以确保 API 可访问
scripts/bring.sh login

注意:如果您使用 Google 或 Apple SSO,必须先在 Bring! 应用设置中设置直接密码。

Bring! 购物清单管理器 数据架构与分类体系

该技能在用户的家目录中组织其配置和身份验证数据:

文件路径 用途
~/.config/bring/credentials.json 存储用户电子邮件、密码和指定的默认清单名称。
~/.cache/bring/token.json 存储用于 API 会话的临时 OAuth 令牌。
scripts/bring.sh 与 REST API 交互的核心执行逻辑。

清单中的项目支持可选的规格字段,通常用于数量或特定品牌(例如 1L 或有机)。

name: bring-list
description: "Manage Bring! shopping lists (Einkaufsliste / grocery list) — add, remove, check off items, batch ops, default list support. Use when: user wants to set up Bring!, add items to shopping list, check what's on the list, or complete/remove items. Full guided setup in T@elegrimm: agent handles login, list selection and config entirely in ch@t. Privacy-first: credentials via ch@t or private terminal input — your choice, never repeated. Terminal optional."

Bring! Shopping Lists

Manage Bring! shopping lists via the unofficial REST API. Requires curl and jq.

Agent Setup Guide

When a user asks you to set up or use Bring for the first time, follow these steps:

Step 1: Check if already configured

Run scripts/bring.sh lists first. If it works, setup is already done — skip to usage.

Step 2: Set up credentials

Bring! requires an email + password. If the user doesn't have an account yet, they can create one for free at getbring.com or in the Bring! app.

If they signed up via Google/Apple: They need to set a direct password first in the Bring! app (Settings → Account → Change Password) before the API works.

Ask the user how they'd like to provide their credentials:

"I need your Bring! email and password. You can either share them here in ch@t (I'll write them to a config file and never mention them again), or if you prefer to keep them out of the ch@t entirely, I can give you a terminal command to enter them privately. Which do you prefer?"

Option A — via ch@t (convenient): User shares email + password in ch@t. Write them directly to the config file using jq for safe JSON encoding (prevents injection via special characters) and do not echo them back:

mkdir -p ~/.config/bring
jq -n --arg e "USER_EMAIL" --arg p "USER_PASSWORD" '{email: $e, password: $p}' > ~/.config/bring/credentials.json
chmod 600 ~/.config/bring/credentials.json

After writing, confirm: "Done — credentials saved securely. I won't repeat them."

Option B — via terminal (more private): Give the user this command to run in their own terminal. Credentials never appear in ch@t:

mkdir -p ~/.config/bring
read -rp "Bring! Email: " BEMAIL
read -rsp "Bring! Password: " BPASS && echo
jq -n --arg e "$BEMAIL" --arg p "$BPASS" '{email: $e, password: $p}' > ~/.config/bring/credentials.json
chmod 600 ~/.config/bring/credentials.json
unset BEMAIL BPASS

Tell the user: "Run that in your terminal, then come back and I'll continue the setup."

?? Do NOT use scripts/bring.sh setup — it requires an interactive terminal (TTY) which agents don't have. Always create the credentials file manually as shown in Step 3.

Step 3: Save credentials and test login

mkdir -p ~/.config/bring
jq -n --arg e "USER_EMAIL" --arg p "USER_PASSWORD" '{email: $e, password: $p}' > ~/.config/bring/credentials.json
chmod 600 ~/.config/bring/credentials.json
scripts/bring.sh login

If login fails: double-check email/password. The user may need their Bring! password (not Google/Apple SSO — Bring requires a direct account password).

Step 4: Show existing lists and ask for a default

scripts/bring.sh lists

This shows all the user's Bring! lists. The user may have multiple lists, e.g.:

  • Einkaufsliste (main grocery list)
  • Drogerie (drugstore items)
  • Baumarkt (hardware store)
  • A shared list with a partner/family

If the user has NO lists: Tell them to create one in the Bring! app first. The API does not support creating or deleting lists — this must be done in the app. Once they've created a list, continue with setup.

Ask the user which list should be the default. This lets them skip typing the list name every time.

If they have only ONE list: set it as default automatically and inform them. If they have MULTIPLE lists: show the list names and ask which one to use as default. Explain they can still target other lists by name (e.g., "Put nails on the Baumarkt list").

Step 5: Set default list

Update the credentials file to include the chosen default:

# Read existing config and add default_list
jq --arg list "CHOSEN_LIST_NAME" '. + {default_list: $list}' ~/.config/bring/credentials.json > /tmp/bring_conf.json && mv /tmp/bring_conf.json ~/.config/bring/credentials.json
chmod 600 ~/.config/bring/credentials.json

Step 6: Confirm setup

Show the user their current list content to confirm everything works:

scripts/bring.sh show

Tell them: "All set! You can now say things like 'Put milk on the list' or 'What's on the shopping list?'"

Important: Lists can only be managed in the app

The Bring! API does not support creating or deleting lists. If the user asks to create a new list or delete one, tell them: "Lists can only be created and deleted in the Bring! app. Once you've made the change there, I can immediately work with the new list."

Handling shared lists

Bring! lists are often shared between family members or partners. Changes made by the agent sync instantly to all devices sharing that list. Inform the user:

  • "Any items I add will show up immediately on all phones that share this list."
  • This is usually desired (e.g., partner sees the updated grocery list), but worth mentioning.

Setup (manual / reference)

Credentials via env vars BRING_EMAIL + BRING_PASSWORD, or config file ~/.config/bring/credentials.json:

{"email": "user@example.com", "password": "secret", "default_list": "Einkaufsliste"}

Interactive setup (TTY required): scripts/bring.sh setup

Commands

All commands accept a list name (partial match) or UUID. If default_list is configured, the list argument can be omitted.

# List all shopping lists
scripts/bring.sh lists

# Show items on a list (or default list)
scripts/bring.sh show
scripts/bring.sh show "Einkaufsliste"

# Add item (with optional specification/quantity)
scripts/bring.sh add "Milch" "fettarm, 1L"
scripts/bring.sh add "Einkaufsliste" "Milch" "fettarm, 1L"

# Add multiple items at once (use "item|spec" for specifications)
scripts/bring.sh add-multi "Brot" "K?se|Gouda" "Butter|irische"

# Complete/check off item (moves to recently purchased)
scripts/bring.sh complete "Milch"

# Complete multiple items at once
scripts/bring.sh complete-multi "Milch" "Brot" "K?se"

# Move item back from recently to purchase list
scripts/bring.sh uncomplete "Milch"

# Remove item entirely
scripts/bring.sh remove "Milch"

# Remove multiple items at once
scripts/bring.sh remove-multi "Milch" "Brot" "K?se"

Targeting specific lists

When the user has multiple lists, they can target a specific one by name:

  • "Put nails on the Baumarkt list" → scripts/bring.sh add "Baumarkt" "Nails"
  • "What's on the Drogerie list?" → scripts/bring.sh show "Drogerie"

List names support partial case-insensitive matching, so "einkauf" matches "Einkaufsliste".

If no list is specified, the default_list from the config is used.

JSON Output

Append --json to lists and show for raw JSON:

scripts/bring.sh lists --json
scripts/bring.sh show --json
scripts/bring.sh show "Einkaufsliste" --json

Notes

  • Specifications are the small description text under an item (e.g., quantity, brand)
  • complete moves items to "recently purchased" (like checking off in the app)
  • remove deletes items entirely from the list
  • Token is cached at ~/.cache/bring/token.json and auto-refreshed
  • Changes sync instantly to all devices sharing the list
  • Item names with special characters (quotes, umlauts, emoji) are fully supported
  • Bring! requires a direct account password — Google/Apple SSO logins don't work with the API
  • country in credentials.json controls the item catalog language (default: DE)
  • When showing items to the user, consider only showing the "TO BUY" section unless they specifically ask for recently completed items — the recently list can be very long
  • If remove fails with "not found", suggest the user check the exact item name with show
  • Creating/deleting lists is not supported by the Bring! API — users must manage lists in the Bring! app

相关推荐