一键导入
log-meeting
Log a Notion meeting to GHL — extracts attendees, outcomes, action items, then updates CRM contact with tags, notes, and follow-up tasks
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Log a Notion meeting to GHL — extracts attendees, outcomes, action items, then updates CRM contact with tags, notes, and follow-up tasks
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
JusticeHub brand alignment and design system. Use for page creation, design review, component patterns, accessibility, and copy writing.
Feature Justice Matrix items for storytelling and content creation
Ralph research agent for discovering global youth justice cases and advocacy campaigns
Review pages visually and test accessibility using agent-browser CLI
Review JusticeHub code against ACT ecosystem values. Enforces cultural protocols, ALMA principles, and regenerative design.
Intelligent scraper for Australian youth justice sources. Discovers, extracts, and learns from government, Indigenous, research, and media sources.
基于 SOC 职业分类
| name | log-meeting |
| description | Log a Notion meeting to GHL — extracts attendees, outcomes, action items, then updates CRM contact with tags, notes, and follow-up tasks |
| user_invocable | true |
Syncs a Notion meeting page to GHL CRM. Extracts the AI summary, identifies the contact, and updates their GHL record automatically.
/log-meeting https://www.notion.so/acurioustractor/Meeting-Page-32cebcf981cf80cb8758c2f86dc08b09
Or just the page ID:
/log-meeting 32cebcf9-81cf-80cb-8758-c2f86dc08b09
Use the mcp__claude_ai_Notion__notion-fetch tool with the provided URL or page ID.
Extract from the page content:
Date property<summary> tag inside <meeting-notes>. This contains:
From the meeting content, identify the external contact (not Ben). Look for:
Then find them in GHL using the script pattern:
node --env-file=.env.local -e "
const GHL_API_BASE = 'https://services.leadconnectorhq.com';
const apiKey = process.env.GHL_API_KEY;
const locationId = process.env.GHL_LOCATION_ID;
async function main() {
const res = await fetch(
GHL_API_BASE + '/contacts/search/duplicate?locationId=' + locationId + '&email=' + encodeURIComponent('EMAIL_HERE'),
{ headers: { Authorization: 'Bearer ' + apiKey, 'Content-Type': 'application/json', Version: '2021-07-28' } }
);
const data = await res.json();
console.log(JSON.stringify(data.contact ? { id: data.contact.id, name: data.contact.firstName + ' ' + data.contact.lastName, tags: data.contact.tags } : { error: 'not found' }));
}
main();
"
If the contact is NOT found in GHL, ask the user if they want to create them.
Condense the AI summary into a concise GHL note. Format:
Meeting [DATE] — [TITLE]
Key outcomes:
- [bullet 1]
- [bullet 2]
- [bullet 3]
Next action: [first action item from AI summary] by [date if available]
Keep it under 500 words. GHL notes should be scannable, not comprehensive — the full notes live in Notion.
Based on meeting content, add relevant tags. Choose from:
meeting-held — always add thisvenue-partner — if they discussed hosting the containerbrisbane / adelaide / perth / tennant-creek / sydney — city-specificfunder — if funding was discussedco-design — if they discussed co-designing content/roomsmedia — if media coverage was discussedlegal — if legal sector engagement was discussedindigenous-led — if Indigenous-led programs/orgs discussedPresent the proposed tags to the user for approval before adding.
Run this script to add tags and note:
node --env-file=.env.local -e "
const GHL_API_BASE = 'https://services.leadconnectorhq.com';
const apiKey = process.env.GHL_API_KEY;
const contactId = 'CONTACT_ID_HERE';
async function main() {
// Add tags
const tagRes = await fetch(GHL_API_BASE + '/contacts/' + contactId + '/tags', {
method: 'POST',
headers: { Authorization: 'Bearer ' + apiKey, 'Content-Type': 'application/json', Version: '2021-07-28' },
body: JSON.stringify({ tags: [TAGS_ARRAY_HERE] })
});
console.log('Tags:', tagRes.ok);
// Add note
const noteRes = await fetch(GHL_API_BASE + '/contacts/' + contactId + '/notes', {
method: 'POST',
headers: { Authorization: 'Bearer ' + apiKey, 'Content-Type': 'application/json', Version: '2021-07-28' },
body: JSON.stringify({ body: 'NOTE_BODY_HERE' })
});
console.log('Note:', noteRes.ok);
// Create follow-up task (7 days from meeting)
const dueDate = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString();
const taskRes = await fetch(GHL_API_BASE + '/contacts/' + contactId + '/tasks', {
method: 'POST',
headers: { Authorization: 'Bearer ' + apiKey, 'Content-Type': 'application/json', Version: '2021-07-28' },
body: JSON.stringify({
title: 'TASK_TITLE_HERE',
dueDate: dueDate,
completed: false
})
});
console.log('Task:', taskRes.ok);
}
main();
"
Report back:
contained, justicehub, meeting-held.