n8n-nodes-vercel-ai-sdk-universal-temp 0.1.1 → 0.1.3

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.
Files changed (36) hide show
  1. package/README.md +23 -1
  2. package/dist/credentials/DeepSeekApi.credentials.js +12 -3
  3. package/dist/credentials/DeepSeekApi.credentials.js.map +1 -1
  4. package/dist/credentials/GoogleGenerativeAIApi.credentials.js +12 -3
  5. package/dist/credentials/GoogleGenerativeAIApi.credentials.js.map +1 -1
  6. package/dist/credentials/GroqApi.credentials.js +12 -3
  7. package/dist/credentials/GroqApi.credentials.js.map +1 -1
  8. package/dist/credentials/OpenAiApi.credentials.d.ts +9 -0
  9. package/dist/credentials/OpenAiApi.credentials.js +46 -0
  10. package/dist/credentials/OpenAiApi.credentials.js.map +1 -0
  11. package/dist/credentials/OpenRouterApi.credentials.js +11 -2
  12. package/dist/credentials/OpenRouterApi.credentials.js.map +1 -1
  13. package/dist/nodes/UniversalAI/UniversalAI.node.js +64 -138
  14. package/dist/nodes/UniversalAI/UniversalAI.node.js.map +1 -1
  15. package/dist/nodes/UniversalAI/model-lists.d.ts +20 -0
  16. package/dist/nodes/UniversalAI/model-lists.js +172 -0
  17. package/dist/nodes/UniversalAI/model-lists.js.map +1 -0
  18. package/dist/nodes/UniversalAIEmbedding/UniversalEmbedding.node.d.ts +10 -0
  19. package/dist/nodes/UniversalAIEmbedding/UniversalEmbedding.node.js +332 -0
  20. package/dist/nodes/UniversalAIEmbedding/UniversalEmbedding.node.js.map +1 -0
  21. package/dist/nodes/UniversalAIImageGen/UniversalImageGen.node.d.ts +10 -0
  22. package/dist/nodes/UniversalAIImageGen/UniversalImageGen.node.js +359 -0
  23. package/dist/nodes/UniversalAIImageGen/UniversalImageGen.node.js.map +1 -0
  24. package/dist/nodes/UniversalImageGen/UniversalImageGen.node.js +3 -3
  25. package/dist/nodes/UniversalImageGen/UniversalImageGen.node.js.map +1 -1
  26. package/dist/nodes/UniversalSpeechGen/UniversalSpeechGen.node.d.ts +10 -0
  27. package/dist/nodes/UniversalSpeechGen/UniversalSpeechGen.node.js +269 -0
  28. package/dist/nodes/UniversalSpeechGen/UniversalSpeechGen.node.js.map +1 -0
  29. package/dist/nodes/UniversalSpeechGen/icons/UniversalSpeechGen.svg +4 -0
  30. package/dist/nodes/UniversalTranscription/UniversalTranscription.node.d.ts +5 -0
  31. package/dist/nodes/UniversalTranscription/UniversalTranscription.node.js +216 -0
  32. package/dist/nodes/UniversalTranscription/UniversalTranscription.node.js.map +1 -0
  33. package/dist/nodes/UniversalTranscription/icons/UniversalTranscription.svg +6 -0
  34. package/dist/package.json +8 -4
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +8 -4
@@ -0,0 +1,269 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UniversalSpeechGen = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const { createGoogleGenerativeAI } = require('@ai-sdk/google');
6
+ const { createOpenAI } = require('@ai-sdk/openai');
7
+ const ai_1 = require("ai");
8
+ class UniversalSpeechGen {
9
+ constructor() {
10
+ this.description = {
11
+ displayName: 'Universal Speech Generation',
12
+ name: 'universalSpeechGen',
13
+ icon: 'file:icons/UniversalSpeechGen.svg',
14
+ group: ['transform'],
15
+ version: 1,
16
+ subtitle: '={{$parameter["provider"] + ": " + $parameter["voice"]}}',
17
+ description: 'Generate speech audio from text using multiple AI providers',
18
+ defaults: {
19
+ name: 'Universal Speech Gen',
20
+ },
21
+ inputs: ["main"],
22
+ outputs: ["main"],
23
+ credentials: [
24
+ {
25
+ name: 'googleGenerativeAIApi',
26
+ required: false,
27
+ displayOptions: {
28
+ show: {
29
+ provider: ['google'],
30
+ },
31
+ },
32
+ },
33
+ {
34
+ name: 'openAiApi',
35
+ required: false,
36
+ displayOptions: {
37
+ show: {
38
+ provider: ['openai'],
39
+ },
40
+ },
41
+ },
42
+ ],
43
+ properties: [
44
+ {
45
+ displayName: 'Provider',
46
+ name: 'provider',
47
+ type: 'options',
48
+ required: true,
49
+ noDataExpression: true,
50
+ options: [
51
+ {
52
+ name: 'Google Generative AI',
53
+ value: 'google',
54
+ },
55
+ {
56
+ name: 'OpenAI',
57
+ value: 'openai',
58
+ },
59
+ ],
60
+ default: 'google',
61
+ description: 'Choose which AI provider to use for speech generation',
62
+ },
63
+ {
64
+ displayName: 'API Key',
65
+ name: 'apiKey',
66
+ type: 'string',
67
+ typeOptions: { password: true },
68
+ default: '',
69
+ required: false,
70
+ description: 'API key for the selected provider. Leave empty to use credentials.',
71
+ },
72
+ {
73
+ displayName: 'Text',
74
+ name: 'text',
75
+ type: 'string',
76
+ typeOptions: {
77
+ rows: 4,
78
+ },
79
+ default: '',
80
+ required: true,
81
+ description: 'The text to convert to speech',
82
+ },
83
+ {
84
+ displayName: 'Voice',
85
+ name: 'voice',
86
+ type: 'options',
87
+ required: true,
88
+ typeOptions: {
89
+ loadOptionsMethod: 'getVoices',
90
+ loadOptionsDependsOn: ['provider'],
91
+ },
92
+ default: '',
93
+ description: 'The voice to use for speech generation',
94
+ },
95
+ {
96
+ displayName: 'Options',
97
+ name: 'options',
98
+ type: 'collection',
99
+ placeholder: 'Add Option',
100
+ default: {},
101
+ options: [
102
+ {
103
+ displayName: 'Output Format',
104
+ name: 'outputFormat',
105
+ type: 'options',
106
+ options: [
107
+ { name: 'MP3', value: 'mp3' },
108
+ { name: 'WAV', value: 'wav' },
109
+ { name: 'FLAC', value: 'flac' },
110
+ { name: 'AAC', value: 'aac' },
111
+ { name: 'OGG', value: 'ogg' },
112
+ ],
113
+ default: 'mp3',
114
+ description: 'Audio format for the generated speech',
115
+ displayOptions: {
116
+ show: {
117
+ '/provider': ['openai'],
118
+ },
119
+ },
120
+ },
121
+ {
122
+ displayName: 'Speed',
123
+ name: 'speed',
124
+ type: 'number',
125
+ default: 1.0,
126
+ typeOptions: {
127
+ minValue: 0.25,
128
+ maxValue: 4.0,
129
+ numberPrecision: 2,
130
+ },
131
+ description: 'Speech speed multiplier (0.25-4.0)',
132
+ displayOptions: {
133
+ show: {
134
+ '/provider': ['openai'],
135
+ },
136
+ },
137
+ },
138
+ {
139
+ displayName: 'Language',
140
+ name: 'language',
141
+ type: 'string',
142
+ default: '',
143
+ description: 'Language code (e.g., "en", "es", "fr") or "auto" for detection',
144
+ displayOptions: {
145
+ show: {
146
+ '/provider': ['openai'],
147
+ },
148
+ },
149
+ },
150
+ ],
151
+ },
152
+ ],
153
+ };
154
+ this.methods = {
155
+ loadOptions: {
156
+ async getVoices() {
157
+ const provider = this.getCurrentNodeParameter('provider');
158
+ switch (provider) {
159
+ case 'google':
160
+ return [
161
+ {
162
+ name: 'Default Voice',
163
+ value: 'default',
164
+ description: 'Google default voice',
165
+ },
166
+ ];
167
+ case 'openai':
168
+ return [
169
+ { name: 'Alloy', value: 'alloy', description: 'Balanced and clear' },
170
+ { name: 'Echo', value: 'echo', description: 'Male voice with a warm, rich tone' },
171
+ { name: 'Fable', value: 'fable', description: 'British-accented voice with a warm, storytelling quality' },
172
+ { name: 'Onyx', value: 'onyx', description: 'Deep, resonant male voice' },
173
+ { name: 'Nova', value: 'nova', description: 'Youthful, energetic female voice' },
174
+ { name: 'Shimmer', value: 'shimmer', description: 'Warm, sophisticated female voice' },
175
+ ];
176
+ default:
177
+ return [];
178
+ }
179
+ },
180
+ },
181
+ };
182
+ }
183
+ async execute() {
184
+ const items = this.getInputData();
185
+ const returnData = [];
186
+ const provider = this.getNodeParameter('provider', 0);
187
+ const apiKey = this.getNodeParameter('apiKey', 0, '');
188
+ const text = this.getNodeParameter('text', 0);
189
+ const voice = this.getNodeParameter('voice', 0);
190
+ let credentials = null;
191
+ if (!apiKey) {
192
+ switch (provider) {
193
+ case 'google':
194
+ credentials = await this.getCredentials('googleGenerativeAIApi');
195
+ break;
196
+ case 'openai':
197
+ credentials = await this.getCredentials('openAiApi');
198
+ break;
199
+ }
200
+ if (!(credentials === null || credentials === void 0 ? void 0 : credentials.apiKey)) {
201
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No API key provided in credentials');
202
+ }
203
+ }
204
+ const actualApiKey = apiKey || credentials.apiKey;
205
+ let speechModel;
206
+ switch (provider) {
207
+ case 'google':
208
+ const google = createGoogleGenerativeAI({
209
+ apiKey: actualApiKey,
210
+ });
211
+ speechModel = google.speech('text-to-speech');
212
+ break;
213
+ case 'openai':
214
+ const openai = createOpenAI({
215
+ apiKey: actualApiKey,
216
+ });
217
+ speechModel = openai.speech('tts-1');
218
+ break;
219
+ }
220
+ for (let i = 0; i < items.length; i++) {
221
+ try {
222
+ const options = this.getNodeParameter('options', i, {});
223
+ const providerOptions = {};
224
+ if (provider === 'openai') {
225
+ if (options.outputFormat) {
226
+ providerOptions.openai = {
227
+ response_format: options.outputFormat,
228
+ };
229
+ }
230
+ }
231
+ const { audio, warnings } = await (0, ai_1.experimental_generateSpeech)({
232
+ model: speechModel,
233
+ text,
234
+ voice: voice === 'default' ? undefined : voice,
235
+ ...(options.speed && { speed: options.speed }),
236
+ ...(options.language && { language: options.language }),
237
+ ...(Object.keys(providerOptions).length > 0 && { providerOptions }),
238
+ });
239
+ returnData.push({
240
+ json: {
241
+ text,
242
+ voice,
243
+ mimeType: audio.mimeType || 'audio/mpeg',
244
+ format: audio.format || 'mp3',
245
+ warnings: warnings || [],
246
+ },
247
+ binary: {
248
+ data: {
249
+ data: audio.base64,
250
+ mimeType: audio.mimeType || 'audio/mpeg',
251
+ fileName: `speech-${Date.now()}.${audio.format || 'mp3'}`,
252
+ },
253
+ },
254
+ });
255
+ }
256
+ catch (error) {
257
+ if (this.continueOnFail()) {
258
+ returnData.push({ json: { error: error.message } });
259
+ }
260
+ else {
261
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
262
+ }
263
+ }
264
+ }
265
+ return [returnData];
266
+ }
267
+ }
268
+ exports.UniversalSpeechGen = UniversalSpeechGen;
269
+ //# sourceMappingURL=UniversalSpeechGen.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalSpeechGen.node.js","sourceRoot":"","sources":["../../../nodes/UniversalSpeechGen/UniversalSpeechGen.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12 2C13.1 2 14 2.9 14 4V10C14 11.1 13.1 12 12 12C10.9 12 10 11.1 10 10V4C10 2.9 10.9 2 12 2ZM16 10C16 12.76 13.76 15 11 15V16C11 16.55 10.55 17 10 17C9.45 17 9 16.55 9 16V15C6.24 15 4 12.76 4 10H5C5 12.21 6.79 14 9 14C11.21 14 13 12.21 13 10H16Z" fill="currentColor"/>
3
+ <path d="M17 10C17.55 10 18 10.45 18 11V17C18 18.1 17.1 19 16 19H8C6.9 19 6 18.1 6 17V11C6 10.45 6.45 10 7 10C7.55 10 8 10.45 8 11V17H16V11C16 10.45 16.45 10 17 10Z" fill="currentColor"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class UniversalTranscription implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UniversalTranscription = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const { createOpenAI } = require('@ai-sdk/openai');
6
+ const ai_1 = require("ai");
7
+ class UniversalTranscription {
8
+ constructor() {
9
+ this.description = {
10
+ displayName: 'Universal Transcription',
11
+ name: 'universalTranscription',
12
+ icon: 'file:icons/UniversalTranscription.svg',
13
+ group: ['transform'],
14
+ version: 1,
15
+ subtitle: '={{$parameter["provider"] + ": " + $parameter["model"]}}',
16
+ description: 'Generate transcripts from audio files using multiple AI providers',
17
+ defaults: {
18
+ name: 'Universal Transcription',
19
+ },
20
+ inputs: ["main"],
21
+ outputs: ["main"],
22
+ credentials: [
23
+ {
24
+ name: 'openAiApi',
25
+ required: false,
26
+ displayOptions: {
27
+ show: {
28
+ provider: ['openai'],
29
+ },
30
+ },
31
+ },
32
+ ],
33
+ properties: [
34
+ {
35
+ displayName: 'Provider',
36
+ name: 'provider',
37
+ type: 'options',
38
+ required: true,
39
+ noDataExpression: true,
40
+ options: [
41
+ {
42
+ name: 'OpenAI (Whisper)',
43
+ value: 'openai',
44
+ },
45
+ ],
46
+ default: 'openai',
47
+ description: 'Choose which AI provider to use for transcription',
48
+ },
49
+ {
50
+ displayName: 'API Key',
51
+ name: 'apiKey',
52
+ type: 'string',
53
+ typeOptions: { password: true },
54
+ default: '',
55
+ required: false,
56
+ description: 'API key for the selected provider. Leave empty to use credentials.',
57
+ },
58
+ {
59
+ displayName: 'Audio Source',
60
+ name: 'audioSource',
61
+ type: 'options',
62
+ required: true,
63
+ options: [
64
+ {
65
+ name: 'Binary Data',
66
+ value: 'binary',
67
+ description: 'Use binary data from n8n input',
68
+ },
69
+ {
70
+ name: 'URL',
71
+ value: 'url',
72
+ description: 'Provide a URL to the audio file',
73
+ },
74
+ ],
75
+ default: 'binary',
76
+ description: 'Where the audio file is coming from',
77
+ },
78
+ {
79
+ displayName: 'Audio Property',
80
+ name: 'audioProperty',
81
+ type: 'string',
82
+ default: 'data',
83
+ required: true,
84
+ displayOptions: {
85
+ show: {
86
+ audioSource: ['binary'],
87
+ },
88
+ },
89
+ description: 'Name of the binary property containing the audio data',
90
+ },
91
+ {
92
+ displayName: 'Audio URL',
93
+ name: 'audioUrl',
94
+ type: 'string',
95
+ default: '',
96
+ required: true,
97
+ displayOptions: {
98
+ show: {
99
+ audioSource: ['url'],
100
+ },
101
+ },
102
+ description: 'URL of the audio file to transcribe',
103
+ requiresDataPath: 'single',
104
+ },
105
+ {
106
+ displayName: 'Model',
107
+ name: 'model',
108
+ type: 'options',
109
+ required: true,
110
+ options: [
111
+ {
112
+ name: 'Whisper Large v3',
113
+ value: 'whisper-1',
114
+ description: 'OpenAI\'s most advanced Whisper model',
115
+ },
116
+ ],
117
+ default: 'whisper-1',
118
+ description: 'The transcription model to use',
119
+ },
120
+ {
121
+ displayName: 'Options',
122
+ name: 'options',
123
+ type: 'collection',
124
+ placeholder: 'Add Option',
125
+ default: {},
126
+ options: [
127
+ {
128
+ displayName: 'Language',
129
+ name: 'language',
130
+ type: 'string',
131
+ default: '',
132
+ description: 'Language of the audio as ISO-639-1 format (e.g., "en", "es"). Leave empty for auto-detection.',
133
+ },
134
+ {
135
+ displayName: 'Include Segments',
136
+ name: 'includeSegments',
137
+ type: 'boolean',
138
+ default: false,
139
+ description: 'Whether to include timestamped segments in the output',
140
+ },
141
+ ],
142
+ },
143
+ ],
144
+ };
145
+ }
146
+ async execute() {
147
+ const items = this.getInputData();
148
+ const returnData = [];
149
+ const provider = this.getNodeParameter('provider', 0);
150
+ const apiKey = this.getNodeParameter('apiKey', 0, '');
151
+ const audioSource = this.getNodeParameter('audioSource', 0);
152
+ const model = this.getNodeParameter('model', 0);
153
+ let credentials = null;
154
+ if (!apiKey) {
155
+ if (provider === 'openai') {
156
+ credentials = await this.getCredentials('openAiApi');
157
+ }
158
+ if (!(credentials === null || credentials === void 0 ? void 0 : credentials.apiKey)) {
159
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'No API key provided in credentials');
160
+ }
161
+ }
162
+ const actualApiKey = apiKey || credentials.apiKey;
163
+ let transcriptionModel;
164
+ if (provider === 'openai') {
165
+ const openai = createOpenAI({
166
+ apiKey: actualApiKey,
167
+ });
168
+ transcriptionModel = openai.transcription(model);
169
+ }
170
+ for (let i = 0; i < items.length; i++) {
171
+ try {
172
+ const options = this.getNodeParameter('options', i, {});
173
+ let audioData;
174
+ if (audioSource === 'binary') {
175
+ const audioProperty = this.getNodeParameter('audioProperty', i);
176
+ const itemBinary = items[i].binary;
177
+ if (!itemBinary || !itemBinary[audioProperty]) {
178
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Binary property "${audioProperty}" not found on item index ${i}`);
179
+ }
180
+ const binaryData = itemBinary[audioProperty];
181
+ audioData = Buffer.from(binaryData.data, binaryData.data ? 'base64' : undefined);
182
+ }
183
+ else {
184
+ const audioUrl = this.getNodeParameter('audioUrl', i);
185
+ audioData = audioUrl;
186
+ }
187
+ const transcriptionResult = await (0, ai_1.experimental_transcribe)({
188
+ model: transcriptionModel,
189
+ audio: audioData,
190
+ ...(options.language && { language: options.language }),
191
+ });
192
+ const output = {
193
+ text: transcriptionResult.text,
194
+ language: transcriptionResult.language,
195
+ durationInSeconds: transcriptionResult.durationInSeconds,
196
+ warnings: transcriptionResult.warnings || [],
197
+ };
198
+ if (options.includeSegments) {
199
+ output.segments = transcriptionResult.segments;
200
+ }
201
+ returnData.push({ json: output });
202
+ }
203
+ catch (error) {
204
+ if (this.continueOnFail()) {
205
+ returnData.push({ json: { error: error.message } });
206
+ }
207
+ else {
208
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
209
+ }
210
+ }
211
+ }
212
+ return [returnData];
213
+ }
214
+ }
215
+ exports.UniversalTranscription = UniversalTranscription;
216
+ //# sourceMappingURL=UniversalTranscription.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UniversalTranscription.node.js","sourceRoot":"","sources":["../../../nodes/UniversalTranscription/UniversalTranscription.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="4" y="4" width="16" height="16" rx="2" stroke="currentColor" stroke-width="2"/>
3
+ <path d="M8 10H16M8 14H12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
4
+ <circle cx="18" cy="6" r="2" fill="currentColor"/>
5
+ <circle cx="6" cy="18" r="2" fill="currentColor"/>
6
+ </svg>
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-vercel-ai-sdk-universal-temp",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Universal AI SDK n8n nodes integration",
5
5
  "keywords": [
6
6
  "n8n-community-node-package"
@@ -30,12 +30,15 @@
30
30
  "dist/credentials/GoogleGenerativeAIApi.credentials.js",
31
31
  "dist/credentials/DeepSeekApi.credentials.js",
32
32
  "dist/credentials/GroqApi.credentials.js",
33
- "dist/credentials/OpenRouterApi.credentials.js"
33
+ "dist/credentials/OpenRouterApi.credentials.js",
34
+ "dist/credentials/OpenAiApi.credentials.js"
34
35
  ],
35
36
  "nodes": [
36
37
  "dist/nodes/UniversalAI/UniversalAI.node.js",
37
38
  "dist/nodes/UniversalEmbedding/UniversalEmbedding.node.js",
38
- "dist/nodes/UniversalImageGen/UniversalImageGen.node.js"
39
+ "dist/nodes/UniversalImageGen/UniversalImageGen.node.js",
40
+ "dist/nodes/UniversalSpeechGen/UniversalSpeechGen.node.js",
41
+ "dist/nodes/UniversalTranscription/UniversalTranscription.node.js"
39
42
  ]
40
43
  },
41
44
  "devDependencies": {
@@ -61,6 +64,7 @@
61
64
  "@ai-sdk/openai": "^2.0.49",
62
65
  "@openrouter/ai-sdk-provider": "^1.2.0",
63
66
  "ai": "^5.0.60",
64
- "zod": "^4.1.0"
67
+ "zod": "^4.1.0",
68
+ "ajv": "^8.17.0"
65
69
  }
66
70
  }