n8n-nodes-aiagenthub 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/README.md ADDED
@@ -0,0 +1,67 @@
1
+ # n8n-nodes-aiagenthub
2
+
3
+ Community node for [n8n](https://n8n.io/) to interact with [AI Agent HUB](https://sms.aiagenthub.pl).
4
+
5
+ Publish posts to Facebook, list connected social media accounts, and more — directly from your n8n workflows.
6
+
7
+ ## Installation
8
+
9
+ ### In n8n Desktop / Self-hosted
10
+
11
+ 1. Go to **Settings → Community Nodes**
12
+ 2. Enter `n8n-nodes-aiagenthub`
13
+ 3. Click **Install**
14
+
15
+ ### Via CLI
16
+
17
+ ```bash
18
+ npm install n8n-nodes-aiagenthub
19
+ ```
20
+
21
+ ## Setup
22
+
23
+ 1. Log in to your [AI Agent HUB](https://sms.aiagenthub.pl) panel
24
+ 2. Go to **Settings → API Keys**
25
+ 3. Click **"Nowy klucz"** to generate a new API key
26
+ 4. Copy the key (shown only once!)
27
+ 5. In n8n, add **AI Agent HUB API** credentials and paste the key
28
+
29
+ ## Available Operations
30
+
31
+ ### Facebook Post
32
+
33
+ | Operation | Description |
34
+ |-----------|-------------|
35
+ | **Create** | Publish a text or text+image post to a connected Facebook Page |
36
+
37
+ ### Account
38
+
39
+ | Operation | Description |
40
+ |-----------|-------------|
41
+ | **List** | List all connected social media accounts (filterable by platform) |
42
+
43
+ ## Example Workflow
44
+
45
+ 1. **Trigger** (e.g., Schedule, Webhook, or manual)
46
+ 2. **AI Agent HUB** → Account → List (platform: facebook)
47
+ 3. **AI Agent HUB** → Facebook Post → Create (with account_id from step 2)
48
+
49
+ ## Parameters
50
+
51
+ ### Facebook Post > Create
52
+
53
+ | Parameter | Required | Description |
54
+ |-----------|----------|-------------|
55
+ | Account ID | ✅ | UUID of the Facebook account (from Account > List) |
56
+ | Message | ✅ | Text content of the post |
57
+ | Image URL | ❌ | Public URL of an image to attach |
58
+
59
+ ### Account > List
60
+
61
+ | Parameter | Required | Description |
62
+ |-----------|----------|-------------|
63
+ | Platform | ❌ | Filter: facebook, instagram, linkedin, youtube, tiktok |
64
+
65
+ ## License
66
+
67
+ MIT
@@ -0,0 +1,8 @@
1
+ import { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class AiAgentHubApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ }
8
+ //# sourceMappingURL=AiAgentHubApi.credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiAgentHubApi.credentials.d.ts","sourceRoot":"","sources":["../../src/credentials/AiAgentHubApi.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEhE,qBAAa,aAAc,YAAW,eAAe;IACpD,IAAI,SAAmB;IACvB,WAAW,SAAsB;IACjC,gBAAgB,SAA+B;IAC/C,UAAU,EAAE,eAAe,EAAE,CAoB3B;CACF"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiAgentHubApi = void 0;
4
+ class AiAgentHubApi {
5
+ constructor() {
6
+ this.name = 'aiAgentHubApi';
7
+ this.displayName = 'AI Agent HUB API';
8
+ this.documentationUrl = 'https://sms.aiagenthub.pl';
9
+ this.properties = [
10
+ {
11
+ displayName: 'API Key',
12
+ name: 'apiKey',
13
+ type: 'string',
14
+ typeOptions: {
15
+ password: true,
16
+ },
17
+ default: '',
18
+ required: true,
19
+ description: 'API key generated in AI Agent HUB panel (Settings → API Keys). Format: aah_xxxxxxxx...',
20
+ },
21
+ {
22
+ displayName: 'Base URL',
23
+ name: 'baseUrl',
24
+ type: 'string',
25
+ default: 'https://xahssxqgkrrlotaunwtg.supabase.co/functions/v1',
26
+ required: true,
27
+ description: 'Base URL of the AI Agent HUB API. Default should work for most users.',
28
+ },
29
+ ];
30
+ }
31
+ }
32
+ exports.AiAgentHubApi = AiAgentHubApi;
33
+ //# sourceMappingURL=AiAgentHubApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiAgentHubApi.credentials.js","sourceRoot":"","sources":["../../src/credentials/AiAgentHubApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAA1B;QACC,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GAAG,kBAAkB,CAAC;QACjC,qBAAgB,GAAG,2BAA2B,CAAC;QAC/C,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,wFAAwF;aACrG;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,uDAAuD;gBAChE,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,uEAAuE;aACpF;SACD,CAAC;IACH,CAAC;CAAA;AAzBD,sCAyBC"}
@@ -0,0 +1,3 @@
1
+ export { AiAgentHub } from './nodes/AiAgentHub/AiAgentHub.node';
2
+ export { AiAgentHubApi } from './credentials/AiAgentHubApi.credentials';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiAgentHubApi = exports.AiAgentHub = void 0;
4
+ var AiAgentHub_node_1 = require("./nodes/AiAgentHub/AiAgentHub.node");
5
+ Object.defineProperty(exports, "AiAgentHub", { enumerable: true, get: function () { return AiAgentHub_node_1.AiAgentHub; } });
6
+ var AiAgentHubApi_credentials_1 = require("./credentials/AiAgentHubApi.credentials");
7
+ Object.defineProperty(exports, "AiAgentHubApi", { enumerable: true, get: function () { return AiAgentHubApi_credentials_1.AiAgentHubApi; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sEAAgE;AAAvD,6GAAA,UAAU,OAAA;AACnB,qFAAwE;AAA/D,0HAAA,aAAa,OAAA"}
@@ -0,0 +1,6 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class AiAgentHub implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
6
+ //# sourceMappingURL=AiAgentHub.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiAgentHub.node.d.ts","sourceRoot":"","sources":["../../../src/nodes/AiAgentHub/AiAgentHub.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAEtB,qBAAa,UAAW,YAAW,SAAS;IAC3C,WAAW,EAAE,oBAAoB,CA0K/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAiFvE"}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AiAgentHub = void 0;
4
+ class AiAgentHub {
5
+ constructor() {
6
+ this.description = {
7
+ displayName: 'AI Agent HUB',
8
+ name: 'aiAgentHub',
9
+ icon: 'file:aiAgentHub.svg',
10
+ group: ['transform'],
11
+ version: 1,
12
+ subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
13
+ description: 'Interact with AI Agent HUB - publish posts to Facebook, manage social accounts, and more.',
14
+ defaults: {
15
+ name: 'AI Agent HUB',
16
+ },
17
+ inputs: ['main'],
18
+ outputs: ['main'],
19
+ credentials: [
20
+ {
21
+ name: 'aiAgentHubApi',
22
+ required: true,
23
+ },
24
+ ],
25
+ properties: [
26
+ // Resource selector
27
+ {
28
+ displayName: 'Resource',
29
+ name: 'resource',
30
+ type: 'options',
31
+ noDataExpression: true,
32
+ options: [
33
+ {
34
+ name: 'Facebook Post',
35
+ value: 'facebookPost',
36
+ },
37
+ {
38
+ name: 'Account',
39
+ value: 'account',
40
+ },
41
+ ],
42
+ default: 'facebookPost',
43
+ },
44
+ // --- Facebook Post operations ---
45
+ {
46
+ displayName: 'Operation',
47
+ name: 'operation',
48
+ type: 'options',
49
+ noDataExpression: true,
50
+ displayOptions: {
51
+ show: {
52
+ resource: ['facebookPost'],
53
+ },
54
+ },
55
+ options: [
56
+ {
57
+ name: 'Create',
58
+ value: 'create',
59
+ description: 'Publish a new post to a Facebook Page',
60
+ action: 'Create a Facebook post',
61
+ },
62
+ ],
63
+ default: 'create',
64
+ },
65
+ // Facebook Post > Create fields
66
+ {
67
+ displayName: 'Account ID',
68
+ name: 'accountId',
69
+ type: 'string',
70
+ required: true,
71
+ displayOptions: {
72
+ show: {
73
+ resource: ['facebookPost'],
74
+ operation: ['create'],
75
+ },
76
+ },
77
+ default: '',
78
+ description: 'The ID of the connected Facebook account. Use "Account > List" to get available account IDs.',
79
+ },
80
+ {
81
+ displayName: 'Message',
82
+ name: 'message',
83
+ type: 'string',
84
+ typeOptions: {
85
+ rows: 5,
86
+ },
87
+ required: true,
88
+ displayOptions: {
89
+ show: {
90
+ resource: ['facebookPost'],
91
+ operation: ['create'],
92
+ },
93
+ },
94
+ default: '',
95
+ description: 'The text content of the post',
96
+ },
97
+ {
98
+ displayName: 'Image URL',
99
+ name: 'imageUrl',
100
+ type: 'string',
101
+ displayOptions: {
102
+ show: {
103
+ resource: ['facebookPost'],
104
+ operation: ['create'],
105
+ },
106
+ },
107
+ default: '',
108
+ description: 'Optional URL of an image to attach to the post. Must be a publicly accessible URL.',
109
+ },
110
+ // --- Account operations ---
111
+ {
112
+ displayName: 'Operation',
113
+ name: 'operation',
114
+ type: 'options',
115
+ noDataExpression: true,
116
+ displayOptions: {
117
+ show: {
118
+ resource: ['account'],
119
+ },
120
+ },
121
+ options: [
122
+ {
123
+ name: 'List',
124
+ value: 'list',
125
+ description: 'List all connected social media accounts',
126
+ action: 'List connected accounts',
127
+ },
128
+ ],
129
+ default: 'list',
130
+ },
131
+ // Account > List fields
132
+ {
133
+ displayName: 'Platform Filter',
134
+ name: 'platform',
135
+ type: 'options',
136
+ displayOptions: {
137
+ show: {
138
+ resource: ['account'],
139
+ operation: ['list'],
140
+ },
141
+ },
142
+ options: [
143
+ {
144
+ name: 'All Platforms',
145
+ value: '',
146
+ },
147
+ {
148
+ name: 'Facebook',
149
+ value: 'facebook',
150
+ },
151
+ {
152
+ name: 'Instagram',
153
+ value: 'instagram',
154
+ },
155
+ {
156
+ name: 'LinkedIn',
157
+ value: 'linkedin',
158
+ },
159
+ {
160
+ name: 'YouTube',
161
+ value: 'youtube',
162
+ },
163
+ {
164
+ name: 'TikTok',
165
+ value: 'tiktok',
166
+ },
167
+ ],
168
+ default: '',
169
+ description: 'Filter accounts by platform',
170
+ },
171
+ ],
172
+ };
173
+ }
174
+ async execute() {
175
+ const items = this.getInputData();
176
+ const returnData = [];
177
+ const credentials = await this.getCredentials('aiAgentHubApi');
178
+ const apiKey = credentials.apiKey;
179
+ const baseUrl = credentials.baseUrl.replace(/\/$/, '');
180
+ const resource = this.getNodeParameter('resource', 0);
181
+ const operation = this.getNodeParameter('operation', 0);
182
+ for (let i = 0; i < items.length; i++) {
183
+ try {
184
+ if (resource === 'facebookPost' && operation === 'create') {
185
+ const accountId = this.getNodeParameter('accountId', i);
186
+ const message = this.getNodeParameter('message', i);
187
+ const imageUrl = this.getNodeParameter('imageUrl', i, '');
188
+ const body = {
189
+ account_id: accountId,
190
+ message,
191
+ };
192
+ if (imageUrl) {
193
+ body.image_url = imageUrl;
194
+ }
195
+ const response = await this.helpers.httpRequest({
196
+ method: 'POST',
197
+ url: `${baseUrl}/api-facebook-publish`,
198
+ headers: {
199
+ 'Authorization': `Bearer ${apiKey}`,
200
+ 'Content-Type': 'application/json',
201
+ },
202
+ body,
203
+ json: true,
204
+ });
205
+ returnData.push({ json: response });
206
+ }
207
+ else if (resource === 'account' && operation === 'list') {
208
+ const platform = this.getNodeParameter('platform', i, '');
209
+ let url = `${baseUrl}/api-accounts-list`;
210
+ if (platform) {
211
+ url += `?platform=${encodeURIComponent(platform)}`;
212
+ }
213
+ const response = await this.helpers.httpRequest({
214
+ method: 'GET',
215
+ url,
216
+ headers: {
217
+ 'Authorization': `Bearer ${apiKey}`,
218
+ },
219
+ json: true,
220
+ });
221
+ // Return each account as a separate item for easier chaining
222
+ if (response.accounts && Array.isArray(response.accounts)) {
223
+ for (const account of response.accounts) {
224
+ returnData.push({ json: account });
225
+ }
226
+ }
227
+ else {
228
+ returnData.push({ json: response });
229
+ }
230
+ }
231
+ }
232
+ catch (error) {
233
+ if (this.continueOnFail()) {
234
+ returnData.push({
235
+ json: {
236
+ error: error.message || 'Unknown error',
237
+ },
238
+ });
239
+ continue;
240
+ }
241
+ throw error;
242
+ }
243
+ }
244
+ return [returnData];
245
+ }
246
+ }
247
+ exports.AiAgentHub = AiAgentHub;
248
+ //# sourceMappingURL=AiAgentHub.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiAgentHub.node.js","sourceRoot":"","sources":["../../../src/nodes/AiAgentHub/AiAgentHub.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none">
2
+ <defs>
3
+ <linearGradient id="bg" x1="0" y1="0" x2="64" y2="64">
4
+ <stop offset="0%" stop-color="#7C3AED"/>
5
+ <stop offset="100%" stop-color="#2563EB"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <rect width="64" height="64" rx="14" fill="url(#bg)"/>
9
+ <text x="32" y="28" text-anchor="middle" fill="white" font-size="14" font-weight="700" font-family="Arial, sans-serif">AI</text>
10
+ <text x="32" y="46" text-anchor="middle" fill="white" font-size="11" font-weight="600" font-family="Arial, sans-serif">HUB</text>
11
+ </svg>
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "n8n-nodes-aiagenthub",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for AI Agent HUB - Publish posts to Facebook, list connected accounts, and more.",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n",
8
+ "ai-agent-hub",
9
+ "facebook",
10
+ "social-media",
11
+ "automation"
12
+ ],
13
+ "license": "MIT",
14
+ "homepage": "https://sms.aiagenthub.pl",
15
+ "author": {
16
+ "name": "AI Agent HUB",
17
+ "email": "info@aiagenthub.pl"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/GregECAT/n8n-nodes-aiagenthub.git"
22
+ },
23
+ "main": "dist/index.js",
24
+ "types": "dist/index.d.ts",
25
+ "scripts": {
26
+ "build": "tsc",
27
+ "lint": "tsc --noEmit",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "n8n": {
34
+ "n8nNodesApiVersion": 1,
35
+ "credentials": [
36
+ "dist/credentials/AiAgentHubApi.credentials.js"
37
+ ],
38
+ "nodes": [
39
+ "dist/nodes/AiAgentHub/AiAgentHub.node.js"
40
+ ]
41
+ },
42
+ "devDependencies": {
43
+ "n8n-workflow": "^1.0.0",
44
+ "typescript": "~5.3.0"
45
+ },
46
+ "peerDependencies": {
47
+ "n8n-workflow": "*"
48
+ }
49
+ }