本文へ移動
cccskills
無料GitHub で公開日本語紹介

email-concierge

未読メールの分類・要約から返信の下書き、会議予定の重複確認までをローカルAIで支援し、オフライン中も編集を進め、承認後の送信につなげるスキルです。

原文原文の説明を見る

Local AI email assistant that automates unread-mail processing, offline-safe classification and reply drafting, local draft editing/approval queues, calendar conflict checks, voice transcription, and confirmed SMTP sending when connectivity returns. Use when the user wants to manage email, check inbox, draft or edit replies, queue messages offline, approve/send email, handle meeting invites, or mentions email assistant, IMAP, SMTP, voice memo, local AI email.

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • 未読メールを整理して返信を準備したいとき
  • オフラインで返信案を編集したいとき
  • 会議の招待と既存予定を照合したいとき
  • 音声メモで返信内容を指示したいとき

日本語での紹介

できること

未読メールを取得し、分類・一行要約・返信の下書き作成をまとめて進めます。返信は丁寧・親しみやすい・簡潔の3種類を用意し、会議に関するメールでは.ics形式のカレンダーと予定の重複を確認します。音声メモの録音と文字起こしにも対応します。文章の推論はOpenVINO GenAIでローカル実行します。

こんなときに便利

受信箱の確認や返信準備をまとめたい人に向いています。オフライン時も保存済みメールを使って下書きを作成・編集でき、接続が戻ってから承認済みの返信を送れます。未読メールは既読にせず取得します。

使い方の例

「未読メールを分類して返信案を作って」「会議を受ける返信で、開始時刻を午後2時に変更してと伝えて」などと頼めます。下書きの一覧から内容を編集し、承認して送信確認へ進みます。

注意点

Windows・macOS・Linux向けです。初期設定では依存パッケージと約2GBの文章モデルを取得します。受信にはIMAP、送信にはSMTPの認証設定が必要です。予定確認には.icsファイルを用意し、音声機能には追加モデルや環境によってPortAudioが必要です。送信には下書きの事前承認と--confirm-sendの両方が必要です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(16)

  • SKILL.md13.4 KB
  • .gitignore67 B
  • .qoderignore154 B
  • email_concierge_config.json426 B
  • email_concierge.py62.1 KB
  • install_qoder.bat380 B
  • install_qoder.ps11.4 KB
  • install_qoder.sh779 B
  • install_skill.py6.0 KB
  • qoder.json1019 B
  • requirements-core.txt102 B
  • requirements-openvino.txt140 B
  • requirements.txt165 B
  • setup_auto.py16.3 KB
  • setup.bat182 B
  • setup.sh170 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Email Concierge — Local AI Email Assistant

A privacy-first email agent that reads, understands, and drafts replies to your emails. Text inference runs locally via OpenVINO GenAI with device priority NPU > GPU > CPU — no data leaves your machine.

Platforms: Windows · macOS · Linux (x86-64 and arm64)

Architecture

IMAP Mailbox ──→ read_mailbox ──→ classify_summarize (OpenVINO GenAI, batched)
                                        │
iCal Files  ──→ check_calendar          │
                                        ▼
Microphone  ──→ start_voice_memo ──→ transcribe_memo (distil-whisper, optional)
                                        │
                                        ▼
                                 draft_reply (OpenVINO GenAI, 3 styles, single call)

Models: OpenVINO/Qwen3-4B-int4-ov (~2 GB, int4 OpenVINO format, auto-downloaded to state/models/) for classification and drafting; distil-whisper-large-v3-int8-ov (optional) for transcription.

Agent execution

Treat this as a cross-platform skill. Resolve SKILL_DIR from the loaded SKILL.md; never assume a Windows path or a particular shell. The bundled setup_auto.py detects OS, architecture, shell, package manager, Python, Intel NPU/OpenVINO devices, and local model availability, then installs only compatible components. setup.bat and setup.sh are thin wrappers.

Resolve this SKILL.md directory as SKILL_DIR; do not assume the current workspace contains the executable. On Windows/Qoder, prefer:

$skillDir = Join-Path $env:USERPROFILE ".qoder\skills\email-concierge"
& "$skillDir\venv\Scripts\python.exe" "$skillDir\email_concierge.py" --diagnose --json

