Communityコーディング&開発github.com

send-job-email

Gmailの下書きから、保存されたテンプレートを使って個別にカスタマイズした職務応募メールを送信します。リンクを壊さずに、ユーザーが「send job emails」や「send my drafts」などと指示した際に動作します。

send-job-email とは?

このスキルは、Gmailの下書きに保存されたテンプレートを使用して、職務応募メールを個別にカスタマイズし送信するためのものです。主にClaude CodeやCursorなどのAIエージェントで使用され、Gmailのブラウザインターフェース上で動作します。このスキルの最大の特徴は、Gmail APIを経由せずにブラウザの作成ウィンドウを直接編集することで、メール内のリンク(ポートフォリオやLinkedInなど)が期限切れのリダイレクトに変換されるのを防ぐ点です。各メールでは、挨拶、会社名、受信者、件名のみを変更し、テンプレートの本文はそのまま保持します。下書きの一覧表示、同一企業への下書きの統合、テンプレートの挿入、パーソナライズ、送信までを自動化し、フリーランス案件の場合は専用の文言に差し替えます。大きなバッチ処理では、ページ内でスクリプトをループ実行し、進捗を定期的に確認しながら安全に動作します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/designwithvishal0/send-job-email/tree/HEAD

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Gmailの下書きから職務応募メールを送信する

ユーザーのGmailアカウント、Chrome上で動作します。

セットアップ(一度だけ記入)

  • テンプレート名: 保存したGmailテンプレートの名前(例:「プロダクトデザイナー職応募」)
  • デフォルト件名: 特定の職種が指定されていない場合に使用する件名
  • 署名: あなたのGmail署名。このスキルでは変更しません。

このファイル内で「テンプレート」と記載されている場合、上記のテンプレートを指します。

唯一重要ルール

すべての操作は、Gmailインターフェース上で、保存されたテンプレートを通じて行われます。Gmail APIで下書き本文を書き換えたり(update_draft)、APIで送信したり、応募メールのHTMLを手動で構築したりしないでください。Gmail APIはすべてのリンクを期限切れになるgoogle.com/urlリダイレクトに書き換えるため、メール内のポートフォリオ、LinkedIn、履歴書のリンクが壊れます。ブラウザ上の開いている作成ウィンドウを編集する(クリック操作、またはその作成ウィンドウ上でのページJavaScript)ことで、リンクはそのまま維持されます。APIでの下書きの読み取り(list_drafts with DRAFT_VIEW_FULL、get_draft)は問題なく、全受信者を確認する最速の方法です。

メールごとに変更されるのは次のみ:挨拶、会社名、受信者、特定の職種が指定された場合の件名、フリーランス用下書きの場合はフリーランス用の文章。

典型的な下書きの例

下書きには通常「Hi」(時には「H」や「hi」)と、その後にGmailの署名だけが含まれています。件名は空欄か、「フリーランスデザイナー」のような短いメモ程度です。この「Hi」行は単なるプレースホルダーです。削除して、署名より上のすべての部分を消し、テンプレートを挿入します。ユーザーが毎回これを言う必要はありません。

ステップ1:下書きを一覧表示

list_drafts(view DRAFT_VIEW_FULL、すべてのページを取得)を使用して、各下書きのTo、CC、件名、署名より上のテキストを取得します。受信者のいない下書き(テンプレート自体のコピーなど)や、明らかに応募でないものはスキップし、最後にその旨を報告します。

