← 返回 Skills 市场
audiojak

Draft Machine

作者 John Kennedy · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ 安全检测通过
134
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install draft-machine
功能描述
Use this skill whenever the user wants to send a batch of personalized emails, do a mail merge, or draft outreach emails for multiple recipients using Gmail....
使用说明 (SKILL.md)

DraftMachine — Gmail Mail Merge via CLI

DraftMachine creates Gmail drafts from a CSV list + Markdown template. Drafts land in the user's Gmail Drafts folder for review before sending — nothing gets sent automatically.

Step 1 — Check installation

draftmachine --version

If the command is not found, install it:

pip install draftmachine

Step 2 — Check Gmail credentials

Two files must exist:

File Purpose
~/.draftmachine/client_secret.json OAuth app credential downloaded from Google Cloud Console
~/.draftmachine/creds.json Cached OAuth token (created automatically by draftmachine setup)

Check for them:

ls ~/.draftmachine/

If client_secret.json is missing — walk the user through GCP setup

Tell the user they need to do a one-time setup to connect DraftMachine to their Gmail:

  1. Go to Google Cloud Console and create a project (or pick an existing one).
  2. Navigate to APIs & Services → Enable APIs & Services and enable the Gmail API.
  3. Go to APIs & Services → Credentials → Create Credentials → OAuth client ID.
  4. Choose Desktop app as the application type.
  5. Click Download JSON and save the file to ~/.draftmachine/client_secret.json.
    • You may need to mkdir ~/.draftmachine first.
  6. Run draftmachine setup — this opens a browser window, asks for Gmail permission (draft-only scope), and saves the token.

If client_secret.json exists but creds.json is missing

Run draftmachine setup to complete the OAuth consent flow.

If both files exist

Credentials are ready — skip to Step 3.

Step 3 — Gather the recipient list and compose the template

CSV file

The CSV needs at minimum an email column (default column name: email). Any other columns become available as template variables. Ask the user what data they have. If they paste data in the conversation, write it to a .csv file.

Example:

email,first_name,company
[email protected],Jane,Acme Corp
[email protected],Bob,

Markdown template

The template is a .md file with a YAML frontmatter block for the subject line and a Markdown body using Jinja2 syntax. Ask the user what the email should say, then write the template.

---
subject: "Quick note for {{ first_name }}"
---
Hi {{ first_name }},

{% if company %}
I came across {{ company }} and thought you might find this useful.
{% endif %}

[Body of the message here]

Best,
[Sender name]

Tips for good templates:

  • Use {{ variable }} to insert CSV column values.
  • Wrap optional content in {% if variable %}...{% endif %} so missing values don't cause awkward blanks.
  • The subject line supports Jinja2 too.
  • Filters like {{ first_name | title }} and loops are supported.

Step 4 — Preview before creating drafts

Always run --preview first. It renders the first row only to the terminal — no API calls, no drafts created. This is a fast sanity check for template errors and formatting.

draftmachine send list.csv template.md --preview

If the rendered output looks right, proceed. If there are errors (undefined variables, broken conditionals, etc.), fix the template and re-preview.

Step 5 — Create the drafts

Once the preview looks good:

draftmachine send list.csv template.md

If the email address is in a column other than email, use --to-column:

draftmachine send list.csv template.md --to-column work_email

DraftMachine uses a two-pass strategy: it renders all rows first (aborting early if any row has template errors), then creates all drafts via the Gmail API. This means it's all-or-nothing per run — no partial draft batches on template errors.

Step 6 — Report back

After the command completes, tell the user:

  • How many drafts were created.
  • That the drafts are in their Gmail Drafts folder, ready to review and send.
  • A reminder to check for any rows that were skipped (DraftMachine warns about empty/missing to addresses in the terminal output).

Error reference

