dice-easy-apply
Dice.comでの簡単応募を自動化し、Puppeteer/Chromiumで検索・応募、履歴書やカバーレターのアップロード、リモート求人の絞り込み、応募制限を行うことで、効率的な求職活動を支援するSkill。
📜 元の英語説明(参考)
Automate Dice.com Easy Apply searches and applications with Puppeteer/Chromium, resume and cover-letter uploads, remote-role filtering, and conservative application guardrails.
🇯🇵 日本人クリエイター向け解説
Dice.comでの簡単応募を自動化し、Puppeteer/Chromiumで検索・応募、履歴書やカバーレターのアップロード、リモート求人の絞り込み、応募制限を行うことで、効率的な求職活動を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o dice-easy-apply.zip https://jpskill.com/download/19809.zip && unzip -o dice-easy-apply.zip && rm dice-easy-apply.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/19809.zip -OutFile "$d\dice-easy-apply.zip"; Expand-Archive "$d\dice-easy-apply.zip" -DestinationPath $d -Force; ri "$d\dice-easy-apply.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
dice-easy-apply.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
dice-easy-applyフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Dice Easy Apply 自動化
このスキルは、AIコーディング/オペレーションエージェントが、Dice.com の Easy Apply ワークフローを構築し、繰り返し実行するのに役立ちます。
これは意図的に公開されており、認証情報は不要です。ユーザー名、パスワード、クッキー、プライベートプロファイルパス、またはユーザー固有の秘密は含まれていません。
機能
- 明示的なリモート勤務地フィルターを使用して Dice の求人を検索します。
- ソフトウェア、ウェブ、フルスタック、フロントエンド/バックエンド、AI、GenAI、LLM、Claude/OpenAI/Codex スタイルの職務に焦点を当てます。
- オペレーターが外部 ATS アプリケーションを明示的に承認しない限り、Dice のサイト内 Easy Apply フローのみを使用します。
- 検証済みの履歴書 PDF とオプションのカバーレター PDF をアップロードします。
- 永続的な Chromium プロファイルを使用するため、ログインは一度手動で行えば安全に再利用できます。
- 状態/ログファイルを保持するため、毎日の再実行で重複を回避します。
- 明示的なオンサイト/ハイブリッド/ローカル/出張/機密保持の制約がある職務や、不明な必須質問がある職務はスキップします。
安全規則
- 求人サイトの認証情報をスクリプト、スキル、メモリ、ログ、またはレポートに保存しないでください。
- 認証情報は、絶対に必要であれば一度限りの環境変数経由でのみ渡すか、事前に認証されたブラウザプロファイルを使用してください。
- CAPTCHA、MFA、疑わしいログインチェック、本人確認、またはアカウントセキュリティのプロンプトが表示された場合は停止してください。
- 回答を捏造しないでください。給与の期待、エッセイ、カスタムカバーレター、転居の希望、出張、または検証不可能な事実を要求するフォームはスキップしてください。
- Dice の一致率はあくまで参考として扱ってください。職務タイトルが履歴書の得意分野内にある場合、Dice が低い一致スコアを報告したという理由だけで職務をスキップしないでください。
- Gen AI / Generative AI Engineer は、履歴書がウェブ/ソフトウェア/AI の仕事に対応している場合、ソフトウェアエンジニアリングの職務として扱われるべきです。
推奨検索 URL
Dice のリモートフィルターを直接使用し、半径検索は使用しないでください。
https://www.dice.com/jobs?filters.workplaceTypes=Remote&filters.easyApply=true&q=<QUERY>
契約/直接雇用のフィルター検索には、Dice の雇用形態と雇用主フィルターを追加してください。
https://www.dice.com/jobs?filters.easyApply=true&filters.employmentType=CONTRACTS&filters.employerType=Direct+Hire&filters.workplaceTypes=Remote&q=<QUERY>
有用なクエリセット:
gen ai engineer
generative ai engineer
llm engineer
ai full stack engineer
frontend ai engineer
web developer
full stack engineer
node react engineer
javascript engineer
typescript engineer
react developer
node.js developer
svelte developer
software engineer
環境変数
RESUME_PDF=/absolute/path/to/resume.pdf
COVER_PDF=/absolute/path/to/cover.pdf
CHROME_PROFILE=$HOME/.cache/dice-chrome
STATE_DIR=/tmp/dice-easyapply-daily
MAX_SCAN=120
MAX_APPLY=15
DRY_RUN=1
SEARCHES='gen ai engineer|llm engineer|full stack engineer|react developer'
EMPLOYMENT_FILTER=CONTRACTS
EMPLOYER_TYPE='Direct Hire'
Puppeteer 起動パターン
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({
headless: false,
executablePath: process.env.CHROME_BIN || '/snap/bin/chromium',
userDataDir: process.env.CHROME_PROFILE || `${process.env.HOME}/.cache/dice-chrome`,
defaultViewport: null,
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--start-maximized']
});
let page = await browser.newPage();
page.setDefaultTimeout(30000);
page.on('dialog', async d => {
try {
if (d.type() === 'beforeunload') await d.accept();
else await d.dismiss();
} catch {}
});
コアワークフロー
- ローカルファイルが存在することを確認します。
test -f "$RESUME_PDF"
test -f "$COVER_PDF"
- 永続的なブラウザプロファイルで Dice を開き、ログインを確認します。
- クエリリストを使用して、リモートの Easy Apply 職務を検索します。
/job-detail/<id>URL から Dice の求人 ID を抽出します。- 各求人詳細ページを開き、フッター/推奨求人/サイドバーのテキストではなく、主要な求人説明のみを検査します。
- 明示的なオンサイト/ハイブリッド/ローカル/出張/機密保持の制約はスキップします。
- ウィザードを開きます。
https://www.dice.com/job-applications/<job-id>/wizard
- 古い/デフォルトの履歴書を、検証済みの履歴書 PDF に置き換えます。
- Dice がサポートしている場合は、カバーレター PDF をアップロードします。
- レビュー画面に進みます。
- 期待されるファイル名と就労許可が可視であることを確認します。
- 不明な必須質問が残っていない場合にのみ提出します。
- JSONL 監査行を追加し、状態を保存します。
推奨される状態
{
"seen": {},
"applied": {},
"skipped": {},
"alreadySubmitted": {}
}
状態とログを以下に書き込みます。
/tmp/dice-easyapply-daily/state.json
/tmp/dice-easyapply-daily/results.jsonl
スキップ理由
一般的なスキップ理由:
not_remote_only_or_has_hybrid_location_textoutside_resume_wheelhouseexternal_ats_not_approvedunknown_required_questioncaptcha_or_verification_requiredcould_not_attach_resumecould_not_attach_cover_letteralready_submitted
レポート
簡潔な結果を報告します。
提出済み:
- タイトル — 会社 — URL
スキップ済み:
- タイトル — 会社 — URL — 理由
状態: /tmp/dice-easyapply-daily/state.json
ログ: /tmp/dice-easyapply-daily/results.jsonl
落とし穴
- Dice は古いプロファイルの履歴書を事前に選択する場合があります。提出する前に必ずファイル名を確認してください。
- Dice のページはネイティブの
beforeunloadダイアログを発生させる場合があります。Puppeteer のダイアログハンドラーを登録し、beforeunloadダイアログを受け入れてください。 - Dice は提出試行後にページを閉じる/デタッチする場合があります。ナビゲーションが
Target closed、Session closed、またはframe was detachedを報告した場合、新しいページを作成し、ダイアログハンドラーを再登録して、状態から続行してください。 - 無関係な推奨/サイドバー/フッターのテキストが、リモート/ハイブリッドの誤ったスキップを引き起こさないようにしてください。
- 単一の履歴書に過度に適合させないでください。検索クエリとスキップルールは設定可能に保ってください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Dice Easy Apply Automation
This skill helps an AI coding/operations agent build and run a repeatable Dice.com Easy Apply workflow.
It is intentionally public and credential-free. It contains no usernames, passwords, cookies, private profile paths, or user-specific secrets.
What it does
- Searches Dice jobs using the explicit Remote workplace filter.
- Focuses on software, web, full-stack, frontend/backend, AI, GenAI, LLM, Claude/OpenAI/Codex-style roles.
- Uses Dice in-site Easy Apply flows only, unless the operator explicitly approves external ATS applications.
- Uploads a verified resume PDF and optional cover-letter PDF.
- Uses a persistent Chromium profile so login can be performed manually once and reused safely.
- Keeps state/log files so daily reruns avoid duplicates.
- Skips roles with explicit onsite/hybrid/local/travel/clearance constraints or unknown required questions.
Safety rules
- Do not store job-board credentials in scripts, skills, memory, logs, or reports.
- Pass credentials only via one-off environment variables if absolutely necessary, or use a pre-authenticated browser profile.
- Stop for CAPTCHA, MFA, suspicious-login checks, identity verification, or account-security prompts.
- Do not fabricate answers. Skip forms requiring salary expectations, essays, custom cover letters, relocation preferences, travel, or unverifiable facts.
- Treat Dice match percentages as advisory only. Do not skip a role solely because Dice reports a low match score if the role title is inside the resume's wheelhouse.
- Gen AI / Generative AI Engineer should be treated as a software-engineering role when the resume supports web/software/AI work.
Recommended search URL
Use Dice's remote filter directly, not a radius search:
https://www.dice.com/jobs?filters.workplaceTypes=Remote&filters.easyApply=true&q=<QUERY>
For contract/direct-hire filtered searches, add Dice's employment and employer filters:
https://www.dice.com/jobs?filters.easyApply=true&filters.employmentType=CONTRACTS&filters.employerType=Direct+Hire&filters.workplaceTypes=Remote&q=<QUERY>
Useful query set:
gen ai engineer
generative ai engineer
llm engineer
ai full stack engineer
frontend ai engineer
web developer
full stack engineer
node react engineer
javascript engineer
typescript engineer
react developer
node.js developer
svelte developer
software engineer
Environment variables
RESUME_PDF=/absolute/path/to/resume.pdf
COVER_PDF=/absolute/path/to/cover.pdf
CHROME_PROFILE=$HOME/.cache/dice-chrome
STATE_DIR=/tmp/dice-easyapply-daily
MAX_SCAN=120
MAX_APPLY=15
DRY_RUN=1
SEARCHES='gen ai engineer|llm engineer|full stack engineer|react developer'
EMPLOYMENT_FILTER=CONTRACTS
EMPLOYER_TYPE='Direct Hire'
Puppeteer launch pattern
const puppeteer = require('puppeteer');
const browser = await puppeteer.launch({
headless: false,
executablePath: process.env.CHROME_BIN || '/snap/bin/chromium',
userDataDir: process.env.CHROME_PROFILE || `${process.env.HOME}/.cache/dice-chrome`,
defaultViewport: null,
args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', '--start-maximized']
});
let page = await browser.newPage();
page.setDefaultTimeout(30000);
page.on('dialog', async d => {
try {
if (d.type() === 'beforeunload') await d.accept();
else await d.dismiss();
} catch {}
});
Core workflow
- Verify local files exist:
test -f "$RESUME_PDF"
test -f "$COVER_PDF"
- Open Dice with a persistent browser profile and verify login.
- Search remote Easy Apply roles using the query list.
- Extract Dice job IDs from
/job-detail/<id>URLs. - Open each job detail page and inspect only the main job description, not footer/recommended-job/sidebar text.
- Skip explicit onsite/hybrid/local/travel/clearance constraints.
- Open the wizard:
https://www.dice.com/job-applications/<job-id>/wizard
- Replace any stale/default resume with the verified resume PDF.
- Upload the cover-letter PDF where Dice supports it.
- Continue to the review screen.
- Confirm expected filenames and work authorization are visible.
- Submit only if no unknown required questions remain.
- Append a JSONL audit row and save state.
Suggested state
{
"seen": {},
"applied": {},
"skipped": {},
"alreadySubmitted": {}
}
Write state and logs to:
/tmp/dice-easyapply-daily/state.json
/tmp/dice-easyapply-daily/results.jsonl
Skip reasons
Common skip reasons:
not_remote_only_or_has_hybrid_location_textoutside_resume_wheelhouseexternal_ats_not_approvedunknown_required_questioncaptcha_or_verification_requiredcould_not_attach_resumecould_not_attach_cover_letteralready_submitted
Reporting
Report concise results:
Submitted:
- Title — Company — URL
Skipped:
- Title — Company — URL — reason
State: /tmp/dice-easyapply-daily/state.json
Log: /tmp/dice-easyapply-daily/results.jsonl
Pitfalls
- Dice may preselect an older profile resume. Always verify the filename before submitting.
- Dice pages can fire native
beforeunloaddialogs; register a Puppeteer dialog handler and accept beforeunload dialogs. - Dice may close/detach a page after a submit attempt. If navigation reports
Target closed,Session closed, orframe was detached, create a fresh page, re-register the dialog handler, and continue from state. - Do not let unrelated recommendation/sidebar/footer text cause false remote/hybrid skips.
- Do not overfit to a single resume. Keep search queries and skip rules configurable.