AI PLAY玩法更新持续收录
← 回到更新流

2026-09-11 · 原文发布日

生词本自动建档,每天邮件推送一词复习

适合语言学习者的个人词汇系统:通过n8n表单提交想学的单词、短语或语法点,Gemini按你的目标语种和水平返回结构化学习卡,包含词形、读音、释义、例句和语法备注,追加进Google Sheets;另有每日定时任务从同一张表挑出还没推送过的条目,用Gmail发一封HTML每日一词邮件,并回写发送日期避免重复。配置只需建对应列的表格和两份OAuth凭证。

原文要点

来源是n8n免费模板,面向语言学习者:n8n表单接收单词、短语、句子或语法点;发给Google Gemini并带上目标语种和水平,要求返回结构化JSON学习卡;解析出term、reading、meaning、example、grammar_note等字段并附加date_added,追加到Google Sheets词汇表;另一条每日定时流程读同一张表,按last_sent是否为空挑出没推送过的条目,用Gmail发HTML“每日一词”邮件,再把该行last_sent回写为当天日期避免重复。配置需Google Gemini凭据、Google Sheets与Gmail两份OAuth、建对应列表格并在捕获与摘要两处填同一Spreadsheet ID和Sheet Name。

这次做成什么

在本机n8n搭一套个人生词本:表单录入→Gemini生成学习卡→写入Google Sheets;每天定时从表里挑一条未推送的,用Gmail发HTML复习邮件并回写发送日期。原模板未提供可下载工作流文件,本页为本站按其说明独立设计的等效练习,节点细节以你导入的模板为准。

准备什么

  • 可用的n8n实例,能启用Form Trigger和Schedule Trigger
  • Google AI(Gemini)API凭据,且账号里有所选Gemini模型可用
  • Google账号,用于创建Google Sheets OAuth与Gmail OAuth两份凭据
  • 一个新建Google表格,sheet含term、reading、meaning、example、grammar_note、date_added、last_sent七列
  • 一个接收每日邮件的邮箱地址

具体怎么做

  1. 建词汇表

    在Google Sheets新建表格,第一个sheet命名为vocab(名字可自定,但必须与下面捕获和摘要两处节点配置使用同一个名字),第一行依次填入表头:term、reading、meaning、example、grammar_note、date_added、last_sent。复制浏览器地址里的Spreadsheet ID备用。

  2. 表单录入生词

    加Form Trigger节点,表单放两个字段:entry(想学的词/短语/语法点,文本框)和note(可选备注)。启用后复制生成的表单URL,这就是你的录入入口,可加到手机主屏。

  3. Gemini生成学习卡

    接Google Gemini节点,提示词里注入表单提交的entry、目标语种(如日语)和你的水平(如N4),要求只输出JSON。提示词全文见下方artifact。后接Code节点JSON.parse,校验五个字段齐全,缺失就走错误分支。

  4. 追加进表格

    用Google Sheets节点的Append操作,选上面建的Spreadsheet ID和vocab表,把term、reading、meaning、example、grammar_note映射到对应列,date_added填当前日期表达式,last_sent留空。提交一条测试词确认新行出现。

  5. 每日挑选未推送条目

    新建第二个工作流,Schedule Trigger设为每天早上(具体时间自定)。用Google Sheets读取vocab全部行,Code节点筛出last_sent为空的行,若有则取最早date_added的一条;全空则流程结束不发信。

  6. 发HTML邮件并回写日期

    Gmail节点发给预设收件人,Subject写“每日一词:{{term}}”,Body用HTML模板(见artifact)展示词条。发送成功后用Google Sheets的Update操作,按行号把该行的last_sent更新为当天日期。手动执行一次确认邮件收到且last_sent已填。

可直接复制的材料

Gemini学习卡提示词(粘贴进Gemini节点)

本站独立编写的提示词,非原模板原文。语种和水平按你的实际情况改;双花括号为n8n表达式,指向表单字段。

你是我的语言学习助教。我的目标语种是日语,当前水平N4。请为下面这个条目生成一张学习卡,并【只输出一个JSON对象】,不要输出其他文字。字段:
- term:词条的标准写法
- reading:读音(假名或罗马音)
- meaning:中文释义,不超过40字
- example:一个N4水平的日文例句
- grammar_note:中文语法备注,不超过60字,说明用法或常见搭配

条目:{{ $json.entry }}

每日一词HTML邮件模板

本站独立编写的示例模板。双花括号字段在n8n里替换为表达式引用;样式可按喜好调整。

<div style="font-family:sans-serif;max-width:480px;margin:auto;padding:24px;border:1px solid #e0e0e0;border-radius:12px">
  <h2 style="margin:0 0 8px">{{ term }}</h2>
  <p style="color:#666;margin:0 0 16px">{{ reading }}</p>
  <p><b>释义:</b>{{ meaning }}</p>
  <p><b>例句:</b>{{ example }}</p>
  <p><b>语法:</b>{{ grammar_note }}</p>
  <p style="color:#999;font-size:12px">录入日期:{{ date_added }}</p>
</div>

测试用合成行数据

本站虚构的练习数据,未运行。把两行手动填进表格可立即测试每日挑选逻辑:应先发“取り消す”(date_added更早)。

[
  {"term": "取り消す", "reading": "とりけす", "meaning": "取消、撤销(订单、预约等)", "example": "予約を取り消したいのですが。", "grammar_note": "他动词,常用「予約/注文を取り消す」搭配", "date_added": "2026-09-10", "last_sent": ""},
  {"term": "間に合う", "reading": "まにあう", "meaning": "来得及、赶得上", "example": "電車に間に合いました。", "grammar_note": "自动词,前面用助词に表示对象", "date_added": "2026-09-11", "last_sent": ""}
]

输入与输出示例

本站虚构演示,非原作者结果,Gemini实际输出会不同,未在本站实测。

输入

表单提交entry=「取り消す」,目标语种日语、水平N4;表中已有上方两条last_sent为空的行。

对应输出

Gemini返回{"term":"取り消す","reading":"とりけす","meaning":"取消、撤销(订单、预约等)","example":"予約を取り消したいのですが。","grammar_note":"他动词,常用「予約/注文を取り消す」搭配"}并追加为新行;次日定时任务选中date_added最早的“取り消す”,发出Subject为“每日一词:取り消す”的HTML邮件,随后该行last_sent写入当天日期,再跑每日任务时会跳过它改发“間に合う”。

做完检查这些

  • 提交表单后表格新增一行,五列字段齐全且date_added为当天、last_sent为空
  • 每日流程只挑last_sent为空的行,且优先取date_added最早的一条
  • 邮件发送成功后该行last_sent被回写为当天日期,再次执行不会重复发同一条
  • 捕获与摘要两处配置使用同一个Spreadsheet ID和Sheet Name,否则写读不一致

容易卡住的地方

  • last_sent回写失败会导致第二天重复推送同一词,务必确认Update按正确行号执行
  • Gemini可能在JSON外包一层说明文字,解析节点需做容错或在提示词中强调只输出JSON
  • 两处Spreadsheet ID/Sheet Name填成不同的表是最常见的配置错误
  • 原模板要求账号中所选Gemini模型可用,模型不可用时节点直接报错
  • 全部条目都推送过之后每日流程应安静结束,不要让它报错或发空邮件

原文与作者资料 ↗

本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。

原文标题
Log vocabulary and email a daily word of the day with Gemini, Google Sheets and Gmail
原作者
Vardaan Gupta
原始发布日期
2026-09-11T08:54:59.491Z
来源
https://n8n.io/workflows/19481