Draft Machine

v1.0.0

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

0· 129·0 current·0 all-time
byJohn Kennedy@audiojak

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for audiojak/draft-machine.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Draft Machine" (audiojak/draft-machine) from ClawHub.
Skill page: https://clawhub.ai/audiojak/draft-machine
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install draft-machine

ClawHub CLI

Package manager switcher

npx clawhub@latest install draft-machine
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
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.
Assessment
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.

Like a lobster shell, security has layers — review code before you run it.

latestvk972bz6c5k94tzbava395z1gx983n6b7
129downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

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)

Comments

Loading comments...