@bubblelab/bubble-core 0.1.8 → 0.1.10
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/dist/bubble-bundle.d.ts +333 -1438
- package/dist/bubble-factory.d.ts.map +1 -1
- package/dist/bubble-factory.js +64 -28
- package/dist/bubble-factory.js.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.d.ts +17 -1
- package/dist/bubble-flow/bubble-flow-class.d.ts.map +1 -1
- package/dist/bubble-flow/bubble-flow-class.js +16 -0
- package/dist/bubble-flow/bubble-flow-class.js.map +1 -1
- package/dist/bubble-flow/sample/data-analyst-flow.d.ts +1 -1
- package/dist/bubble-flow/sample/data-analyst-flow.d.ts.map +1 -1
- package/dist/bubble-flow/sample/error-ts.d.ts +1 -1
- package/dist/bubble-flow/sample/error-ts.d.ts.map +1 -1
- package/dist/bubble-flow/sample/sanitytest.d.ts +1 -1
- package/dist/bubble-flow/sample/sanitytest.d.ts.map +1 -1
- package/dist/bubble-flow/sample/simple-webhook-2.d.ts +1 -1
- package/dist/bubble-flow/sample/simple-webhook-2.d.ts.map +1 -1
- package/dist/bubble-flow/sample/simple-webhook.d.ts +1 -1
- package/dist/bubble-flow/sample/simple-webhook.d.ts.map +1 -1
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts +1 -1
- package/dist/bubble-flow/sample/simplified-data-analysis.flow.d.ts.map +1 -1
- package/dist/bubble-flow/sample/slack-v0.1.d.ts +1 -1
- package/dist/bubble-flow/sample/slack-v0.1.d.ts.map +1 -1
- package/dist/bubble-flow/sample/slackagenttest.d.ts +1 -1
- package/dist/bubble-flow/sample/slackagenttest.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.d.ts +115 -97
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +276 -96
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts +805 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.js +131 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-hashtag-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts +485 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.js +176 -0
- package/dist/bubbles/service-bubble/apify/actors/instagram-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts +302 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.js +138 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-posts-search.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts +642 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.js +123 -0
- package/dist/bubbles/service-bubble/apify/actors/linkedin-profile-posts.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts +184 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.js +145 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.d.ts +52 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.js +29 -0
- package/dist/bubbles/service-bubble/apify/actors/youtube-transcript-scraper.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts +1999 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js +54 -0
- package/dist/bubbles/service-bubble/apify/apify-scraper.schema.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/apify.d.ts +143 -0
- package/dist/bubbles/service-bubble/apify/apify.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/apify.js +276 -0
- package/dist/bubbles/service-bubble/apify/apify.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/index.d.ts +6 -0
- package/dist/bubbles/service-bubble/apify/index.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/index.js +6 -0
- package/dist/bubbles/service-bubble/apify/index.js.map +1 -0
- package/dist/bubbles/service-bubble/apify/types.d.ts +7 -0
- package/dist/bubbles/service-bubble/apify/types.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/apify/types.js +5 -0
- package/dist/bubbles/service-bubble/apify/types.js.map +1 -0
- package/dist/bubbles/service-bubble/gmail.d.ts +626 -132
- package/dist/bubbles/service-bubble/gmail.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/gmail.js +435 -7
- package/dist/bubbles/service-bubble/gmail.js.map +1 -1
- package/dist/bubbles/service-bubble/google-calendar.d.ts +36 -36
- package/dist/bubbles/service-bubble/google-drive.d.ts +233 -4
- package/dist/bubbles/service-bubble/google-drive.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/google-drive.js +65 -75
- package/dist/bubbles/service-bubble/google-drive.js.map +1 -1
- package/dist/bubbles/service-bubble/google-sheets.d.ts +52 -52
- package/dist/bubbles/service-bubble/hello-world.js +2 -2
- package/dist/bubbles/service-bubble/hello-world.js.map +1 -1
- package/dist/bubbles/service-bubble/http.d.ts +6 -6
- package/dist/bubbles/service-bubble/postgresql.d.ts +4 -4
- package/dist/bubbles/service-bubble/resend.d.ts +5 -5
- package/dist/bubbles/service-bubble/resend.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/resend.js +16 -5
- package/dist/bubbles/service-bubble/resend.js.map +1 -1
- package/dist/bubbles/service-bubble/slack.d.ts +18 -18
- package/dist/bubbles/service-bubble/storage.d.ts +4 -4
- package/dist/bubbles/service-bubble/storage.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/storage.js +16 -5
- package/dist/bubbles/service-bubble/storage.js.map +1 -1
- package/dist/bubbles/service-bubble/x-twitter.d.ts +814 -0
- package/dist/bubbles/service-bubble/x-twitter.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/x-twitter.js +445 -0
- package/dist/bubbles/service-bubble/x-twitter.js.map +1 -0
- package/dist/bubbles/tool-bubble/bubbleflow-validation-tool.d.ts +20 -20
- package/dist/bubbles/tool-bubble/chart-js-tool.d.ts +16 -16
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts +14 -1
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js +101 -47
- package/dist/bubbles/tool-bubble/get-bubble-details-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts +435 -0
- package/dist/bubbles/tool-bubble/instagram-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/instagram-tool.js +474 -0
- package/dist/bubbles/tool-bubble/instagram-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts +2136 -0
- package/dist/bubbles/tool-bubble/linkedin-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/linkedin-tool.js +608 -0
- package/dist/bubbles/tool-bubble/linkedin-tool.js.map +1 -0
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts +69 -64
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.js +97 -22
- package/dist/bubbles/tool-bubble/reddit-scrape-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/research-agent-tool.d.ts +6 -6
- package/dist/bubbles/tool-bubble/research-agent-tool.js +5 -5
- package/dist/bubbles/tool-bubble/research-agent-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/tool-template.d.ts +8 -8
- package/dist/bubbles/tool-bubble/web-crawl-tool.d.ts +14 -14
- package/dist/bubbles/tool-bubble/web-extract-tool.d.ts +4 -4
- package/dist/bubbles/tool-bubble/web-scrape-tool.d.ts +28 -28
- package/dist/bubbles/tool-bubble/web-scrape-tool.js +1 -1
- package/dist/bubbles/tool-bubble/web-scrape-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts +5 -4
- package/dist/bubbles/tool-bubble/web-search-tool.d.ts.map +1 -1
- package/dist/bubbles/tool-bubble/web-search-tool.js +6 -2
- package/dist/bubbles/tool-bubble/web-search-tool.js.map +1 -1
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts +394 -0
- package/dist/bubbles/tool-bubble/youtube-tool.d.ts.map +1 -0
- package/dist/bubbles/tool-bubble/youtube-tool.js +352 -0
- package/dist/bubbles/tool-bubble/youtube-tool.js.map +1 -0
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts +47 -36
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js +96 -65
- package/dist/bubbles/workflow-bubble/bubbleflow-generator.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/generate-document.workflow.d.ts +38 -38
- package/dist/bubbles/workflow-bubble/generate-document.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/generate-document.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/parse-document.workflow.d.ts +42 -42
- package/dist/bubbles/workflow-bubble/parse-document.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/parse-document.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts +22 -22
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js +1 -4
- package/dist/bubbles/workflow-bubble/pdf-form-operations.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts +60 -60
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js +2 -2
- package/dist/bubbles/workflow-bubble/pdf-ocr.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.d.ts +20 -20
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js +1 -1
- package/dist/bubbles/workflow-bubble/slack-data-assistant.workflow.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.d.ts +66 -66
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js +1 -1
- package/dist/bubbles/workflow-bubble/slack-formatter-agent.js.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts +18 -18
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.d.ts.map +1 -1
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js +1 -2
- package/dist/bubbles/workflow-bubble/slack-notifier.workflow.js.map +1 -1
- package/dist/bubbles.json +489 -0
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/logging/BubbleLogger.d.ts +11 -0
- package/dist/logging/BubbleLogger.d.ts.map +1 -1
- package/dist/logging/BubbleLogger.js +87 -33
- package/dist/logging/BubbleLogger.js.map +1 -1
- package/dist/logging/StreamingBubbleLogger.d.ts.map +1 -1
- package/dist/logging/StreamingBubbleLogger.js +23 -16
- package/dist/logging/StreamingBubbleLogger.js.map +1 -1
- package/dist/test-gm.d.ts +10 -0
- package/dist/test-gm.d.ts.map +1 -0
- package/dist/test-gm.js +95 -0
- package/dist/test-gm.js.map +1 -0
- package/dist/types/available-tools.d.ts +1 -1
- package/dist/types/available-tools.d.ts.map +1 -1
- package/dist/types/available-tools.js +2 -0
- package/dist/types/available-tools.js.map +1 -1
- package/dist/types/base-bubble-class.d.ts +6 -1
- package/dist/types/base-bubble-class.d.ts.map +1 -1
- package/dist/types/base-bubble-class.js +47 -24
- package/dist/types/base-bubble-class.js.map +1 -1
- package/dist/types/bubble.d.ts +3 -13
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/bubble.js +1 -1
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/service-bubble-class.d.ts +5 -5
- package/dist/types/service-bubble-class.d.ts.map +1 -1
- package/dist/types/service-bubble-class.js +6 -7
- package/dist/types/service-bubble-class.js.map +1 -1
- package/dist/types/tool-bubble-class.d.ts +1 -1
- package/dist/types/tool-bubble-class.d.ts.map +1 -1
- package/dist/types/tool-bubble-class.js +9 -3
- package/dist/types/tool-bubble-class.js.map +1 -1
- package/dist/types/workflow-bubble-class.d.ts +1 -1
- package/dist/types/workflow-bubble-class.d.ts.map +1 -1
- package/dist/utils/agent-formatter.d.ts +17 -0
- package/dist/utils/agent-formatter.d.ts.map +1 -0
- package/dist/utils/agent-formatter.js +139 -0
- package/dist/utils/agent-formatter.js.map +1 -0
- package/dist/utils/bubbleflow-validation.d.ts.map +1 -1
- package/dist/utils/bubbleflow-validation.js +89 -32
- package/dist/utils/bubbleflow-validation.js.map +1 -1
- package/dist/utils/error-sanitizer.d.ts +12 -0
- package/dist/utils/error-sanitizer.d.ts.map +1 -0
- package/dist/utils/error-sanitizer.js +77 -0
- package/dist/utils/error-sanitizer.js.map +1 -0
- package/dist/utils/json-parsing.d.ts +1 -0
- package/dist/utils/json-parsing.d.ts.map +1 -1
- package/dist/utils/json-parsing.js +205 -32
- package/dist/utils/json-parsing.js.map +1 -1
- package/package.json +6 -5
- package/dist/bubble-trigger/index.d.ts +0 -2
- package/dist/bubble-trigger/index.d.ts.map +0 -1
- package/dist/bubble-trigger/index.js +0 -2
- package/dist/bubble-trigger/index.js.map +0 -1
- package/dist/bubble-trigger/types.d.ts +0 -87
- package/dist/bubble-trigger/types.d.ts.map +0 -1
- package/dist/bubble-trigger/types.js +0 -14
- package/dist/bubble-trigger/types.js.map +0 -1
- package/dist/types/ai-models.d.ts +0 -4
- package/dist/types/ai-models.d.ts.map +0 -1
- package/dist/types/ai-models.js +0 -16
- package/dist/types/ai-models.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkedin-tool.d.ts","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/linkedin-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,608 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolBubble } from '../../types/tool-bubble-class.js';
|
|
3
|
+
import { CredentialType } from '@bubblelab/shared-schemas';
|
|
4
|
+
import { ApifyBubble } from '../service-bubble/apify/apify.js';
|
|
5
|
+
// Unified LinkedIn data types (service-agnostic)
|
|
6
|
+
const LinkedInAuthorSchema = z.object({
|
|
7
|
+
firstName: z.string().nullable().describe('Author first name'),
|
|
8
|
+
lastName: z.string().nullable().describe('Author last name'),
|
|
9
|
+
headline: z.string().nullable().describe('Author headline/title'),
|
|
10
|
+
username: z.string().nullable().describe('Author username'),
|
|
11
|
+
profileUrl: z.string().nullable().describe('Author profile URL'),
|
|
12
|
+
profilePicture: z.string().nullable().describe('Author profile picture URL'),
|
|
13
|
+
});
|
|
14
|
+
const LinkedInStatsSchema = z.object({
|
|
15
|
+
totalReactions: z.number().nullable().describe('Total number of reactions'),
|
|
16
|
+
like: z.number().nullable().describe('Number of likes'),
|
|
17
|
+
support: z.number().nullable().describe('Number of support reactions'),
|
|
18
|
+
love: z.number().nullable().describe('Number of love reactions'),
|
|
19
|
+
insight: z.number().nullable().describe('Number of insight reactions'),
|
|
20
|
+
celebrate: z.number().nullable().describe('Number of celebrate reactions'),
|
|
21
|
+
funny: z.number().nullable().describe('Number of funny reactions'),
|
|
22
|
+
comments: z.number().nullable().describe('Number of comments'),
|
|
23
|
+
reposts: z.number().nullable().describe('Number of reposts'),
|
|
24
|
+
});
|
|
25
|
+
const LinkedInMediaSchema = z.object({
|
|
26
|
+
type: z.string().nullable().describe('Media type (image, video, images)'),
|
|
27
|
+
url: z.string().nullable().describe('Media URL'),
|
|
28
|
+
thumbnail: z.string().nullable().describe('Media thumbnail URL'),
|
|
29
|
+
images: z
|
|
30
|
+
.array(z.object({
|
|
31
|
+
url: z.string().nullable(),
|
|
32
|
+
width: z.number().nullable(),
|
|
33
|
+
height: z.number().nullable(),
|
|
34
|
+
}))
|
|
35
|
+
.nullable()
|
|
36
|
+
.describe('Array of images for multi-image posts'),
|
|
37
|
+
});
|
|
38
|
+
const LinkedInPostedAtSchema = z.object({
|
|
39
|
+
date: z.string().nullable().describe('Post date (formatted string)'),
|
|
40
|
+
relative: z
|
|
41
|
+
.string()
|
|
42
|
+
.nullable()
|
|
43
|
+
.describe('Relative time (e.g., "2 days ago")'),
|
|
44
|
+
timestamp: z.number().nullable().describe('Unix timestamp in milliseconds'),
|
|
45
|
+
});
|
|
46
|
+
const LinkedInPostSchema = z.object({
|
|
47
|
+
urn: z.string().nullable().describe('Post URN'),
|
|
48
|
+
fullUrn: z.string().nullable().describe('Full URN with prefix'),
|
|
49
|
+
postedAt: LinkedInPostedAtSchema.nullable().describe('When post was created'),
|
|
50
|
+
text: z.string().nullable().describe('Post text content'),
|
|
51
|
+
url: z.string().nullable().describe('Post URL'),
|
|
52
|
+
postType: z.string().nullable().describe('Post type (regular, quote, etc)'),
|
|
53
|
+
author: LinkedInAuthorSchema.nullable().describe('Post author information'),
|
|
54
|
+
stats: LinkedInStatsSchema.nullable().describe('Post engagement statistics'),
|
|
55
|
+
media: LinkedInMediaSchema.nullable().describe('Post media content'),
|
|
56
|
+
article: z
|
|
57
|
+
.object({
|
|
58
|
+
url: z.string().nullable(),
|
|
59
|
+
title: z.string().nullable(),
|
|
60
|
+
subtitle: z.string().nullable(),
|
|
61
|
+
thumbnail: z.string().nullable(),
|
|
62
|
+
})
|
|
63
|
+
.nullable()
|
|
64
|
+
.describe('Shared article information'),
|
|
65
|
+
document: z
|
|
66
|
+
.object({
|
|
67
|
+
title: z.string().nullable(),
|
|
68
|
+
pageCount: z.number().nullable(),
|
|
69
|
+
url: z.string().nullable(),
|
|
70
|
+
thumbnail: z.string().nullable(),
|
|
71
|
+
})
|
|
72
|
+
.nullable()
|
|
73
|
+
.describe('Shared document information'),
|
|
74
|
+
resharedPost: z
|
|
75
|
+
.object({
|
|
76
|
+
urn: z.string().nullable(),
|
|
77
|
+
postedAt: LinkedInPostedAtSchema.nullable(),
|
|
78
|
+
text: z.string().nullable(),
|
|
79
|
+
url: z.string().nullable(),
|
|
80
|
+
postType: z.string().nullable(),
|
|
81
|
+
author: LinkedInAuthorSchema.nullable(),
|
|
82
|
+
stats: LinkedInStatsSchema.nullable(),
|
|
83
|
+
media: LinkedInMediaSchema.nullable(),
|
|
84
|
+
})
|
|
85
|
+
.nullable()
|
|
86
|
+
.describe('Original post that was reshared'),
|
|
87
|
+
});
|
|
88
|
+
// Gemini-compatible single object schema with optional fields
|
|
89
|
+
const LinkedInToolParamsSchema = z.object({
|
|
90
|
+
operation: z
|
|
91
|
+
.enum(['scrapePosts', 'searchPosts'])
|
|
92
|
+
.describe('Operation to perform: scrapePosts for user profiles, searchPosts for keyword search'),
|
|
93
|
+
// Profile scraping fields (optional)
|
|
94
|
+
username: z
|
|
95
|
+
.string()
|
|
96
|
+
.optional()
|
|
97
|
+
.describe('LinkedIn username (for scrapePosts operation). Examples: "satyanadella", "billgates"'),
|
|
98
|
+
// Search fields (optional)
|
|
99
|
+
keyword: z
|
|
100
|
+
.string()
|
|
101
|
+
.optional()
|
|
102
|
+
.describe('Keyword or phrase to search for (for searchPosts operation). Examples: "AI", "hiring", "n8n"'),
|
|
103
|
+
sortBy: z
|
|
104
|
+
.enum(['relevance', 'date_posted'])
|
|
105
|
+
.default('relevance')
|
|
106
|
+
.optional()
|
|
107
|
+
.describe('Sort results by relevance or date posted (for searchPosts operation, default: relevance)'),
|
|
108
|
+
dateFilter: z
|
|
109
|
+
.enum(['', 'past-24h', 'past-week', 'past-month'])
|
|
110
|
+
.default('')
|
|
111
|
+
.optional()
|
|
112
|
+
.describe('Filter posts by date range (for searchPosts operation, default: no filter)'),
|
|
113
|
+
// Common fields
|
|
114
|
+
limit: z
|
|
115
|
+
.number()
|
|
116
|
+
.min(1)
|
|
117
|
+
.max(100)
|
|
118
|
+
.default(50)
|
|
119
|
+
.optional()
|
|
120
|
+
.describe('Maximum number of posts to fetch (default: 50 for search, 100 for profiles)'),
|
|
121
|
+
pageNumber: z
|
|
122
|
+
.number()
|
|
123
|
+
.min(1)
|
|
124
|
+
.default(1)
|
|
125
|
+
.optional()
|
|
126
|
+
.describe('Page number for pagination (default: 1)'),
|
|
127
|
+
credentials: z
|
|
128
|
+
.record(z.nativeEnum(CredentialType), z.string())
|
|
129
|
+
.optional()
|
|
130
|
+
.describe('Required credentials (auto-injected)'),
|
|
131
|
+
});
|
|
132
|
+
// Gemini-compatible single result schema
|
|
133
|
+
const LinkedInToolResultSchema = z.object({
|
|
134
|
+
operation: z
|
|
135
|
+
.enum(['scrapePosts', 'searchPosts'])
|
|
136
|
+
.describe('Operation that was performed'),
|
|
137
|
+
// Posts data (always present)
|
|
138
|
+
posts: z.array(LinkedInPostSchema).describe('Array of LinkedIn posts'),
|
|
139
|
+
// Profile data (only for scrapePosts operation)
|
|
140
|
+
username: z
|
|
141
|
+
.string()
|
|
142
|
+
.optional()
|
|
143
|
+
.describe('LinkedIn username that was scraped (only for scrapePosts operation)'),
|
|
144
|
+
paginationToken: z
|
|
145
|
+
.string()
|
|
146
|
+
.nullable()
|
|
147
|
+
.optional()
|
|
148
|
+
.describe('Token for fetching next page of results (only for scrapePosts operation)'),
|
|
149
|
+
// Search data (only for searchPosts operation)
|
|
150
|
+
keyword: z
|
|
151
|
+
.string()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe('Search keyword that was used (only for searchPosts operation)'),
|
|
154
|
+
totalResults: z
|
|
155
|
+
.number()
|
|
156
|
+
.nullable()
|
|
157
|
+
.optional()
|
|
158
|
+
.describe('Total results available (only for searchPosts operation)'),
|
|
159
|
+
hasNextPage: z
|
|
160
|
+
.boolean()
|
|
161
|
+
.nullable()
|
|
162
|
+
.optional()
|
|
163
|
+
.describe('Whether there are more results (only for searchPosts operation)'),
|
|
164
|
+
// Common fields
|
|
165
|
+
totalPosts: z.number().describe('Total number of posts found'),
|
|
166
|
+
success: z.boolean().describe('Whether the operation was successful'),
|
|
167
|
+
error: z.string().describe('Error message if operation failed'),
|
|
168
|
+
});
|
|
169
|
+
/**
|
|
170
|
+
* LinkedIn scraping tool with multiple operations
|
|
171
|
+
*
|
|
172
|
+
* This tool provides a simple interface for scraping LinkedIn data.
|
|
173
|
+
*
|
|
174
|
+
* Operations:
|
|
175
|
+
* 1. scrapePosts - Scrape posts from a specific LinkedIn profile
|
|
176
|
+
* 2. searchPosts - Search for LinkedIn posts by keyword
|
|
177
|
+
*
|
|
178
|
+
* Features:
|
|
179
|
+
* - Get complete post metadata (text, engagement stats, media, etc.)
|
|
180
|
+
* - Support for all post types (regular, quotes, articles, documents)
|
|
181
|
+
* - Pagination support
|
|
182
|
+
* - Date filtering for search
|
|
183
|
+
*/
|
|
184
|
+
export class LinkedInTool extends ToolBubble {
|
|
185
|
+
// Required static metadata
|
|
186
|
+
static bubbleName = 'linkedin-tool';
|
|
187
|
+
static schema = LinkedInToolParamsSchema;
|
|
188
|
+
static resultSchema = LinkedInToolResultSchema;
|
|
189
|
+
static shortDescription = 'Scrape LinkedIn posts by profile or search by keyword. Get engagement metrics, media, and complete metadata.';
|
|
190
|
+
static longDescription = `
|
|
191
|
+
Universal LinkedIn scraping tool for extracting posts and activity data.
|
|
192
|
+
|
|
193
|
+
**OPERATIONS:**
|
|
194
|
+
1. **scrapePosts**: Scrape posts from a LinkedIn profile
|
|
195
|
+
- Get posts from specific users
|
|
196
|
+
- Extract author information and post metadata
|
|
197
|
+
- Track reactions, comments, and reposts
|
|
198
|
+
- Support for articles, documents, and reshared content
|
|
199
|
+
|
|
200
|
+
2. **searchPosts**: Search LinkedIn posts by keyword
|
|
201
|
+
- Find posts across all of LinkedIn by keyword
|
|
202
|
+
- Filter by date (past 24h, week, month)
|
|
203
|
+
- Sort by relevance or date
|
|
204
|
+
- Perfect for monitoring topics, trends, and mentions
|
|
205
|
+
|
|
206
|
+
**WHEN TO USE THIS TOOL:**
|
|
207
|
+
- **LinkedIn profile research** - analyze someone's LinkedIn activity
|
|
208
|
+
- **Content strategy** - research what content performs well
|
|
209
|
+
- **Influencer analysis** - track thought leaders and their engagement
|
|
210
|
+
- **Competitive intelligence** - monitor competitor LinkedIn presence
|
|
211
|
+
- **Lead generation** - identify active LinkedIn users in your space
|
|
212
|
+
- **Social listening** - track discussions and trends on LinkedIn
|
|
213
|
+
|
|
214
|
+
**DO NOT USE research-agent-tool or web-scrape-tool for LinkedIn** - This tool is specifically optimized for LinkedIn and provides:
|
|
215
|
+
- Clean, structured post data ready for analysis
|
|
216
|
+
- Complete engagement metrics (reactions, comments, reposts)
|
|
217
|
+
- Support for all LinkedIn post types
|
|
218
|
+
- Automatic pagination handling
|
|
219
|
+
- Rate limiting and reliability
|
|
220
|
+
|
|
221
|
+
**Simple Interface:**
|
|
222
|
+
Just provide a LinkedIn username to get back all their recent posts with complete metadata.
|
|
223
|
+
The tool automatically handles:
|
|
224
|
+
- Authentication with Apify
|
|
225
|
+
- Data transformation to unified format
|
|
226
|
+
- Error handling and retries
|
|
227
|
+
- Pagination token management
|
|
228
|
+
|
|
229
|
+
**What you get:**
|
|
230
|
+
- Post text and metadata (URN, URL, type, timestamp)
|
|
231
|
+
- Complete engagement statistics (likes, comments, reposts, all reaction types)
|
|
232
|
+
- Author information (name, headline, profile URL, picture)
|
|
233
|
+
- Media content (images, videos, documents, articles)
|
|
234
|
+
- Reshared post data (for quote posts)
|
|
235
|
+
|
|
236
|
+
**Use cases:**
|
|
237
|
+
- Influencer and thought leader tracking
|
|
238
|
+
- Content performance analysis
|
|
239
|
+
- Competitive research on LinkedIn
|
|
240
|
+
- Lead generation and prospecting
|
|
241
|
+
- Brand monitoring and reputation management
|
|
242
|
+
- Recruitment and talent sourcing
|
|
243
|
+
- Partnership and collaboration discovery
|
|
244
|
+
|
|
245
|
+
The tool uses Apify's LinkedIn scraper behind the scenes while maintaining a clean, consistent interface.
|
|
246
|
+
`;
|
|
247
|
+
static alias = 'li';
|
|
248
|
+
static type = 'tool';
|
|
249
|
+
constructor(params = {
|
|
250
|
+
operation: 'scrapePosts',
|
|
251
|
+
username: 'satyanadella',
|
|
252
|
+
limit: 100,
|
|
253
|
+
}, context) {
|
|
254
|
+
super(params, context);
|
|
255
|
+
}
|
|
256
|
+
async performAction() {
|
|
257
|
+
const credentials = this.params?.credentials;
|
|
258
|
+
if (!credentials || !credentials[CredentialType.APIFY_CRED]) {
|
|
259
|
+
return this.createErrorResult('LinkedIn scraping requires authentication. Please configure APIFY_CRED.');
|
|
260
|
+
}
|
|
261
|
+
try {
|
|
262
|
+
const { operation } = this.params;
|
|
263
|
+
// Validate required fields based on operation
|
|
264
|
+
if (operation === 'scrapePosts' &&
|
|
265
|
+
(!this.params.username || this.params.username.length === 0)) {
|
|
266
|
+
return this.createErrorResult('Username is required for scrapePosts operation');
|
|
267
|
+
}
|
|
268
|
+
if (operation === 'searchPosts' &&
|
|
269
|
+
(!this.params.keyword || this.params.keyword.length === 0)) {
|
|
270
|
+
return this.createErrorResult('Keyword is required for searchPosts operation');
|
|
271
|
+
}
|
|
272
|
+
const result = await (async () => {
|
|
273
|
+
switch (operation) {
|
|
274
|
+
case 'scrapePosts':
|
|
275
|
+
return await this.handleScrapePosts(this.params);
|
|
276
|
+
case 'searchPosts':
|
|
277
|
+
return await this.handleSearchPosts(this.params);
|
|
278
|
+
default:
|
|
279
|
+
throw new Error(`Unsupported operation: ${operation}`);
|
|
280
|
+
}
|
|
281
|
+
})();
|
|
282
|
+
return result;
|
|
283
|
+
}
|
|
284
|
+
catch (error) {
|
|
285
|
+
return this.createErrorResult(error instanceof Error ? error.message : 'Unknown error occurred');
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Create an error result
|
|
290
|
+
*/
|
|
291
|
+
createErrorResult(errorMessage) {
|
|
292
|
+
const { operation } = this.params;
|
|
293
|
+
return {
|
|
294
|
+
operation: operation || 'scrapePosts',
|
|
295
|
+
posts: [],
|
|
296
|
+
username: operation === 'scrapePosts' ? this.params.username || '' : undefined,
|
|
297
|
+
paginationToken: operation === 'scrapePosts' ? null : undefined,
|
|
298
|
+
keyword: operation === 'searchPosts' ? this.params.keyword || '' : undefined,
|
|
299
|
+
totalResults: operation === 'searchPosts' ? null : undefined,
|
|
300
|
+
hasNextPage: operation === 'searchPosts' ? null : undefined,
|
|
301
|
+
totalPosts: 0,
|
|
302
|
+
success: false,
|
|
303
|
+
error: errorMessage,
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Handle scrapePosts operation
|
|
308
|
+
*/
|
|
309
|
+
async handleScrapePosts(params) {
|
|
310
|
+
// Use Apify service to scrape LinkedIn posts
|
|
311
|
+
const linkedinPostScraper = new ApifyBubble({
|
|
312
|
+
actorId: 'apimaestro/linkedin-profile-posts',
|
|
313
|
+
input: {
|
|
314
|
+
username: params.username,
|
|
315
|
+
limit: params.limit || 100,
|
|
316
|
+
page_number: params.pageNumber || 1,
|
|
317
|
+
},
|
|
318
|
+
waitForFinish: true,
|
|
319
|
+
timeout: 180000, // 3 minutes
|
|
320
|
+
credentials: params.credentials,
|
|
321
|
+
}, this.context);
|
|
322
|
+
const apifyResult = await linkedinPostScraper.action();
|
|
323
|
+
if (!apifyResult.data.success) {
|
|
324
|
+
return {
|
|
325
|
+
operation: 'scrapePosts',
|
|
326
|
+
posts: [],
|
|
327
|
+
username: params.username,
|
|
328
|
+
paginationToken: null,
|
|
329
|
+
totalPosts: 0,
|
|
330
|
+
success: false,
|
|
331
|
+
error: apifyResult.data.error ||
|
|
332
|
+
'Failed to scrape LinkedIn posts. Please try again.',
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
const items = apifyResult.data.items || [];
|
|
336
|
+
// The actor returns posts directly in the items array
|
|
337
|
+
if (items.length === 0) {
|
|
338
|
+
return {
|
|
339
|
+
operation: 'scrapePosts',
|
|
340
|
+
posts: [],
|
|
341
|
+
username: params.username,
|
|
342
|
+
paginationToken: null,
|
|
343
|
+
totalPosts: 0,
|
|
344
|
+
success: false,
|
|
345
|
+
error: 'No posts found. The profile may be private or have no public posts.',
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
// Transform posts to unified format - items ARE the posts
|
|
349
|
+
const posts = this.transformPosts(items);
|
|
350
|
+
return {
|
|
351
|
+
operation: 'scrapePosts',
|
|
352
|
+
posts,
|
|
353
|
+
username: params.username,
|
|
354
|
+
paginationToken: null,
|
|
355
|
+
totalPosts: posts.length,
|
|
356
|
+
success: true,
|
|
357
|
+
error: '',
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Transform LinkedIn posts from Apify format to unified format
|
|
362
|
+
*/
|
|
363
|
+
transformPosts(posts) {
|
|
364
|
+
return posts.map((post) => ({
|
|
365
|
+
urn: post.urn?.activity_urn ||
|
|
366
|
+
post.urn?.share_urn ||
|
|
367
|
+
post.urn?.ugcPost_urn ||
|
|
368
|
+
null,
|
|
369
|
+
fullUrn: post.full_urn || null,
|
|
370
|
+
postedAt: post.posted_at
|
|
371
|
+
? {
|
|
372
|
+
date: post.posted_at.date || null,
|
|
373
|
+
relative: post.posted_at.relative || null,
|
|
374
|
+
timestamp: post.posted_at.timestamp || null,
|
|
375
|
+
}
|
|
376
|
+
: null,
|
|
377
|
+
text: post.text || null,
|
|
378
|
+
url: post.url || null,
|
|
379
|
+
postType: post.post_type || null,
|
|
380
|
+
author: post.author
|
|
381
|
+
? {
|
|
382
|
+
firstName: post.author.first_name || null,
|
|
383
|
+
lastName: post.author.last_name || null,
|
|
384
|
+
headline: post.author.headline || null,
|
|
385
|
+
username: post.author.username || null,
|
|
386
|
+
profileUrl: post.author.profile_url || null,
|
|
387
|
+
profilePicture: post.author.profile_picture || null,
|
|
388
|
+
}
|
|
389
|
+
: null,
|
|
390
|
+
stats: post.stats
|
|
391
|
+
? {
|
|
392
|
+
totalReactions: post.stats.total_reactions || null,
|
|
393
|
+
like: post.stats.like || null,
|
|
394
|
+
support: post.stats.support || null,
|
|
395
|
+
love: post.stats.love || null,
|
|
396
|
+
insight: post.stats.insight || null,
|
|
397
|
+
celebrate: post.stats.celebrate || null,
|
|
398
|
+
funny: post.stats.funny || null,
|
|
399
|
+
comments: post.stats.comments || null,
|
|
400
|
+
reposts: post.stats.reposts || null,
|
|
401
|
+
}
|
|
402
|
+
: null,
|
|
403
|
+
media: post.media
|
|
404
|
+
? {
|
|
405
|
+
type: post.media.type || null,
|
|
406
|
+
url: post.media.url || null,
|
|
407
|
+
thumbnail: post.media.thumbnail || null,
|
|
408
|
+
images: post.media.images
|
|
409
|
+
? post.media.images.map((img) => ({
|
|
410
|
+
url: img.url || null,
|
|
411
|
+
width: img.width || null,
|
|
412
|
+
height: img.height || null,
|
|
413
|
+
}))
|
|
414
|
+
: null,
|
|
415
|
+
}
|
|
416
|
+
: null,
|
|
417
|
+
article: post.article
|
|
418
|
+
? {
|
|
419
|
+
url: post.article.url || null,
|
|
420
|
+
title: post.article.title || null,
|
|
421
|
+
subtitle: post.article.subtitle || null,
|
|
422
|
+
thumbnail: post.article.thumbnail || null,
|
|
423
|
+
}
|
|
424
|
+
: null,
|
|
425
|
+
document: post.document
|
|
426
|
+
? {
|
|
427
|
+
title: post.document.title || null,
|
|
428
|
+
pageCount: post.document.page_count || null,
|
|
429
|
+
url: post.document.url || null,
|
|
430
|
+
thumbnail: post.document.thumbnail || null,
|
|
431
|
+
}
|
|
432
|
+
: null,
|
|
433
|
+
resharedPost: post.reshared_post
|
|
434
|
+
? {
|
|
435
|
+
urn: typeof post.reshared_post.urn === 'object'
|
|
436
|
+
? post.reshared_post.urn?.activity_urn ||
|
|
437
|
+
post.reshared_post.urn?.ugcPost_urn ||
|
|
438
|
+
null
|
|
439
|
+
: post.reshared_post.urn || null,
|
|
440
|
+
postedAt: post.reshared_post.posted_at
|
|
441
|
+
? {
|
|
442
|
+
date: post.reshared_post.posted_at.date || null,
|
|
443
|
+
relative: post.reshared_post.posted_at.relative || null,
|
|
444
|
+
timestamp: post.reshared_post.posted_at.timestamp || null,
|
|
445
|
+
}
|
|
446
|
+
: null,
|
|
447
|
+
text: post.reshared_post.text || null,
|
|
448
|
+
url: post.reshared_post.url || null,
|
|
449
|
+
postType: post.reshared_post.post_type || null,
|
|
450
|
+
author: post.reshared_post.author
|
|
451
|
+
? {
|
|
452
|
+
firstName: post.reshared_post.author.first_name || null,
|
|
453
|
+
lastName: post.reshared_post.author.last_name || null,
|
|
454
|
+
headline: post.reshared_post.author.headline || null,
|
|
455
|
+
username: post.reshared_post.author.username || null,
|
|
456
|
+
profileUrl: post.reshared_post.author.profile_url || null,
|
|
457
|
+
profilePicture: post.reshared_post.author.profile_picture || null,
|
|
458
|
+
}
|
|
459
|
+
: null,
|
|
460
|
+
stats: post.reshared_post.stats
|
|
461
|
+
? {
|
|
462
|
+
totalReactions: post.reshared_post.stats.total_reactions || null,
|
|
463
|
+
like: post.reshared_post.stats.like || null,
|
|
464
|
+
support: post.reshared_post.stats.support || null,
|
|
465
|
+
love: post.reshared_post.stats.love || null,
|
|
466
|
+
insight: post.reshared_post.stats.insight || null,
|
|
467
|
+
celebrate: post.reshared_post.stats.celebrate || null,
|
|
468
|
+
funny: post.reshared_post.stats.funny || null,
|
|
469
|
+
comments: post.reshared_post.stats.comments || null,
|
|
470
|
+
reposts: post.reshared_post.stats.reposts || null,
|
|
471
|
+
}
|
|
472
|
+
: null,
|
|
473
|
+
media: post.reshared_post.media
|
|
474
|
+
? {
|
|
475
|
+
type: post.reshared_post.media.type || null,
|
|
476
|
+
url: post.reshared_post.media.url || null,
|
|
477
|
+
thumbnail: post.reshared_post.media.thumbnail || null,
|
|
478
|
+
images: null, // Reshared posts don't include multi-image data
|
|
479
|
+
}
|
|
480
|
+
: null,
|
|
481
|
+
}
|
|
482
|
+
: null,
|
|
483
|
+
}));
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Handle searchPosts operation
|
|
487
|
+
*/
|
|
488
|
+
async handleSearchPosts(params) {
|
|
489
|
+
// Use Apify service to search LinkedIn posts
|
|
490
|
+
const linkedinPostSearcher = new ApifyBubble({
|
|
491
|
+
actorId: 'apimaestro/linkedin-posts-search-scraper-no-cookies',
|
|
492
|
+
input: {
|
|
493
|
+
keyword: params.keyword,
|
|
494
|
+
sort_type: params.sortBy || 'relevance',
|
|
495
|
+
date_filter: params.dateFilter || '',
|
|
496
|
+
page_number: params.pageNumber || 1,
|
|
497
|
+
limit: params.limit || 50,
|
|
498
|
+
},
|
|
499
|
+
waitForFinish: true,
|
|
500
|
+
timeout: 180000,
|
|
501
|
+
credentials: params.credentials,
|
|
502
|
+
}, this.context);
|
|
503
|
+
const apifyResult = await linkedinPostSearcher.action();
|
|
504
|
+
if (!apifyResult.data.success) {
|
|
505
|
+
return {
|
|
506
|
+
operation: 'searchPosts',
|
|
507
|
+
posts: [],
|
|
508
|
+
keyword: params.keyword,
|
|
509
|
+
totalResults: null,
|
|
510
|
+
hasNextPage: null,
|
|
511
|
+
totalPosts: 0,
|
|
512
|
+
success: false,
|
|
513
|
+
error: apifyResult.data.error ||
|
|
514
|
+
'Failed to search LinkedIn posts. Please try again.',
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
const items = apifyResult.data.items || [];
|
|
518
|
+
if (items.length === 0) {
|
|
519
|
+
return {
|
|
520
|
+
operation: 'searchPosts',
|
|
521
|
+
posts: [],
|
|
522
|
+
keyword: params.keyword,
|
|
523
|
+
totalResults: 0,
|
|
524
|
+
hasNextPage: false,
|
|
525
|
+
totalPosts: 0,
|
|
526
|
+
success: true,
|
|
527
|
+
error: '',
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
// Transform search results to unified format
|
|
531
|
+
const posts = this.transformSearchResults(items);
|
|
532
|
+
// Get metadata from first item (all items have the same metadata)
|
|
533
|
+
const metadata = items[0].metadata;
|
|
534
|
+
return {
|
|
535
|
+
operation: 'searchPosts',
|
|
536
|
+
posts,
|
|
537
|
+
keyword: params.keyword,
|
|
538
|
+
totalResults: metadata?.total_count || null,
|
|
539
|
+
hasNextPage: metadata?.has_next_page || null,
|
|
540
|
+
totalPosts: posts.length,
|
|
541
|
+
success: true,
|
|
542
|
+
error: '',
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Transform search results to unified post format
|
|
547
|
+
*/
|
|
548
|
+
transformSearchResults(items) {
|
|
549
|
+
return items.map((item) => ({
|
|
550
|
+
urn: item.activity_id || null,
|
|
551
|
+
fullUrn: item.full_urn || null,
|
|
552
|
+
postedAt: item.posted_at
|
|
553
|
+
? {
|
|
554
|
+
date: item.posted_at.date || null,
|
|
555
|
+
relative: item.posted_at.display_text || null,
|
|
556
|
+
timestamp: item.posted_at.timestamp || null,
|
|
557
|
+
}
|
|
558
|
+
: null,
|
|
559
|
+
text: item.text || null,
|
|
560
|
+
url: item.post_url || null,
|
|
561
|
+
postType: item.is_reshare ? 'repost' : 'regular',
|
|
562
|
+
author: item.author
|
|
563
|
+
? {
|
|
564
|
+
firstName: item.author.name?.split(' ')[0] || null,
|
|
565
|
+
lastName: item.author.name?.split(' ')[1] || null,
|
|
566
|
+
headline: item.author.headline || null,
|
|
567
|
+
username: item.author.profile_id || null,
|
|
568
|
+
profileUrl: item.author.profile_url || null,
|
|
569
|
+
profilePicture: item.author.image_url || null,
|
|
570
|
+
}
|
|
571
|
+
: null,
|
|
572
|
+
stats: item.stats
|
|
573
|
+
? {
|
|
574
|
+
totalReactions: item.stats.total_reactions || null,
|
|
575
|
+
like: this.getReactionCount(item.stats.reactions, 'LIKE'),
|
|
576
|
+
support: this.getReactionCount(item.stats.reactions, 'EMPATHY'),
|
|
577
|
+
love: this.getReactionCount(item.stats.reactions || [], 'LOVE'),
|
|
578
|
+
insight: this.getReactionCount(item.stats.reactions || [], 'INTEREST'),
|
|
579
|
+
celebrate: this.getReactionCount(item.stats.reactions || [], 'PRAISE'),
|
|
580
|
+
funny: this.getReactionCount(item.stats.reactions || [], 'FUNNY'),
|
|
581
|
+
comments: item.stats.comments || null,
|
|
582
|
+
reposts: item.stats.shares || null,
|
|
583
|
+
}
|
|
584
|
+
: null,
|
|
585
|
+
media: null, // Search results don't include detailed media info
|
|
586
|
+
article: item.content?.type === 'article' && item.content.article
|
|
587
|
+
? {
|
|
588
|
+
url: item.content.article.url || null,
|
|
589
|
+
title: item.content.article.title || null,
|
|
590
|
+
subtitle: item.content.article.subtitle || null,
|
|
591
|
+
thumbnail: item.content.article.thumbnail || null,
|
|
592
|
+
}
|
|
593
|
+
: null,
|
|
594
|
+
document: null, // Search results don't include document info
|
|
595
|
+
resharedPost: null, // Search results don't include nested reshare details
|
|
596
|
+
}));
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Helper to get reaction count by type from reactions array
|
|
600
|
+
*/
|
|
601
|
+
getReactionCount(reactions, type) {
|
|
602
|
+
if (!reactions || !reactions.length)
|
|
603
|
+
return null;
|
|
604
|
+
const reaction = reactions.find((r) => r.type === type);
|
|
605
|
+
return reaction ? reaction.count || null : null;
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
//# sourceMappingURL=linkedin-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkedin-tool.js","sourceRoot":"","sources":["../../../src/bubbles/tool-bubble/linkedin-tool.ts"],"names":[],"mappings":"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"}
|