n8n-nodes-lumify 0.1.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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lumify
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,130 @@
1
+ # n8n-nodes-lumify
2
+
3
+ This is an n8n community node for [Lumify](https://lumify.ai) - AI-powered search and research APIs.
4
+
5
+ Lumify provides two powerful capabilities:
6
+ - **Search**: AI-powered search across your indexed website content
7
+ - **Last 30 Days**: Research-grade trend analysis from social media and web discussions
8
+
9
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform.
10
+
11
+ ## Installation
12
+
13
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation.
14
+
15
+ ### In n8n Desktop/Cloud
16
+
17
+ 1. Go to **Settings > Community Nodes**
18
+ 2. Select **Install**
19
+ 3. Enter `n8n-nodes-lumify`
20
+ 4. Agree to the risks and select **Install**
21
+
22
+ ### Self-hosted n8n
23
+
24
+ ```bash
25
+ npm install n8n-nodes-lumify
26
+ ```
27
+
28
+ ## Prerequisites
29
+
30
+ - A [Lumify account](https://www.lumify.ai/beta-signup) (free to sign up)
31
+ - Your API Key from the [Lumify Dashboard](https://www.lumify.ai/app/api-keys)
32
+ - For Search: An Application ID from your dashboard
33
+
34
+ ## Operations
35
+
36
+ ### Search
37
+
38
+ Query your indexed website content and get AI-generated answers with source citations.
39
+
40
+ **Required:**
41
+ - API Key
42
+ - Application ID
43
+ - Query (the search question)
44
+
45
+ **Options:**
46
+ - **Answer Mode**: Cache high-confidence answers for faster responses (default: true)
47
+ - **Similar Questions**: Return related questions from your knowledge base (default: false)
48
+
49
+ **Response includes:**
50
+ - AI-generated answer
51
+ - Source URLs with titles and relevance scores
52
+ - Confidence score (0.0 - 1.0)
53
+ - Similar questions (if enabled)
54
+ - Call-to-action links (when intent is detected)
55
+
56
+ ### Last 30 Days
57
+
58
+ Research trends and synthesize discussions from Twitter/X, Reddit, and web sources into actionable intelligence.
59
+
60
+ **Required:**
61
+ - API Key
62
+ - Topic (the subject to research, max 200 characters)
63
+
64
+ **Options:**
65
+ - **Sources**: Data sources to query - Twitter/X, Reddit, Web (default: all three)
66
+ - **Days**: Number of days to look back, 1-30 (default: 30)
67
+ - **Max Results**: Maximum evidence items per source, 5-50 (default: 20)
68
+ - **Output Format**:
69
+ - `summary` - Markdown-formatted narrative (default)
70
+ - `bullets` - Structured bullet points
71
+ - `json` - Fully structured data
72
+
73
+ **Response includes:**
74
+ - Synthesized research brief with patterns, insights, and gotchas
75
+ - Evidence count and source breakdown
76
+ - Confidence score
77
+ - Execution metadata (time, tokens used)
78
+
79
+ ## Credentials
80
+
81
+ ### Setting up Lumify Credentials
82
+
83
+ 1. [Sign up for Lumify](https://www.lumify.ai/beta-signup) if you haven't already
84
+ 2. Go to your [API Keys page](https://www.lumify.ai/app/api-keys)
85
+ 3. Copy your **API Key** (format: `lmfy-xxxxx`)
86
+ 4. If using Search, copy your **Application ID** from the dashboard
87
+
88
+ In n8n:
89
+ 1. Go to **Credentials**
90
+ 2. Select **New Credential**
91
+ 3. Search for **Lumify API**
92
+ 4. Enter your API Key (required)
93
+ 5. Enter your Application ID (required for Search, optional for Last 30 Days)
94
+
95
+ ## Example Workflows
96
+
97
+ ### AI-Powered FAQ Bot
98
+
99
+ 1. **Trigger**: Webhook receives a user question
100
+ 2. **Lumify Search**: Query your knowledge base
101
+ 3. **IF**: Check confidence score
102
+ 4. **Respond**: Return answer or escalate to human
103
+
104
+ ### Weekly Trend Report
105
+
106
+ 1. **Schedule Trigger**: Every Monday at 9am
107
+ 2. **Lumify Last 30 Days**: Research your industry topic
108
+ 3. **Slack/Email**: Send the synthesized brief to your team
109
+
110
+ ### Content Research Pipeline
111
+
112
+ 1. **Form Trigger**: Content team submits a topic
113
+ 2. **Lumify Last 30 Days**: Research current discussions
114
+ 3. **Google Docs**: Create a research document
115
+ 4. **Notify**: Alert the team it's ready
116
+
117
+ ## Resources
118
+
119
+ - [Lumify Documentation](https://docs.lumify.ai)
120
+ - [Search API Reference](https://docs.lumify.ai/search-api)
121
+ - [n8n Community Nodes Documentation](https://docs.n8n.io/integrations/community-nodes/)
122
+
123
+ ## Support
124
+
125
+ - For Lumify issues: [Contact Lumify Support](https://www.lumify.ai/contact-us)
126
+ - For node issues: [Open an issue](https://github.com/lumifyai/n8n-nodes-lumify/issues)
127
+
128
+ ## License
129
+
130
+ [MIT](LICENSE)
@@ -0,0 +1,9 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class LumifyApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ authenticate: IAuthenticateGeneric;
8
+ test: ICredentialTestRequest;
9
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LumifyApi = void 0;
4
+ class LumifyApi {
5
+ name = 'lumifyApi';
6
+ displayName = 'Lumify API';
7
+ documentationUrl = 'https://docs.lumify.ai';
8
+ properties = [
9
+ {
10
+ displayName: 'API Key',
11
+ name: 'apiKey',
12
+ type: 'string',
13
+ typeOptions: {
14
+ password: true,
15
+ },
16
+ default: '',
17
+ required: true,
18
+ description: 'Your Lumify API key (format: lmfy-xxxxx). Get it from your <a href="https://www.lumify.ai/app/api-keys" target="_blank">Lumify Dashboard</a>.',
19
+ },
20
+ {
21
+ displayName: 'Application ID',
22
+ name: 'appId',
23
+ type: 'string',
24
+ default: '',
25
+ required: false,
26
+ description: 'Your Application ID (required for Search operation). Find it in your <a href="https://www.lumify.ai/app/" target="_blank">Lumify Dashboard</a>.',
27
+ },
28
+ ];
29
+ authenticate = {
30
+ type: 'generic',
31
+ properties: {
32
+ headers: {
33
+ Authorization: '=Bearer {{$credentials.apiKey}}',
34
+ },
35
+ },
36
+ };
37
+ test = {
38
+ request: {
39
+ baseURL: 'https://lumify.ai/api/v1',
40
+ url: '/skills/last30days',
41
+ method: 'POST',
42
+ headers: {
43
+ 'Content-Type': 'application/json',
44
+ },
45
+ body: {
46
+ topic: 'test',
47
+ days: 1,
48
+ max_results: 5,
49
+ },
50
+ },
51
+ };
52
+ }
53
+ exports.LumifyApi = LumifyApi;
54
+ //# sourceMappingURL=LumifyApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LumifyApi.credentials.js","sourceRoot":"","sources":["../../credentials/LumifyApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IACpB,IAAI,GAAG,WAAW,CAAC;IACnB,WAAW,GAAG,YAAY,CAAC;IAC3B,gBAAgB,GAAG,wBAAwB,CAAC;IAE5C,UAAU,GAAsB;QAC9B;YACE,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE;gBACX,QAAQ,EAAE,IAAI;aACf;YACD,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,+IAA+I;SAC7J;QACD;YACE,WAAW,EAAE,gBAAgB;YAC7B,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,KAAK;YACf,WAAW,EAAE,iJAAiJ;SAC/J;KACF,CAAC;IAEF,YAAY,GAAyB;QACnC,IAAI,EAAE,SAAS;QACf,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,aAAa,EAAE,iCAAiC;aACjD;SACF;KACF,CAAC;IAEF,IAAI,GAA2B;QAC7B,OAAO,EAAE;YACP,OAAO,EAAE,0BAA0B;YACnC,GAAG,EAAE,oBAAoB;YACzB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,CAAC;gBACP,WAAW,EAAE,CAAC;aACf;SACF;KACF,CAAC;CACH;AAnDD,8BAmDC"}
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Lumify implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Lumify = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ class Lumify {
6
+ description = {
7
+ displayName: 'Lumify',
8
+ name: 'lumify',
9
+ icon: 'file:lumify.svg',
10
+ group: ['transform'],
11
+ version: 1,
12
+ subtitle: '={{$parameter["operation"]}}',
13
+ description: 'AI-powered search and research APIs from Lumify',
14
+ defaults: {
15
+ name: 'Lumify',
16
+ },
17
+ inputs: ['main'],
18
+ outputs: ['main'],
19
+ credentials: [
20
+ {
21
+ name: 'lumifyApi',
22
+ required: true,
23
+ },
24
+ ],
25
+ requestDefaults: {
26
+ baseURL: 'https://lumify.ai/api/v1',
27
+ headers: {
28
+ 'Content-Type': 'application/json',
29
+ },
30
+ },
31
+ properties: [
32
+ // ----------------------------------
33
+ // Operation Selection
34
+ // ----------------------------------
35
+ {
36
+ displayName: 'Operation',
37
+ name: 'operation',
38
+ type: 'options',
39
+ noDataExpression: true,
40
+ options: [
41
+ {
42
+ name: 'Search',
43
+ value: 'search',
44
+ description: 'Search your indexed website content and get AI-generated answers',
45
+ action: 'Search your indexed content',
46
+ },
47
+ {
48
+ name: 'Last 30 Days',
49
+ value: 'last30days',
50
+ description: 'Research trends and discussions from social media and web sources',
51
+ action: 'Research trends from the last 30 days',
52
+ },
53
+ ],
54
+ default: 'search',
55
+ },
56
+ // ----------------------------------
57
+ // Search Operation
58
+ // ----------------------------------
59
+ {
60
+ displayName: 'Query',
61
+ name: 'query',
62
+ type: 'string',
63
+ default: '',
64
+ required: true,
65
+ displayOptions: {
66
+ show: {
67
+ operation: ['search'],
68
+ },
69
+ },
70
+ description: 'The search query or natural language question',
71
+ placeholder: 'e.g., How do I reset my password?',
72
+ },
73
+ {
74
+ displayName: 'Options',
75
+ name: 'searchOptions',
76
+ type: 'collection',
77
+ placeholder: 'Add Option',
78
+ default: {},
79
+ displayOptions: {
80
+ show: {
81
+ operation: ['search'],
82
+ },
83
+ },
84
+ options: [
85
+ {
86
+ displayName: 'Answer Mode',
87
+ name: 'answer_mode',
88
+ type: 'boolean',
89
+ default: true,
90
+ description: 'Whether to cache high-confidence answers for faster future responses',
91
+ },
92
+ {
93
+ displayName: 'Similar Questions',
94
+ name: 'similar_questions',
95
+ type: 'boolean',
96
+ default: false,
97
+ description: 'Whether to return similar questions from your knowledge base',
98
+ },
99
+ ],
100
+ },
101
+ // ----------------------------------
102
+ // Last30Days Operation
103
+ // ----------------------------------
104
+ {
105
+ displayName: 'Topic',
106
+ name: 'topic',
107
+ type: 'string',
108
+ default: '',
109
+ required: true,
110
+ displayOptions: {
111
+ show: {
112
+ operation: ['last30days'],
113
+ },
114
+ },
115
+ description: 'The topic to research (max 200 characters)',
116
+ placeholder: 'e.g., React Server Components',
117
+ },
118
+ {
119
+ displayName: 'Options',
120
+ name: 'last30daysOptions',
121
+ type: 'collection',
122
+ placeholder: 'Add Option',
123
+ default: {},
124
+ displayOptions: {
125
+ show: {
126
+ operation: ['last30days'],
127
+ },
128
+ },
129
+ options: [
130
+ {
131
+ displayName: 'Sources',
132
+ name: 'sources',
133
+ type: 'multiOptions',
134
+ options: [
135
+ {
136
+ name: 'Reddit',
137
+ value: 'reddit',
138
+ },
139
+ {
140
+ name: 'Twitter/X',
141
+ value: 'twitter',
142
+ },
143
+ {
144
+ name: 'Web',
145
+ value: 'web',
146
+ },
147
+ ],
148
+ default: ['twitter', 'reddit', 'web'],
149
+ description: 'Data sources to query for research',
150
+ },
151
+ {
152
+ displayName: 'Days',
153
+ name: 'days',
154
+ type: 'number',
155
+ typeOptions: {
156
+ minValue: 1,
157
+ maxValue: 30,
158
+ },
159
+ default: 30,
160
+ description: 'Number of days to look back (1-30)',
161
+ },
162
+ {
163
+ displayName: 'Max Results',
164
+ name: 'max_results',
165
+ type: 'number',
166
+ typeOptions: {
167
+ minValue: 5,
168
+ maxValue: 50,
169
+ },
170
+ default: 20,
171
+ description: 'Maximum evidence items per source (5-50)',
172
+ },
173
+ {
174
+ displayName: 'Output Format',
175
+ name: 'output_format',
176
+ type: 'options',
177
+ options: [
178
+ {
179
+ name: 'Summary',
180
+ value: 'summary',
181
+ description: 'Markdown-formatted narrative',
182
+ },
183
+ {
184
+ name: 'Bullets',
185
+ value: 'bullets',
186
+ description: 'Structured bullet points',
187
+ },
188
+ {
189
+ name: 'JSON',
190
+ value: 'json',
191
+ description: 'Fully structured data',
192
+ },
193
+ ],
194
+ default: 'summary',
195
+ description: 'Response format for the research brief',
196
+ },
197
+ ],
198
+ },
199
+ ],
200
+ };
201
+ async execute() {
202
+ const items = this.getInputData();
203
+ const returnData = [];
204
+ const operation = this.getNodeParameter('operation', 0);
205
+ const credentials = await this.getCredentials('lumifyApi');
206
+ for (let i = 0; i < items.length; i++) {
207
+ try {
208
+ let responseData;
209
+ if (operation === 'search') {
210
+ // Validate that appId is provided for Search operation
211
+ if (!credentials.appId) {
212
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Application ID is required for the Search operation. Please add it to your Lumify credentials.', { itemIndex: i });
213
+ }
214
+ const query = this.getNodeParameter('query', i);
215
+ const searchOptions = this.getNodeParameter('searchOptions', i, {});
216
+ const body = {
217
+ query,
218
+ application_id: credentials.appId,
219
+ };
220
+ if (searchOptions.answer_mode !== undefined) {
221
+ body.answer_mode = searchOptions.answer_mode;
222
+ }
223
+ if (searchOptions.similar_questions !== undefined) {
224
+ body.similar_questions = searchOptions.similar_questions;
225
+ }
226
+ const response = await this.helpers.httpRequestWithAuthentication.call(this, 'lumifyApi', {
227
+ method: 'POST',
228
+ url: 'https://lumify.ai/api/v1/search.php',
229
+ body,
230
+ json: true,
231
+ });
232
+ responseData = response;
233
+ }
234
+ else if (operation === 'last30days') {
235
+ const topic = this.getNodeParameter('topic', i);
236
+ const options = this.getNodeParameter('last30daysOptions', i, {});
237
+ const body = {
238
+ topic,
239
+ };
240
+ if (options.sources !== undefined) {
241
+ body.sources = options.sources;
242
+ }
243
+ if (options.days !== undefined) {
244
+ body.days = options.days;
245
+ }
246
+ if (options.max_results !== undefined) {
247
+ body.max_results = options.max_results;
248
+ }
249
+ if (options.output_format !== undefined) {
250
+ body.output_format = options.output_format;
251
+ }
252
+ const response = await this.helpers.httpRequestWithAuthentication.call(this, 'lumifyApi', {
253
+ method: 'POST',
254
+ url: 'https://lumify.ai/api/v1/skills/last30days',
255
+ body,
256
+ json: true,
257
+ });
258
+ responseData = response;
259
+ }
260
+ else {
261
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Unknown operation: ${operation}`, {
262
+ itemIndex: i,
263
+ });
264
+ }
265
+ returnData.push({
266
+ json: responseData,
267
+ pairedItem: { item: i },
268
+ });
269
+ }
270
+ catch (error) {
271
+ if (this.continueOnFail()) {
272
+ returnData.push({
273
+ json: {
274
+ error: error.message,
275
+ },
276
+ pairedItem: { item: i },
277
+ });
278
+ continue;
279
+ }
280
+ throw error;
281
+ }
282
+ }
283
+ return [returnData];
284
+ }
285
+ }
286
+ exports.Lumify = Lumify;
287
+ //# sourceMappingURL=Lumify.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Lumify.node.js","sourceRoot":"","sources":["../../../nodes/Lumify/Lumify.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 60 60" fill="none">
2
+ <rect width="60" height="60" rx="8" fill="#6366F1"/>
3
+ <path d="M15 42V18h6v24h-6z" fill="white"/>
4
+ <path d="M24 42V26h6v16h-6z" fill="white" opacity="0.8"/>
5
+ <path d="M33 42V22h6v20h-6z" fill="white" opacity="0.9"/>
6
+ <circle cx="45" cy="20" r="5" fill="#FCD34D"/>
7
+ <path d="M45 25v17" stroke="#FCD34D" stroke-width="3" stroke-linecap="round"/>
8
+ </svg>
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "n8n-nodes-lumify",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Lumify - AI-powered search and research APIs",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "lumify",
9
+ "ai-search",
10
+ "research",
11
+ "trends"
12
+ ],
13
+ "license": "MIT",
14
+ "homepage": "https://lumify.ai",
15
+ "author": {
16
+ "name": "Lumify",
17
+ "email": "support@lumify.ai"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/lumifyai/n8n-nodes-lumify.git"
22
+ },
23
+ "engines": {
24
+ "node": ">=18.10",
25
+ "pnpm": ">=9.1"
26
+ },
27
+ "packageManager": "pnpm@9.1.4",
28
+ "main": "dist/nodes/Lumify/Lumify.node.js",
29
+ "scripts": {
30
+ "preinstall": "npx only-allow pnpm",
31
+ "build": "tsc && gulp build:icons",
32
+ "dev": "tsc --watch",
33
+ "format": "prettier nodes credentials --write",
34
+ "lint": "eslint 'nodes/**/*.ts' 'credentials/**/*.ts'",
35
+ "lintfix": "eslint 'nodes/**/*.ts' 'credentials/**/*.ts' --fix",
36
+ "prepublishOnly": "pnpm build && pnpm lint"
37
+ },
38
+ "files": [
39
+ "dist"
40
+ ],
41
+ "n8n": {
42
+ "n8nNodesApiVersion": 1,
43
+ "credentials": [
44
+ "dist/credentials/LumifyApi.credentials.js"
45
+ ],
46
+ "nodes": [
47
+ "dist/nodes/Lumify/Lumify.node.js"
48
+ ]
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^20.10.0",
52
+ "@typescript-eslint/parser": "^7.0.0",
53
+ "eslint": "^8.56.0",
54
+ "gulp": "^4.0.2",
55
+ "n8n-workflow": "^1.0.0",
56
+ "prettier": "^3.2.0",
57
+ "typescript": "^5.3.0"
58
+ },
59
+ "peerDependencies": {
60
+ "n8n-workflow": "*"
61
+ }
62
+ }