一键导入
memory-email-ingest
Ingest emails from calendar contacts using Gmail MCP tools — calendar-gated to prevent spam/noise
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Ingest emails from calendar contacts using Gmail MCP tools — calendar-gated to prevent spam/noise
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Ingest Bubbles AI meeting summaries from Gmail into the memory knowledge base
Pull Google Calendar events via MCP tools and extract attendees into the memory-kb contact registry
Manually compile daily logs into knowledge articles and run structural lint
Ingest recently modified Google Docs into the memory knowledge base with email correlation
Query the personal knowledge base — ask questions about past decisions, meetings, and context
Ingest Slack DMs and important channel messages into the memory knowledge base
基于 SOC 职业分类
| name | memory-email-ingest |
| description | Ingest emails from calendar contacts using Gmail MCP tools — calendar-gated to prevent spam/noise |
| user_invocable | true |
Ingest emails ONLY from people Jesse has meetings with. Uses Gmail MCP tools (not Chrome).
The calendar contacts file must exist at /Users/jesseanglen/Documents/RandomStuff/memory-kb/state/calendar-contacts.json.
If it doesn't exist or has zero contacts, report "No calendar contacts found. Run /memory-calendar-ingest first." and exit.
Read calendar contacts from /Users/jesseanglen/Documents/RandomStuff/memory-kb/state/calendar-contacts.json.
Read email state from /Users/jesseanglen/Documents/RandomStuff/memory-kb/state/email-state.json (create if missing).
Extract the list of known contact email addresses.
Use gmail_search_messages to find emails from known contacts.
Build the query: after:YYYY/MM/DD from:({email1 OR email2 OR email3 ...})
The after: date should be the last_checked_timestamp from email state, or 3 days ago if first run.
If there are many contacts (50+), split into multiple gmail_search_messages calls with batches of ~25 emails each.
Set maxResults to 50.
For each message returned by the search, use gmail_read_message with the messageId to get full content.
Extract:
Skip trivial emails:
For each sender email, check calendar-contacts.json for their last_seen date.
Use this to populate the related_event field — connects the email to the meeting context.
For each substantive email, append to /Users/jesseanglen/Documents/RandomStuff/memory-kb/daily/YYYY-MM-DD.md:
## Email from sender@example.com @ HH:MM PT
**source:** email
**subject:** [Subject line]
**from:** Name <email>
**related_event:** [Most recent event with this contact, from calendar-contacts.json]
### Key Content
- [Summary of important information, decisions, or requests]
- [Action items mentioned]
- [Important context or commitments]
### Action Items
- [ ] [Any follow-up tasks identified]
If the daily log doesn't exist, create it with header # Daily Log: YYYY-MM-DD.
Track processed email message IDs in email-state.json (keep last 500).
Before appending, check for duplicate entries in the daily log (same subject + sender + date).
Write to /Users/jesseanglen/Documents/RandomStuff/memory-kb/state/email-state.json:
{
"last_checked_timestamp": "ISO timestamp",
"total_runs": N,
"last_run": {
"timestamp": "ISO",
"emails_found": N,
"emails_ingested": N,
"contacts_matched": N,
"status": "success"
},
"processed_message_ids": ["id1", "id2"]
}
"Email ingest complete. Found X emails from calendar contacts, ingested Y substantive entries."
gmail_search_messages and gmail_read_message MCP tools — NO Chrome browser neededcalendar-contacts.json — this is the core spam filter