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 +21 -0
- package/README.md +130 -0
- package/dist/credentials/LumifyApi.credentials.d.ts +9 -0
- package/dist/credentials/LumifyApi.credentials.js +54 -0
- package/dist/credentials/LumifyApi.credentials.js.map +1 -0
- package/dist/nodes/Lumify/Lumify.node.d.ts +5 -0
- package/dist/nodes/Lumify/Lumify.node.js +287 -0
- package/dist/nodes/Lumify/Lumify.node.js.map +1 -0
- package/dist/nodes/Lumify/lumify.svg +8 -0
- package/package.json +62 -0
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,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
|
+
}
|