draftmachine

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. DraftMachine is a CLI tool that creates Gmail drafts (not sends them) from a CSV recipient list and a Markdown/Jinja2 template, so the user can review everything in Gmail before sending. Trigger this skill for requests like "send personalized emails to my contacts", "do a mail merge to Gmail", "draft outreach emails", "email everyone on this list", "create Gmail drafts from a spreadsheet", or any time the user wants to compose similar emails to multiple people at once. Also trigger it if the user asks to use draftmachine directly.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "draftmachine" with this command: npx skills add audiojak/draft-machine

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:

FilePurpose
~/.draftmachine/client_secret.jsonOAuth app credential downloaded from Google Cloud Console
~/.draftmachine/creds.jsonCached 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
jane@example.com,Jane,Acme Corp
bob@example.com,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

ErrorFix
command not found: draftmachinepip install draftmachine
No such file: client_secret.jsonComplete GCP + OAuth setup (Step 2)
403 ForbiddenOAuth token lacks correct scope — re-run draftmachine setup
429 Too Many RequestsGmail API rate limit hit; DraftMachine retries 3× with backoff. If it persists, wait and re-run
UndefinedError: '...' is undefinedCSV column name in template doesn't match actual column header
Partial drafts on 429No resume; re-run the full command after a short wait (may create duplicates — delete extra drafts)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Gigo Lobster Resume

🦞 GIGO · gigo-lobster-resume: 续跑入口:v2 stable 当前会清理旧 checkpoint 并从头重跑;保留此 slug 作为旧 checkpoint 兼容入口。 Triggers: 继续试吃 / 恢复评测 / resume tasting / continue lobster...

Registry SourceRecently Updated
General

YiHui CONTEXT MODE

context-mode is an MCP server that saves 98% of your context window by sandboxing tool outputs. It routes large file reads, shell outputs, and web fetches th...

Registry SourceRecently Updated
General

xinyi-drink

Use when users ask about 新一好喝/新一咖啡 drinks, stores, menu, activities, Skill用户大礼包, today drink recommendations, afternoon tea, feeling sleepy, or personalized...

Registry SourceRecently Updated
General

vedic-destiny

吠陀命盘分析中文入口。用于完整命盘研判、命主盘 Rashi chart 与九分盘 Navamsha chart 联读、既往事件回看、出生时间稳定度判断、事业主题、婚姻主题、时空盘专题,以及基于 Jagannatha Hora PDF、星盘截图或文本命盘数据的系统拆盘。当用户提到完整星盘、事业方向、婚姻问题、关系窗...

Registry SourceRecently Updated