下書きは1つずつ処理します。各下書きは、そのアドレスを検索して開きます(https://mail.google.com/mail/u/0/#search/in%3Adraft+to%3A<アドレス>)。リスト内の位置では開かず、開いた作成ウィンドウのToが一致することを確認してから編集します。

ステップ2:同一企業の下書きを統合

アドレスと企業ドメインでグループ化します(サブドメインも対象。例:[email protected] と [email protected])。同じ企業に2通以上の下書きがある場合、1通のメールに統合します。

  1. 名前が特定できる人のアドレスをToに(両方とも名前付き、または両方とも汎用アドレスの場合、先に作成された下書きのアドレス)。
  2. その他のアドレスはCCに。
  3. 挨拶はToの人物に合わせます。
  4. 残った重複は送信しません。Claudeは下書きを削除できないため、最後にユーザーに破棄するようリストアップします(下書きを開き、ゴミ箱アイコンをクリック)。

以前のバッチですでにメールを送信した企業にも、再度送信します(スキップしません)。

ステップ3:名前と会社名

受信者名:

  1. アドレスやメモに人物名がある場合([email protected]、[email protected]、rahul.k@、divya4.sharma@など)、頭文字を大文字にしたファーストネームを使用します:「Dear Priya,」。メモにフルネームが記載されていない限り苗字は使いません。肩書きも使いません。
  2. 汎用アドレス(hr@、careers@、jobs@、talent@、recruitment@、hiring@、hirings@、info@、hello@、people@、ceooffice@)や判読できない文字列の場合は「Dear HR Team,」とします。

会社名:

  1. ドメインまたはユーザーのメモから、実際のブランド名の大文字小文字で表記します:[email protected] は「INDmoney」になります。
  2. 個人メールドメイン(gmail.com、yahoo.com、outlook.com、hotmail.com)でメモがない場合は「your company」とします。

名前や会社名が明らかにわかる場合に、「Dear HR Team」や「your company」にフォールバックしてはいけません。

ステップ4:プレースホルダーを削除しテンプレートを挿入

  1. 下書きを開きます。本文で、署名ブロック(data-smartmail="gmail_signature" を持つdiv)より上のすべてのノードを削除し、その上に1行の空行を残して、キャレットをその行に置きます。本文に古いバージョンの応募文章が含まれている場合も消去します。署名は削除しないでください。
  2. その他のオプション(作成ウィンドウ右下の三点リーダー)> テンプレート > テンプレートを挿入 からテンプレートを選択します。テンプレートメニューは、本文にフォーカスが当たるまでグレーアウトしています。テンプレートは本文と件名を置き換え、署名ブロックが空になることがあります。
  3. 最後に完全な署名が1つだけ残っていることを確認します。空になった場合は、ユーザーの他の下書きにある署名とまったく同じものを、作成ウィンドウ内で再構築します。Gmailは生の innerHTML をブロックします(Trusted Types)ので、JavaScriptでHTMLを挿入する場合は最初にtrustedTypesポリシーを作成してください。

自分で締めくくりの文言や名前を追加しないでください。

1回の実行で最初のメールを送信する前に、挿入したテンプレートを一度読み、ユーザーの現在の状況(現在の雇用主、在職期間、役職、実績)と照合します。情報が古くなっている場合は、停止して送信前に報告します。

ステップ5:パーソナライズ

  1. 挨拶:「Dear HR Team,」をステップ3の挨拶に変更します(太字は維持)。
  2. 会社名の行:「roles at Company」を「roles at <会社名>」または「roles at your company」に変更します(太字は維持)。
  3. 受信者:Toとステップ2からのCCを確認します。
  4. 件名:デフォルト件名を使用します。ただし特定の職種が指定されている場合は「Application for <職種名>」とします。すべての件名は「Application」で始まります。

本文のその他の部分は変更しません(フリーランス用下書きを除く)。

フリーランス用下書き

下書きの件名やメモに「freelance」(Freelance designer、Freelancing、Freelance Figmaなど)とある場合、フリーランス案件として提案します。テンプレートの箇条書き、リンク、署名はそのまま維持し、次のみ変更します。

  1. 冒頭の行を次のように変更します:「I'd love to help on a freelance basis, for a one off project or ongoing design support. I take on landing pages, store and product page UX audits, PDP and homepage redesigns, and app or web product design, all in Figma. Here's what I'd bring:」(会社名と「freelance」を太字に)。
  2. 締めくくりの質問を次のように変更します:「Do you have any freelance design work coming up? If this isn't the right inbox, a pointer to the right person would mean a lot.」
  3. 件名を「Application for Freelance <メモから取得した役割>」に変更します(例:Application for Freelance Figma Designer、またはApplication for Freelance Designer)。

ステップ6:送信

「送信」をクリックします(aria-labelが「Send」で始まるrole buttonのdiv。座標でクリックすると作成ウィンドウが最小化される場合があります)。次の下書きに進む前に、「Message sent」というトースト通知が表示されるのを待ちます。

ユーザーが確認を求めないと言った場合、このスキルの呼び出しは許可と見なされます。一時停止せずにバッチ全体を処理します。停止するのは、テンプレートの情報が古い場合、下書きのToが検索結果と一致しない場合、または受信者や企業名が特定できない場合のみです。

大きなバッチでは、ページ内で下書きごとのループをスクリプト化しても構いません(検索で開く、Toを確認、署名より上を消去、メニューからテンプレートを挿入、パーソナライズ、署名を確認、送信、トースト確認、エラー時は停止)。進捗は定期的に確認します。

ステップ7:報告

簡単なサマリー:送信した件数、フリーランス案件として送信したもの、ユーザーが破棄すべき重複下書き、スキップした下書きとその理由。

ルール

  1. 編集と送信はブラウザの作成ウィンドウでのみ行います。Gmail APIで下書きを更新したり送信したりしないでください。
  2. テンプレートを挿入する前に、必ず「Hi」プレースホルダーと署名より上のすべての部分を削除します。
  3. 署名は変更せず、正確に1つだけ最後に残します。追加の締めくくりや名前は付けません。
  4. 「Dear HR Team,」は名前が見つからない場合のみ使用し、「your company」は会社が見つからない場合のみ使用します。
  5. フリーランス用下書きにはフリーランス用の冒頭、質問、件名を使用し、それ以外はテンプレートに従います。
  6. 1社につき1通のメール。追加のアドレスはCCに入れます。
  7. すべての件名は「Application」で始めます。
  8. 送信前の確認をスキップするのは、ユーザーがそう言った場合のみです。

関連スキル