Error Fix
command not found: draftmachine pip install draftmachine
No such file: client_secret.json Complete GCP + OAuth setup (Step 2)
403 Forbidden OAuth token lacks correct scope — re-run draftmachine setup
429 Too Many Requests Gmail API rate limit hit; DraftMachine retries 3× with backoff. If it persists, wait and re-run
UndefinedError: '...' is undefined CSV column name in template doesn't match actual column header
Partial drafts on 429 No resume; re-run the full command after a short wait (may create duplicates — delete extra drafts)
安全使用建议
This skill appears to do what it says (create Gmail drafts from a CSV + template), but before installing/using it you should: 1) Verify the 'draftmachine' pip package and source repository (check PyPI owner and the GitHub repo referenced in README) to ensure you're installing the expected code. 2) Use your own Google Cloud project and create the OAuth client (desktop app) so you control the client_secret.json; confirm the OAuth scopes requested are draft-only. 3) Be careful pasting sensitive data into chat — the skill instructs the agent to write CSV/template files to disk (~/.draftmachine and working dir). 4) Always run the suggested --preview first to validate rendering before creating drafts. 5) Optionally test with a throwaway Gmail account to confirm behavior before running on real recipients. 6) Note the registry metadata omission: the SKILL.md expects ~/.draftmachine/client_secret.json and creds.json even though the skill metadata lists no required config paths; treat that as a documentation inconsistency and verify those files are stored where you expect.
功能分析
Type: OpenClaw Skill Name: draft-machine Version: 1.0.0 The DraftMachine skill is a legitimate utility designed to facilitate Gmail mail merges by guiding an AI agent through the installation and use of the 'draftmachine' CLI tool. It follows security best practices by requiring users to provide their own Google Cloud credentials and emphasizes a 'preview' step before creating drafts. No evidence of data exfiltration, malicious execution, or prompt injection was found in SKILL.md or README.md.
能力评估
Purpose & Capability
Name/description match the instructions: the skill guides the agent to use the DraftMachine CLI to create Gmail drafts from a CSV and Jinja2/Markdown template. However, the registry metadata lists no required config paths or credentials while the SKILL.md explicitly requires two files in ~/.draftmachine (client_secret.json and creds.json). That mismatch is a documentation/metadata inconsistency (not evidence of malicious intent) and should be noted before install.
Instruction Scope
The SKILL.md stays narrowly focused on preparing CSVs, writing a Jinja2 Markdown template, running a local 'draftmachine' CLI (preview then send), and performing the OAuth setup. It does instruct the agent to write pasted user data to disk (CSV/template), which is within scope for a CLI-oriented mail-merge but is a privacy consideration: user data will be persisted locally.
Install Mechanism
This is an instruction-only skill (no install spec or code). It tells users to install the external package via 'pip install draftmachine' if needed. That is a normal, reasonable mechanism, but because it pulls code from PyPI, users should verify the package and source (PyPI package owner and upstream GitHub) before installing.
Credentials
No environment variables or credentials are declared in the registry metadata, but the runtime instructions require a Google OAuth client_secret.json and a cached creds.json under ~/.draftmachine. Those files and the OAuth flow are proportionate to the stated Gmail-drafts purpose, but the metadata omission is an inconsistency worth noting.
Persistence & Privilege
The skill does not request always:true and does not attempt to modify other skills or system-wide settings. It requires creating/reading files under ~/.draftmachine and will create Gmail drafts via the user's OAuth token — appropriate for the stated functionality.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install draft-machine
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /draft-machine 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
- Initial release of DraftMachine skill for Gmail mail merge through the CLI. - Guides users to create Gmail drafts (not send them) using a CSV of recipients and a Markdown/Jinja2 template. - Step-by-step setup instructions for installation, Gmail OAuth credential setup, and error troubleshooting. - Details CSV and template requirements, including variable and conditional logic usage. - Emphasizes previewing before draft creation and explains the all-or-nothing batch strategy. - Error explanations and user reporting included for a smooth drafting workflow.
元数据
Slug draft-machine
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Draft Machine 是什么?

Use this skill whenever the user wants to send a batch of personalized emails, do a mail merge, or draft outreach emails for multiple recipients using Gmail.... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 134 次。

如何安装 Draft Machine?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install draft-machine」即可一键安装,无需额外配置。

Draft Machine 是免费的吗?

是的,Draft Machine 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Draft Machine 支持哪些平台?

Draft Machine 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Draft Machine?

由 John Kennedy(@audiojak)开发并维护,当前版本 v1.0.0。

💬 留言讨论