Run setup_auto.py --project-dir "$skillDir" before automated inbox work, or when diagnostics report setup_required=true; setup installs missing components (including openvino-genai) and downloads the configured LLM model. Run --diagnose --json after setup. local_ai_ready defaults to true on supported Windows, macOS, and Linux systems. local_ai_installed reports whether OpenVINO, openvino-genai, and the model are all present. llm_device shows the device inference will use (highest available of NPU/GPU/CPU unless device pins one) and llm_model_downloaded whether the model files exist locally. NPU acceleration is ready only when aipc_ready=true and openvino_devices includes NPU.

The bootstrapper supports Windows PowerShell/CMD, macOS zsh/Bash, and Linux shells. It creates a local venv, installs core dependencies and OpenVINO GenAI via pip (no system elevation required), and downloads the LLM model directly from the ModelScope domestic source (https://modelscope.cn). Use --no-openvino or --no-llm-model only for constrained/offline environments. Setup also deletes the legacy EmailConcierge-Ollama logon task registered by older versions.

When executed without a TTY (e.g. by Qoder), setup_auto.py automatically enables --yes and skips system package manager installs on non-first installs. A marker file at state/.setup_completed.json records completion.

Performance notes: the first generation on a device compiles the model graph — on NPU this can take several minutes; the compiled cache in state/ov_cache/<device> makes subsequent runs start in seconds. Classification is one batched call for all emails and drafting is one merged call for all three styles (JSON-parsed), with keyword classification and template drafts as fallbacks so the workflow never blocks on model failure.

Automation policy

For inbox requests, run --inbox by default. It automatically reads unread mail without marking it read, falls back to cached mail while offline, classifies every message, checks calendar conflicts for meeting messages, creates local reply drafts, and persists them in state/draft_queue.json. If the local LLM is unavailable, create an editable deterministic draft and continue.

Only request user input for missing required IMAP/SMTP credentials, explicit reply instructions, draft edits, or final send confirmation. Never send automatically: require --confirm-send after the user has approved the queued draft. When offline, finish all local work and leave sending pending for a later --send.


Installation

Automated install for Qoder

A qoder.json manifest is included. Qoder can install the skill automatically with the platform-specific installer below. Existing email_concierge_config.json and state/ are preserved across reinstalls.

Windows

.\install_qoder.ps1

# Copy files only, without package/model installation
.\install_qoder.ps1 -NoSetup

All dependencies (openvino-genai included) install into the local venv and the model downloads to state/models/; no administrator elevation is needed. Subsequent reinstalls are silent and preserve email_concierge_config.json and state/.

From CMD, run install_qoder.bat; it delegates to the same PowerShell flow and returns the installer exit code.

macOS / Linux

bash install_qoder.sh

Everything installs into the local venv without root. PortAudio (for voice recording) is the only optional system package; install it with your package manager when needed.

After installation, restart Qoder or open a new agent session so it reloads SKILL.md.

Manual install

Copy the skill directory into the target app's skill folder and run the bootstrapper:

python3 install_skill.py --target qoder --destination ~/.qoder/skills
# or
python3 install_skill.py --target codex --destination ~/.codex/skills

Use --no-setup to copy files without installing dependencies. The installer honours .qoderignore, merges upgrades, and skips venv/, __pycache__/, state/, tests/, and transient audio files. A non-zero setup result is returned to the caller and included in --json output.

Windows (manual)

python -m venv venv
venv\Scripts\pip install -r requirements.txt -r requirements-openvino.txt
venv\Scripts\python email_concierge.py --diagnose --json

macOS / Linux (manual)

python3 -m venv venv
venv/bin/pip install -r requirements.txt -r requirements-openvino.txt
venv/bin/python email_concierge.py --diagnose --json

For system audio recording on Unix, install PortAudio first:

# macOS
brew install portaudio

# Debian/Ubuntu
sudo apt install libportaudio2 portaudio19-dev

# Fedora/RHEL
sudo dnf install portaudio-devel

# Arch
sudo pacman -S portaudio

Configuration

Run the interactive wizard only when IMAP details are missing. It asks only for the required host, email address, and app password; defaults cover the port, folder, model, calendar, and transcription settings.

# macOS / Linux
venv/bin/python email_concierge.py --setup

# Windows
venv\Scripts\python.exe email_concierge.py --setup

For unattended use, set local environment variables instead. Environment values override JSON configuration.

EMAIL_CONCIERGE_IMAP_HOST=imap.example.com
EMAIL_CONCIERGE_IMAP_PORT=993
EMAIL_CONCIERGE_IMAP_USER=you@example.com
EMAIL_CONCIERGE_IMAP_PASSWORD=your-app-password
EMAIL_CONCIERGE_IMAP_FOLDER=INBOX

Optional overrides use the same pattern: EMAIL_CONCIERGE_LLM_MODEL_ID, EMAIL_CONCIERGE_LLM_MODEL_DIR, EMAIL_CONCIERGE_OLLAMA_MODEL_TRANSCRIBE (optional Ollama transcription backend), EMAIL_CONCIERGE_CALENDAR_DIR, EMAIL_CONCIERGE_WHISPER_MODEL_DIR, EMAIL_CONCIERGE_DEVICE (AUTO/NPU/GPU/CPU), EMAIL_CONCIERGE_MAX_EMAILS, EMAIL_CONCIERGE_SMTP_HOST, EMAIL_CONCIERGE_SMTP_PORT, EMAIL_CONCIERGE_SMTP_USER, EMAIL_CONCIERGE_SMTP_PASSWORD, EMAIL_CONCIERGE_SMTP_USE_TLS, and EMAIL_CONCIERGE_STATE_DIR.

Key JSON fields:

FieldMeaning
llm_model_idHuggingFace repo of the OpenVINO int4 model (default OpenVINO/Qwen3-4B-int4-ov)
llm_model_dirExplicit model directory override; empty → state/models/<repo-name>
deviceAUTO (default, NPU → GPU → CPU) or a pinned NPU/GPU/CPU
ollama_model_transcribeOptional Ollama model for transcription only (e.g. whisper); empty disables

IMAP app passwords:

  • Gmail: Google Account → Security → App passwords
  • Outlook: Microsoft → Security → Advanced → App passwords
  • Yahoo: Account → Security → App passwords

Tools Reference

read_mailbox

Fetches unread emails via IMAP.

python email_concierge.py --inbox

classify_summarize

Classifies each email into todo|meeting|notification|promotion and generates a one-line summary. One batched OpenVINO GenAI call for all emails; keyword fallback when the model is unavailable. Runs automatically with --inbox.

check_calendar

Parses .ics files and finds events overlapping a target time.

python email_concierge.py --check-cal 2026-09-01
python email_concierge.py --check-cal today

start_voice_memo

Records audio from the default microphone.

python email_concierge.py --record 30

Saves 16 kHz mono WAV. Ctrl+C stops early.

transcribe_memo

Transcribes audio to text. Priority: distil-whisper (OpenVINO) → Ollama (if ollama_model_transcribe set) → transcribe-translate skill.

python email_concierge.py --transcribe voice_memo.wav

draft_reply

Generates 3-style replies (formal / friendly / concise) in a single merged OpenVINO GenAI call; per-style template fallback.

Offline queue and sending

python email_concierge.py --queue --json
python email_concierge.py --edit MESSAGE_ID "Updated reply text" --style friendly
python email_concierge.py --approve MESSAGE_ID
python email_concierge.py --send
python email_concierge.py --send --confirm-send
python email_concierge.py --send --confirm-send --wait-for-network --retry-seconds 60

--send never transmits without both prior approval and --confirm-send. With --wait-for-network, keep retrying locally and send only those approved drafts after connectivity returns. Missing SMTP settings are reported as structured input requirements.


Workflow Examples

Automatic inbox workflow

Reads every unread email, classifies it, checks calendar conflicts for meeting messages, and writes local reply drafts without sending mail.

python email_concierge.py --inbox

When disconnected, the same command uses the local mailbox cache and writes drafts to the queue. Re-run --send after connectivity is restored; inspect and approve drafts first.

Non-interactive automation

Reports the exact missing configuration fields instead of prompting when IMAP configuration is unavailable.

python email_concierge.py --inbox --non-interactive --json

Process or guide one email explicitly

python email_concierge.py --inbox --email-index 1 --user-text "Accept the meeting, suggest 2pm instead"
python email_concierge.py --inbox --interactive

With voice input

python email_concierge.py --inbox --interactive --voice --voice-duration 20

Save aggregate results

python email_concierge.py --inbox --output results.json --json

Standalone tools

python email_concierge.py --check-cal today
python email_concierge.py --record 15
python email_concierge.py --transcribe voice_memo.wav

Transcription (Optional)

Voice transcription uses distil-whisper through OpenVINO on supported platforms (Windows x64, Linux x64, macOS x64/arm64 CPU).

pip install openvino "optimum[openvino]" transformers librosa

Set whisper_model_dir in config to the downloaded distil-whisper model path. Use --device CPU (default), GPU, NPU, or AUTO for inference device selection.

Alternatively, set ollama_model_transcribe (e.g. whisper) to use a locally installed Ollama for transcription only. Ollama is never used for text inference.


Troubleshooting

IssueFix
Model download fails or is slowDownloads use https://modelscope.cn directly and resume interrupted files automatically. Check domestic network access to ModelScope and rerun setup.
First NPU generation takes minutesNormal: one-time graph compilation; cached in state/ov_cache, later runs start in seconds
NPU/GPU init failsDevice chain auto-falls back NPU → GPU → CPU; pin device: GPU or CPU to skip a broken device
openvino-genai import errorVersion must match the openvino line; rerun pip install -r requirements-openvino.txt
Ollama transcription missingInstall Ollama separately and ollama pull whisper, or use whisper_model_dir instead
IMAP auth failedUse app password, not account password
sounddevice OSError (PortAudio)See platform install steps above
No calendar events foundExport .ics files from Calendar app to configured calendar_dir
Windows venv not foundUse venv\Scripts\python.exe directly, not python
icalendar not foundpip install icalendar inside venv
Legacy EmailConcierge-Ollama startup task remainsRe-run setup (removes it automatically) or schtasks /Delete /TN EmailConcierge-Ollama /F

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

agent-team

無料概要あり

複雑な企画や開発に合わせて、実行・進行管理・レビューを担うAIチームを組みます。各役の議論と決定を記録し、共通の情報を使って計画から成果物の作成まで進めます。

  • 技術構成を複数の視点で評価したいとき
  • 市場と費用を踏まえた価格戦略の検討
  • 新製品の実現可能性を調べたいとき
anbeime/skill8,6422026年10月24日 更新

商品紹介役の「小省导购员」の人物画像と背景、合成音声、音楽を生成し、InfiniteTalkと連携して25秒・9:16の縦型動画にまとめるスキル。

  • 25秒の縦型商品紹介動画を作りたいとき
  • 小省导购员の人物参考画像を作りたいとき
  • 動画用のビジネス場面の背景を作りたいとき
anbeime/skill8,6422026年10月24日 更新

antinet-doc-parse

無料概要あり

PDF・Word・Excelなどの文書を構造化Markdownに変換し、メタデータと解析の信頼度を付けて、検索や社内ナレッジの整備に使うスキル。

  • RAG用の文書を整えたいとき
  • 社内ナレッジの文書構造化
  • 契約書からの構造化テキスト抽出
anbeime/skill8,6422026年10月24日 更新

antinet-four-color-cards

無料概要あり

解析済みの文書を事実・解釈・リスク・行動の四色カードに整理し、出典や生成方法をたどりながら、分析内容と次の対応を確認するスキル。

  • 金融レポートの事実と解釈の整理
  • 法律文書の根拠とリスクの確認
  • 研究資料の出典付き分析カード作成
anbeime/skill8,6422026年10月24日 更新

antinet-provenance

無料概要あり

複数のAIエージェントが行った処理を記録し、追跡IDで証拠のつながりを整理します。担当や時間帯で履歴を検索でき、監査や問題発生箇所の特定に役立ちます。

  • エージェント間の処理経路を追いたいとき
  • 時刻や担当で監査記録を検索したいとき
  • ベクトルDB障害中も記録を続けたいとき
anbeime/skill8,6422026年10月24日 更新

antinet-security-scan

無料概要あり

文書や外部URLを取り込む前に、禁止ドメインや文書の利用許諾を確認し、受け入れ可否とリスクの報告書、追跡用IDを出力するスキル。

  • 知識ベースへの文書取り込み前の確認
  • 外部URLの禁止ドメイン照合
  • 処理前の文書利用許諾の確認
anbeime/skill8,6422026年10月24日 更新

anbeime のスキルをすべて見る

このスキルの問題を報告する