ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

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.

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/audiojak/draft-machine
Or

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
[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

Metadata

Author@audiojak
Stars4473
Views1
Updated2026-05-01
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-audiojak-draft-machine": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.