@shawnfroos/gong-lite 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/csv-utils.d.ts +37 -0
- package/dist/csv-utils.d.ts.map +1 -0
- package/dist/csv-utils.js +113 -0
- package/dist/csv-utils.js.map +1 -0
- package/dist/gong-client.d.ts +309 -0
- package/dist/gong-client.d.ts.map +1 -0
- package/dist/gong-client.js +415 -0
- package/dist/gong-client.js.map +1 -0
- package/dist/handlers.d.ts +20 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +231 -0
- package/dist/handlers.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +251 -0
- package/dist/index.js.map +1 -0
- package/dist/tools.d.ts +292 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +233 -0
- package/dist/tools.js.map +1 -0
- package/dist/transcript-formatter.d.ts +64 -0
- package/dist/transcript-formatter.d.ts.map +1 -0
- package/dist/transcript-formatter.js +295 -0
- package/dist/transcript-formatter.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transcript formatting utilities for markdown export
|
|
3
|
+
* Adapted from the reference TranscriptFormatter pattern
|
|
4
|
+
*/
|
|
5
|
+
export class TranscriptFormatter {
|
|
6
|
+
/**
|
|
7
|
+
* Generate YAML frontmatter with rich metadata
|
|
8
|
+
*/
|
|
9
|
+
static generateFrontmatter(call) {
|
|
10
|
+
const date = call.date ? new Date(call.date).toISOString() : '';
|
|
11
|
+
const internalParticipants = this.extractParticipantsByAffiliation(call, 'internal');
|
|
12
|
+
const externalParticipants = this.extractParticipantsByAffiliation(call, 'external');
|
|
13
|
+
const topics = call.topics ?? this.extractTopics(call);
|
|
14
|
+
const duration = call.duration ? `${Math.round(call.duration / 60)} minutes` : 'Unknown';
|
|
15
|
+
return `---
|
|
16
|
+
Call_Title: "${call.title ?? 'Untitled Call'}"
|
|
17
|
+
Call_ID: "${call.id}"
|
|
18
|
+
Call_Date_UTC: "${date}"
|
|
19
|
+
Call_Gong_URL: "${call.url ?? `https://app.gong.io/call?id=${call.id}`}"
|
|
20
|
+
Call_Duration: "${duration}"
|
|
21
|
+
|
|
22
|
+
Call_External_Entities: [${this.extractExternalEntities(call).map(e => `"${e}"`).join(',')}]
|
|
23
|
+
Call_Party_Status: "${call.partyStatus ?? 'Unknown'}"
|
|
24
|
+
|
|
25
|
+
Internal_Participants: [${internalParticipants.map(p => `"${p}"`).join(',')}]
|
|
26
|
+
External_Participants: [${externalParticipants.map(p => `"${p}"`).join(',')}]
|
|
27
|
+
Total_Participants: ${call.participantCount ?? internalParticipants.length + externalParticipants.length}
|
|
28
|
+
|
|
29
|
+
AI_Analysis_Source: "From Gong AI"
|
|
30
|
+
content_brief: "${call.summary ?? ''}"
|
|
31
|
+
content_highlights: "${call.highlights ?? ''}"
|
|
32
|
+
|
|
33
|
+
authors: Claude
|
|
34
|
+
type: sales-call-transcript
|
|
35
|
+
topics: [${topics.map(t => `"${t}"`).join(', ')}]
|
|
36
|
+
tags: ["gong-export","call/${date.substring(0, 7)}"]
|
|
37
|
+
transcript_length: ${call.transcriptLength ?? 0}
|
|
38
|
+
has_transcript: ${call.hasTranscript !== false}
|
|
39
|
+
---`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Generate markdown body content
|
|
43
|
+
*/
|
|
44
|
+
static generateMarkdownBody(call, includeFullTranscript) {
|
|
45
|
+
let body = '';
|
|
46
|
+
const gongUrl = call.url ?? `https://app.gong.io/call?id=${call.id}`;
|
|
47
|
+
// AI Summary section (always show if available)
|
|
48
|
+
body += '\n## AI Summary\n\n';
|
|
49
|
+
if (call.summary) {
|
|
50
|
+
body += `${call.summary}\n\n`;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
body += '*No AI summary available*\n\n';
|
|
54
|
+
}
|
|
55
|
+
// Topics section
|
|
56
|
+
const topics = call.topics ?? this.extractTopics(call);
|
|
57
|
+
if (topics.length > 0) {
|
|
58
|
+
body += '### Topics Discussed\n';
|
|
59
|
+
topics.forEach((topic) => {
|
|
60
|
+
body += `- ${topic}\n`;
|
|
61
|
+
});
|
|
62
|
+
body += '\n';
|
|
63
|
+
}
|
|
64
|
+
// Key Points section
|
|
65
|
+
if (call.keyPoints && call.keyPoints.length > 0) {
|
|
66
|
+
body += '### Key Points\n';
|
|
67
|
+
call.keyPoints.forEach((point) => {
|
|
68
|
+
body += `- ${point}\n`;
|
|
69
|
+
});
|
|
70
|
+
body += '\n';
|
|
71
|
+
}
|
|
72
|
+
// Highlights section
|
|
73
|
+
body += '## Highlights\n\n';
|
|
74
|
+
if (call.highlights) {
|
|
75
|
+
body += `${call.highlights}\n\n`;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
body += '*No highlights available*\n\n';
|
|
79
|
+
}
|
|
80
|
+
// Outcomes section
|
|
81
|
+
body += '## Outcomes\n\n';
|
|
82
|
+
body += `**Call Result**: ${call.callOutcome ?? 'Call completed'}\n\n`;
|
|
83
|
+
// Next Steps section (primary, from Gong AI)
|
|
84
|
+
body += '## Next Steps\n\n';
|
|
85
|
+
if (call.nextSteps && call.nextSteps.length > 0) {
|
|
86
|
+
call.nextSteps.forEach((step) => {
|
|
87
|
+
body += `- [ ] ${step}\n`;
|
|
88
|
+
});
|
|
89
|
+
body += '\n';
|
|
90
|
+
}
|
|
91
|
+
else if (call.actionItems && call.actionItems.length > 0) {
|
|
92
|
+
// Fallback to action items if no next steps
|
|
93
|
+
call.actionItems.forEach((item) => {
|
|
94
|
+
body += `- [ ] ${item}\n`;
|
|
95
|
+
});
|
|
96
|
+
body += '\n';
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
body += '*No next steps identified*\n\n';
|
|
100
|
+
}
|
|
101
|
+
// Gong link
|
|
102
|
+
body += `---\n\n*View in Gong: [Full Recording](${gongUrl})*\n\n`;
|
|
103
|
+
// Full Transcript section (only if requested)
|
|
104
|
+
if (includeFullTranscript && call.utterances && call.utterances.length > 0) {
|
|
105
|
+
body += '## Full Transcript\n\n';
|
|
106
|
+
for (const utterance of call.utterances) {
|
|
107
|
+
// Format with Gong timestamp link
|
|
108
|
+
const timestamp = utterance.timestamp ?? (utterance.order ?? 0) * 30;
|
|
109
|
+
const gongLink = `[Gong](https://app.gong.io/embedded-call?call-id=${call.id}&from=${timestamp})`;
|
|
110
|
+
body += `**${utterance.speaker}:** ${utterance.text} ${gongLink}\n\n`;
|
|
111
|
+
}
|
|
112
|
+
body += `\n*Complete transcript with ${call.utterances.length} utterances*\n\n`;
|
|
113
|
+
}
|
|
114
|
+
return body;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Generate complete markdown content (frontmatter + body)
|
|
118
|
+
*/
|
|
119
|
+
static generateCompleteMarkdown(call, includeFullTranscript) {
|
|
120
|
+
const frontmatter = this.generateFrontmatter(call);
|
|
121
|
+
const body = this.generateMarkdownBody(call, includeFullTranscript);
|
|
122
|
+
return `${frontmatter}\n${body}`;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Generate safe filename for exports
|
|
126
|
+
*/
|
|
127
|
+
static generateFileName(call, extension = 'md') {
|
|
128
|
+
const date = call.date ? new Date(call.date).toISOString().split('T')[0] : 'undated';
|
|
129
|
+
const title = (call.title ?? 'Untitled')
|
|
130
|
+
.replace(/[^a-z0-9\s-]/gi, '')
|
|
131
|
+
.replace(/\s+/g, '_')
|
|
132
|
+
.substring(0, 50);
|
|
133
|
+
return `${date}_${title}_${call.id.substring(0, 8)}.${extension}`;
|
|
134
|
+
}
|
|
135
|
+
// Helper methods
|
|
136
|
+
static extractParticipantsByAffiliation(call, affiliation) {
|
|
137
|
+
if (call.utterances) {
|
|
138
|
+
const speakerSet = new Set();
|
|
139
|
+
call.utterances.forEach((u) => {
|
|
140
|
+
if (u.affiliation === affiliation) {
|
|
141
|
+
speakerSet.add(u.speaker);
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return Array.from(speakerSet);
|
|
145
|
+
}
|
|
146
|
+
if (call.speakerDetails) {
|
|
147
|
+
return call.speakerDetails
|
|
148
|
+
.filter(s => s.affiliation === affiliation)
|
|
149
|
+
.map(s => s.name);
|
|
150
|
+
}
|
|
151
|
+
return [];
|
|
152
|
+
}
|
|
153
|
+
static extractExternalEntities(call) {
|
|
154
|
+
const entities = [];
|
|
155
|
+
if (call.title) {
|
|
156
|
+
// Look for patterns like "Company x YourCompany" or "YourCompany x Company"
|
|
157
|
+
const companyName = process.env.COMPANY_NAME ?? 'YourCompany';
|
|
158
|
+
const pattern = new RegExp(`(?:${companyName}\\s*x\\s*|x\\s*${companyName}\\s*|with\\s+)([^|,]+)`, 'i');
|
|
159
|
+
const match = call.title.match(pattern);
|
|
160
|
+
if (match && match[1]) {
|
|
161
|
+
entities.push(match[1].trim());
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return entities;
|
|
165
|
+
}
|
|
166
|
+
static extractTopics(call) {
|
|
167
|
+
const topics = [];
|
|
168
|
+
if (call.title) {
|
|
169
|
+
const titleLower = call.title.toLowerCase();
|
|
170
|
+
if (titleLower.includes('pricing'))
|
|
171
|
+
topics.push('pricing');
|
|
172
|
+
if (titleLower.includes('demo'))
|
|
173
|
+
topics.push('demo');
|
|
174
|
+
if (titleLower.includes('qbr') || titleLower.includes('quarterly'))
|
|
175
|
+
topics.push('quarterly business review');
|
|
176
|
+
if (titleLower.includes('renewal'))
|
|
177
|
+
topics.push('renewal');
|
|
178
|
+
if (titleLower.includes('onboarding'))
|
|
179
|
+
topics.push('onboarding');
|
|
180
|
+
if (titleLower.includes('check-in') || titleLower.includes('checkin'))
|
|
181
|
+
topics.push('check-in');
|
|
182
|
+
if (titleLower.includes('introduction') || titleLower.includes('intro'))
|
|
183
|
+
topics.push('introduction');
|
|
184
|
+
if (titleLower.includes('platform overview'))
|
|
185
|
+
topics.push('platform overview');
|
|
186
|
+
}
|
|
187
|
+
return topics.length > 0 ? topics : ['general discussion'];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Transform Gong API data into CallData format for the formatter
|
|
192
|
+
*/
|
|
193
|
+
export function buildCallData(callDetails, transcript, summary) {
|
|
194
|
+
// Build party lookup for speaker names and affiliations
|
|
195
|
+
const partyMap = new Map();
|
|
196
|
+
for (const party of callDetails.parties ?? []) {
|
|
197
|
+
if (party.speakerId) {
|
|
198
|
+
partyMap.set(party.speakerId, party);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Transform transcript entries to utterances
|
|
202
|
+
const utterances = [];
|
|
203
|
+
if (transcript?.transcript) {
|
|
204
|
+
let order = 0;
|
|
205
|
+
for (const entry of transcript.transcript) {
|
|
206
|
+
const party = partyMap.get(entry.speakerId);
|
|
207
|
+
const speakerName = party?.name ?? `Speaker ${entry.speakerId}`;
|
|
208
|
+
const affiliation = party?.affiliation?.toLowerCase() ?? 'unknown';
|
|
209
|
+
for (const sentence of entry.sentences) {
|
|
210
|
+
utterances.push({
|
|
211
|
+
speaker: speakerName,
|
|
212
|
+
text: sentence.text,
|
|
213
|
+
affiliation,
|
|
214
|
+
timestamp: Math.floor(sentence.start / 1000), // Convert ms to seconds
|
|
215
|
+
order: order++,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Extract speaker details
|
|
221
|
+
const speakerDetails = [];
|
|
222
|
+
for (const party of callDetails.parties ?? []) {
|
|
223
|
+
if (party.name) {
|
|
224
|
+
speakerDetails.push({
|
|
225
|
+
name: party.name,
|
|
226
|
+
affiliation: party.affiliation?.toLowerCase() ?? 'unknown',
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Extract key points
|
|
231
|
+
const keyPoints = summary?.keyPoints?.map(kp => kp.text) ?? [];
|
|
232
|
+
// Extract highlights text
|
|
233
|
+
const highlightsText = summary?.highlights?.map(h => h.text).join('\n') ?? '';
|
|
234
|
+
// Extract topics from summary
|
|
235
|
+
const topics = summary?.topics?.map(t => t.name) ?? [];
|
|
236
|
+
// Extract next steps from outline (look for "Next Steps" or similar sections)
|
|
237
|
+
const nextSteps = [];
|
|
238
|
+
if (summary?.outline) {
|
|
239
|
+
for (const section of summary.outline) {
|
|
240
|
+
const sectionLower = section.section.toLowerCase();
|
|
241
|
+
if (sectionLower.includes('next step') ||
|
|
242
|
+
sectionLower.includes('action item') ||
|
|
243
|
+
sectionLower.includes('follow up') ||
|
|
244
|
+
sectionLower.includes('follow-up') ||
|
|
245
|
+
sectionLower.includes('to do') ||
|
|
246
|
+
sectionLower.includes('todo')) {
|
|
247
|
+
if (section.items) {
|
|
248
|
+
nextSteps.push(...section.items);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
// Count participants by affiliation
|
|
254
|
+
let internalCount = 0;
|
|
255
|
+
let externalCount = 0;
|
|
256
|
+
for (const party of callDetails.parties ?? []) {
|
|
257
|
+
if (party.affiliation === 'Internal')
|
|
258
|
+
internalCount++;
|
|
259
|
+
else if (party.affiliation === 'External')
|
|
260
|
+
externalCount++;
|
|
261
|
+
}
|
|
262
|
+
const result = {
|
|
263
|
+
id: callDetails.id,
|
|
264
|
+
url: callDetails.url,
|
|
265
|
+
hasTranscript: utterances.length > 0,
|
|
266
|
+
transcriptLength: utterances.length,
|
|
267
|
+
highlights: highlightsText,
|
|
268
|
+
utterances,
|
|
269
|
+
keyPoints,
|
|
270
|
+
speakerDetails,
|
|
271
|
+
topics,
|
|
272
|
+
internalCount,
|
|
273
|
+
externalCount,
|
|
274
|
+
participantCount: (callDetails.parties ?? []).length,
|
|
275
|
+
};
|
|
276
|
+
// Add next steps if found
|
|
277
|
+
if (nextSteps.length > 0) {
|
|
278
|
+
result.nextSteps = nextSteps;
|
|
279
|
+
}
|
|
280
|
+
// Only set optional properties if they have values
|
|
281
|
+
if (callDetails.title)
|
|
282
|
+
result.title = callDetails.title;
|
|
283
|
+
if (callDetails.started)
|
|
284
|
+
result.date = callDetails.started;
|
|
285
|
+
else if (callDetails.scheduled)
|
|
286
|
+
result.date = callDetails.scheduled;
|
|
287
|
+
if (callDetails.duration !== undefined)
|
|
288
|
+
result.duration = callDetails.duration;
|
|
289
|
+
if (summary?.brief)
|
|
290
|
+
result.summary = summary.brief;
|
|
291
|
+
if (summary?.callOutcome)
|
|
292
|
+
result.callOutcome = summary.callOutcome;
|
|
293
|
+
return result;
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=transcript-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-formatter.js","sourceRoot":"","sources":["../src/transcript-formatter.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@shawnfroos/gong-lite",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for Gong.io - Access meeting transcripts, summaries, and analytics via Claude",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"gong-lite": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/**/*.js",
|
|
12
|
+
"dist/**/*.d.ts",
|
|
13
|
+
"dist/**/*.js.map",
|
|
14
|
+
"dist/**/*.d.ts.map",
|
|
15
|
+
"!dist/**/*.test.*",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "tsc",
|
|
21
|
+
"start": "node dist/index.js",
|
|
22
|
+
"dev": "tsc --watch",
|
|
23
|
+
"test": "vitest run",
|
|
24
|
+
"test:watch": "vitest",
|
|
25
|
+
"test:coverage": "vitest run --coverage",
|
|
26
|
+
"prepublishOnly": "npm run build && npm test"
|
|
27
|
+
},
|
|
28
|
+
"keywords": [
|
|
29
|
+
"mcp",
|
|
30
|
+
"gong",
|
|
31
|
+
"model-context-protocol",
|
|
32
|
+
"claude",
|
|
33
|
+
"anthropic",
|
|
34
|
+
"ai",
|
|
35
|
+
"transcripts",
|
|
36
|
+
"meetings"
|
|
37
|
+
],
|
|
38
|
+
"author": "Anthropic",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "https://github.com/anthropics/gong-lite.git"
|
|
43
|
+
},
|
|
44
|
+
"homepage": "https://github.com/anthropics/gong-lite#readme",
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/anthropics/gong-lite/issues"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
50
|
+
"dotenv": "^16.4.0",
|
|
51
|
+
"zod": "^3.22.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/node": "^22.0.0",
|
|
55
|
+
"typescript": "^5.7.0",
|
|
56
|
+
"vitest": "^2.1.0"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=20.0.0"
|
|
60
|
+
}
|
|
61
|
+
}
|