在 Claude 网页版里建一个“商务英语”项目:上传单词表作为项目知识,写好项目指令,然后让 Claude 做一个可交互的单词卡 Artifact(莱特纳盒子复习法:答对的隔几天再复习,答错的明天再来),最后分享链接给同学。附一份可以自己托管的 HTML 版本。
先看清成品
成品是一个可分享的单词卡 Artifact。本文附带的自托管版本已在本机实际验证:复习算法 2 个测试全部通过(升盒、回到第 1 盒、跨月日期计算);用无界面 Chrome 打开
flashcards.html,页面显示“今天待复习 6 张 · 共 6 张”,第一张为 itinerary。本文环境没有 Claude 账号,在 Claude 网页版中的操作没有实际执行,Claude 生成的 Artifact 每次也会不同。
注意:Claude 只在 Anthropic 官方“支持的国家和地区”列表中提供,请在支持地区合规使用,不要用代理或他人账号绕过限制,也不要共享账号。遵守 Anthropic 的使用政策。价格和用量以官方价格页为准。
做完之后你会得到什么?
| 成果 | 说明 |
|---|---|
| Claude 项目 | 项目知识(单词表)+ 项目指令 |
| 单词卡 Artifact | 翻卡、记住/没记住、到期复习 |
| 分享链接 | 别人不用注册也能打开(按你的计划显示的分享选项) |
| 自托管版 | flashcards.html,可放到任意静态网站 |
需要准备哪些环境?
| 项目 | 要求 | 说明 |
|---|---|---|
| Claude 账号 | 免费计划即可 | 官方帮助中心:免费用户最多 5 个项目 |
| 功能开关 | Settings → Capabilities 开启代码执行和文件创建 | 帮助中心说明 Artifact 需要这个开关 |
| 单词表 | words.csv |
本文提供样例 |
第一步:怎样建项目?
- 打开 claude.ai/projects,点 + New Project,名称“商务英语”。
- 在项目知识里上传
words.csv:
word,meaning,example
itinerary,行程安排,Our itinerary includes three days in Kyoto.
reimburse,报销;偿还,The company will reimburse your travel expenses.
deadline,截止日期,The deadline for the report is Friday.
negotiate,谈判;协商,We need to negotiate a better price.
colleague,同事,My colleague helped me finish the slides.
postpone,推迟,The meeting was postponed until next week.
- 在项目指令里填写:
我在备考商务英语。所有回答用中文解释,英文例句保持原文。
出题和做工具时只使用项目知识中的单词,不要自己添加新词。
注意:官方帮助中心说明,项目分享和协作只在 Team、Enterprise 计划提供。个人用户分享的是下面生成的 Artifact,而不是整个项目。
第二步:怎样让 Claude 做单词卡?
在项目里新建对话,粘贴:
用项目知识里的 words.csv 做一个单词卡 Artifact(单个 HTML 页面):
1. 显示英文单词,点击卡片翻面显示中文和例句
2. 翻面后出现“没记住”“记住了”两个按钮
3. 使用莱特纳盒子复习法:共 5 个盒子,答对升一盒,答错回第 1 盒;
第 1~5 盒的复习间隔分别是 1、2、4、7、15 天
4. 顶部显示“今天待复习 N 张 · 共 M 张”,复习完显示完成提示
5. 记住复习进度,下次打开能接着复习
6. 界面简洁,手机上也好用
Artifact 会在对话旁边打开。逐项测试,不满意就继续说,例如“按钮放大一点”“答错的卡片本轮结束前再出现一次”。
进度保存
不同环境下保存数据的方式不同。帮助中心列出“在 Artifact 中存储数据”的功能,如果刷新后进度丢失,直接告诉 Claude:“刷新后进度丢了,请改用 Artifact 支持的存储方式保存进度”。
第三步:怎样分享?
打开 Artifact,点 Share,复制链接发给同学。旧版在对话中生成的 Artifact 显示的是 Publish 按钮,发布后任何拿到链接的人都能打开使用,不需要 Claude 账号。
注意:帮助中心说明,取消发布(Unpublish)后不能再次发布同一个 Artifact,而且会永久删除它保存的数据。
第四步:自托管版本(可选)
不想依赖 Claude,也可以用本文的参考实现。核心算法:
// 莱特纳盒子复习法:答对升一盒、答错回第 1 盒;盒子越高,复习间隔越长
export const INTERVAL_DAYS = [0, 1, 2, 4, 7, 15]; // 第 1~5 盒对应的间隔(下标 1~5)
export function review(card, correct, today) {
const box = correct ? Math.min(card.box + 1, 5) : 1;
return { ...card, box, due: addDays(today, INTERVAL_DAYS[box]) };
}
export function dueCards(cards, today) {
return cards.filter((c) => c.due <= today).sort((a, b) => a.box - b.box);
}
export function addDays(iso, n) {
const d = new Date(iso + 'T00:00:00Z');
d.setUTCDate(d.getUTCDate() + n);
return d.toISOString().slice(0, 10);
}
测试:
import test from 'node:test';
import assert from 'node:assert/strict';
import { review, dueCards, addDays } from './leitner.js';
test('答对升盒并推迟,答错回第 1 盒', () => {
const c = { word: 'deadline', box: 1, due: '2026-10-21' };
const a = review(c, true, '2026-10-21');
assert.deepEqual([a.box, a.due], [2, '2026-10-23']);
const b = review({ ...a, box: 5 }, true, '2026-10-21');
assert.equal(b.box, 5);
assert.deepEqual([review(a, false, '2026-10-23').box, review(a, false, '2026-10-23').due], [1, '2026-10-24']);
});
test('只取到期卡片,低盒优先;跨月日期正确', () => {
const cards = [{ w: 'a', box: 3, due: '2026-10-20' }, { w: 'b', box: 1, due: '2026-10-21' }, { w: 'c', box: 1, due: '2026-10-22' }];
assert.deepEqual(dueCards(cards, '2026-10-21').map((c) => c.w), ['b', 'a']);
assert.equal(addDays('2026-10-30', 7), '2026-11-06');
});
node --test
本文实际输出 # pass 2、# fail 0。
flashcards.html 把算法和单词表打包成一个文件,进度存在浏览器的 localStorage,在本文 -src 文件夹里。双击打开即可,也可以部署到任意静态网站托管服务。
出问题时该怎么调?
1. 没有生成 Artifact,只给了代码
确认 Settings → Capabilities 已开启代码执行和文件创建,然后在提示词里明确写“做一个 Artifact”。
2. 用了单词表以外的词
在项目指令里强调“只使用项目知识中的单词”,并指出它多加了哪些词。
3. 复习间隔不对
让它把算法单独写成函数并举例说明:“第 2 盒答对后,几天后再出现?”对照本文的测试用例检查。
常见问题怎么处理?
| 现象 | 原因 | 解决方法 |
|---|---|---|
| 不能再建项目 | 免费版最多 5 个 | 删除旧项目或升级 |
| 同学打不开链接 | 没有分享或已取消发布 | 重新分享(取消发布的需要新建) |
| 想加新单词 | 项目知识里没有 | 更新 words.csv 后让 Claude 重新生成 |
| 中文例句乱码 | CSV 编码不是 UTF-8 | 另存为 UTF-8 |
| 提示地区不支持 | 不在支持地区 | 只能在支持地区使用 |
项目资源
建议先用本文的 6 个单词做出第一版,自己连续用三天,确认复习间隔符合预期。
然后换成你自己的完整单词表,再分享给一起备考的同学。