@publora/n8n-nodes-publora 0.0.0-stage → 0.1.1

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 (30) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +94 -2
  3. package/dist/credentials/PubloraApi.credentials.d.ts +10 -0
  4. package/dist/credentials/PubloraApi.credentials.js +43 -0
  5. package/dist/credentials/PubloraApi.credentials.js.map +1 -0
  6. package/dist/nodes/Publora/GenericFunctions.d.ts +9 -0
  7. package/dist/nodes/Publora/GenericFunctions.js +134 -0
  8. package/dist/nodes/Publora/GenericFunctions.js.map +1 -0
  9. package/dist/nodes/Publora/Publora.node.d.ts +13 -0
  10. package/dist/nodes/Publora/Publora.node.js +481 -0
  11. package/dist/nodes/Publora/Publora.node.js.map +1 -0
  12. package/dist/nodes/Publora/Publora.node.json +18 -0
  13. package/dist/nodes/Publora/descriptions/AccountDescription.d.ts +3 -0
  14. package/dist/nodes/Publora/descriptions/AccountDescription.js +49 -0
  15. package/dist/nodes/Publora/descriptions/AccountDescription.js.map +1 -0
  16. package/dist/nodes/Publora/descriptions/MediaDescription.d.ts +3 -0
  17. package/dist/nodes/Publora/descriptions/MediaDescription.js +65 -0
  18. package/dist/nodes/Publora/descriptions/MediaDescription.js.map +1 -0
  19. package/dist/nodes/Publora/descriptions/PostDescription.d.ts +3 -0
  20. package/dist/nodes/Publora/descriptions/PostDescription.js +439 -0
  21. package/dist/nodes/Publora/descriptions/PostDescription.js.map +1 -0
  22. package/dist/nodes/Publora/publora.dark.svg +8 -0
  23. package/dist/nodes/Publora/publora.svg +8 -0
  24. package/dist/nodes/PubloraTrigger/PubloraTrigger.node.d.ts +12 -0
  25. package/dist/nodes/PubloraTrigger/PubloraTrigger.node.js +210 -0
  26. package/dist/nodes/PubloraTrigger/PubloraTrigger.node.js.map +1 -0
  27. package/dist/nodes/PubloraTrigger/PubloraTrigger.node.json +18 -0
  28. package/dist/package.json +71 -0
  29. package/dist/tsconfig.tsbuildinfo +1 -0
  30. package/package.json +70 -5
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Creative Content Crafts, Inc. (Publora)
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 CHANGED
@@ -1,3 +1,95 @@
1
- # Temporary Holding Version
1
+ # @publora/n8n-nodes-publora
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ This is the official n8n community node for [Publora](https://publora.com). It lets you publish and schedule social media posts from your n8n workflows, and start workflows when a post is published, scheduled, fails, or returns to draft.
4
+
5
+ Publora publishes to LinkedIn, X, Instagram, Threads, TikTok, YouTube, Facebook, Bluesky, Mastodon and Telegram from one place. You connect your social accounts in Publora once, and the node posts to any of them.
6
+
7
+ [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/sustainable-use-license/) workflow automation platform.
8
+
9
+ [Installation](#installation) · [Operations](#operations) · [Credentials](#credentials) · [Compatibility](#compatibility) · [Usage](#usage) · [Resources](#resources) · [Version history](#version-history)
10
+
11
+ ## Installation
12
+
13
+ Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation and install `@publora/n8n-nodes-publora`.
14
+
15
+ ## Operations
16
+
17
+ The package has two nodes.
18
+
19
+ ### Publora
20
+
21
+ **Post**
22
+
23
+ - **Create**: publish now, schedule for a date and time, or save as a draft. Attach images or a video from public URLs or from files produced by earlier nodes (for example Google Drive or HTTP Request). Optional first comment and network settings (Instagram video type, TikTok audience, YouTube title, privacy and tags, Threads reply control, X reply and quote, silent Telegram message).
24
+ - **Delete**: delete a draft or scheduled post.
25
+ - **Get**: get a post and its status on each network, with the live post ID once it is published.
26
+ - **Get Many**: list posts, filtered by status, network and scheduled date.
27
+ - **Update**: change the text, the accounts, the publish time or the status of a draft or scheduled post, add media from URLs, replace the first comment, or publish it now.
28
+
29
+ **Media**
30
+
31
+ - **Upload**: upload a file from the input to a draft or scheduled post.
32
+
33
+ **Account**
34
+
35
+ - **Get Many**: list the social accounts connected to Publora, with their connection status.
36
+
37
+ The Publora node can be used as a tool by n8n AI agents.
38
+
39
+ ### Publora Trigger
40
+
41
+ Starts the workflow when a post is published, scheduled, fails to publish, or returns to draft. The node subscribes to Publora when the workflow is activated and removes the subscription when it is deactivated. Every event is checked against the subscription's signing secret, and requests without a valid signature are rejected.
42
+
43
+ ## Credentials
44
+
45
+ You need a Publora account and an API key. A free plan is available.
46
+
47
+ 1. Sign up at [publora.com](https://publora.com) and connect your social accounts under **Channels**.
48
+ 2. Open **API** in the Publora sidebar and click **Generate API Key**. Copy the key right away: it is shown only once.
49
+ 3. In n8n, create a **Publora API** credential and paste the key. The credential test lists your connected accounts to check the key.
50
+
51
+ If the key is wrong or has been revoked, the credential test reports `Unauthorized`.
52
+
53
+ ## Troubleshooting
54
+
55
+ - **The account list is empty on a new node.** n8n can request the list just before it attaches the credential. Close the node and open it again.
56
+ - **An AI Agent ignores what the Publora tool returned.** In n8n 2.43.8 and 2.45.7, AI Agent 3.1 received an empty result from every tool we tried, including the built-in Calculator. The Publora tool itself returned the data, and AI Agent 2.2 worked with the same tool.
57
+
58
+ ## Compatibility
59
+
60
+ Tested with n8n 2.43.8.
61
+
62
+ ## Usage
63
+
64
+ **Posting with media.** Instagram, TikTok and YouTube posts need an image or a video. With **Media → Files From Input**, the node creates the post as a draft, uploads each file, and then schedules or publishes it. If an upload fails, the node deletes the unfinished post, so nothing half-made is left in Publora.
65
+
66
+ **Times.** **Publish At** uses the workflow's time zone. Publora stores times in UTC.
67
+
68
+ **Retries.** The node sends an idempotency key with every create and update, so if n8n retries a step, Publora returns the first result instead of creating a second post.
69
+
70
+ **Plan limits.** The free plan allows 15 posts a month, 3 scheduled posts at a time, scheduling up to 7 days ahead, and doesn't include X. When a limit is reached, the node shows Publora's message with the limit that was hit. See [pricing](https://publora.com/pricing).
71
+
72
+ **Publora Trigger and your n8n address.** Publora sends events only to public addresses. If your n8n runs on localhost or in a private network, set `N8N_WEBHOOK_URL` (or `WEBHOOK_URL` on older versions) to a public URL, or use a tunnel. Each Publora account can have up to 10 webhooks; every active workflow with a Publora Trigger uses one.
73
+
74
+ **Example: post new blog articles.** RSS Feed Trigger → Publora (Post → Create, Publish: Now, Text: `{{ $json.title }} {{ $json.link }}`).
75
+
76
+ **Example: schedule from a content plan.** Google Sheets (rows marked ready) → Publora (Post → Create, Publish: Schedule, Publish At: the row's date) → Google Sheets (write back the post ID).
77
+
78
+ **Example: alert on failed posts.** Publora Trigger (Post Failed) → Slack or email with the network and the error message.
79
+
80
+ ## Resources
81
+
82
+ - [n8n community nodes documentation](https://docs.n8n.io/integrations/#community-nodes)
83
+ - [Publora API documentation](https://docs.publora.com)
84
+ - [Publora webhooks](https://docs.publora.com/endpoints/webhooks)
85
+ - [Support](mailto:support@publora.com)
86
+
87
+ ## Version history
88
+
89
+ ### 0.1.1
90
+
91
+ Publish now returns the status `publishing`. The account list no longer fails when n8n requests it before the credential is attached.
92
+
93
+ ### 0.1.0
94
+
95
+ First release: Post (Create, Delete, Get, Get Many, Update), Media (Upload), Account (Get Many), and the Publora Trigger.
@@ -0,0 +1,10 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, Icon, INodeProperties } from 'n8n-workflow';
2
+ export declare class PubloraApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ icon: Icon;
6
+ documentationUrl: string;
7
+ properties: INodeProperties[];
8
+ authenticate: IAuthenticateGeneric;
9
+ test: ICredentialTestRequest;
10
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PubloraApi = void 0;
4
+ class PubloraApi {
5
+ constructor() {
6
+ this.name = 'publoraApi';
7
+ this.displayName = 'Publora API';
8
+ this.icon = {
9
+ light: 'file:../nodes/Publora/publora.svg',
10
+ dark: 'file:../nodes/Publora/publora.dark.svg',
11
+ };
12
+ this.documentationUrl = 'https://docs.publora.com/authentication';
13
+ this.properties = [
14
+ {
15
+ displayName: 'API Key',
16
+ name: 'apiKey',
17
+ type: 'string',
18
+ typeOptions: { password: true },
19
+ required: true,
20
+ default: '',
21
+ placeholder: 'e.g. sk_mrmbzomn_1a2b3c4d.964793af…',
22
+ description: 'Your Publora API key. In Publora, open API in the sidebar and click Generate API Key. The key is shown only once.',
23
+ },
24
+ ];
25
+ this.authenticate = {
26
+ type: 'generic',
27
+ properties: {
28
+ headers: {
29
+ 'x-publora-key': '={{$credentials.apiKey}}',
30
+ },
31
+ },
32
+ };
33
+ this.test = {
34
+ request: {
35
+ baseURL: 'https://api.publora.com/api/v1',
36
+ url: '/platform-connections',
37
+ method: 'GET',
38
+ },
39
+ };
40
+ }
41
+ }
42
+ exports.PubloraApi = PubloraApi;
43
+ //# sourceMappingURL=PubloraApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PubloraApi.credentials.js","sourceRoot":"","sources":["../../credentials/PubloraApi.credentials.ts"],"names":[],"mappings":";;;AAQA,MAAa,UAAU;IAAvB;QACC,SAAI,GAAG,YAAY,CAAC;QAEpB,gBAAW,GAAG,aAAa,CAAC;QAE5B,SAAI,GAAS;YACZ,KAAK,EAAE,mCAAmC;YAC1C,IAAI,EAAE,wCAAwC;SAC9C,CAAC;QAEF,qBAAgB,GAAG,yCAAyC,CAAC;QAE7D,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,qCAAqC;gBAClD,WAAW,EACV,mHAAmH;aACpH;SACD,CAAC;QAEF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,eAAe,EAAE,0BAA0B;iBAC3C;aACD;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,gCAAgC;gBACzC,GAAG,EAAE,uBAAuB;gBAC5B,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AA1CD,gCA0CC"}
@@ -0,0 +1,9 @@
1
+ import type { IDataObject, IExecuteFunctions, IHookFunctions, IHttpRequestMethods, ILoadOptionsFunctions } from 'n8n-workflow';
2
+ export declare const PUBLORA_API_BASE_URL = "https://api.publora.com/api/v1";
3
+ type PubloraContext = IExecuteFunctions | ILoadOptionsFunctions | IHookFunctions;
4
+ export declare const MEDIA_REQUIRED_PLATFORMS: string[];
5
+ export declare const PLATFORM_LABELS: Record<string, string>;
6
+ export declare function platformOf(connectionId: string): string;
7
+ export declare function publoraApiRequest(this: PubloraContext, method: IHttpRequestMethods, endpoint: string, body?: IDataObject, qs?: IDataObject, headers?: IDataObject): Promise<IDataObject>;
8
+ export declare function publoraListPosts(this: IExecuteFunctions | ILoadOptionsFunctions, query: IDataObject, limit?: number): Promise<IDataObject[]>;
9
+ export {};
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PLATFORM_LABELS = exports.MEDIA_REQUIRED_PLATFORMS = exports.PUBLORA_API_BASE_URL = void 0;
4
+ exports.platformOf = platformOf;
5
+ exports.publoraApiRequest = publoraApiRequest;
6
+ exports.publoraListPosts = publoraListPosts;
7
+ const n8n_workflow_1 = require("n8n-workflow");
8
+ exports.PUBLORA_API_BASE_URL = 'https://api.publora.com/api/v1';
9
+ exports.MEDIA_REQUIRED_PLATFORMS = ['instagram', 'tiktok', 'youtube'];
10
+ exports.PLATFORM_LABELS = {
11
+ bluesky: 'Bluesky',
12
+ facebook: 'Facebook',
13
+ instagram: 'Instagram',
14
+ linkedin: 'LinkedIn',
15
+ mastodon: 'Mastodon',
16
+ pinterest: 'Pinterest',
17
+ telegram: 'Telegram',
18
+ threads: 'Threads',
19
+ tiktok: 'TikTok',
20
+ twitter: 'X',
21
+ youtube: 'YouTube',
22
+ };
23
+ function platformOf(connectionId) {
24
+ return String(connectionId).split('-')[0];
25
+ }
26
+ async function publoraApiRequest(method, endpoint, body, qs, headers) {
27
+ const options = {
28
+ method,
29
+ url: `${exports.PUBLORA_API_BASE_URL}${endpoint}`,
30
+ json: true,
31
+ headers: {
32
+ Accept: 'application/json',
33
+ 'x-publora-client': 'n8n',
34
+ ...(headers !== null && headers !== void 0 ? headers : {}),
35
+ },
36
+ };
37
+ if (body !== undefined)
38
+ options.body = body;
39
+ if (qs !== undefined && Object.keys(qs).length)
40
+ options.qs = qs;
41
+ try {
42
+ return (await this.helpers.httpRequestWithAuthentication.call(this, 'publoraApi', options));
43
+ }
44
+ catch (error) {
45
+ throw toPubloraApiError.call(this, error);
46
+ }
47
+ }
48
+ async function publoraListPosts(query, limit) {
49
+ var _a, _b;
50
+ const posts = [];
51
+ let page = 1;
52
+ for (;;) {
53
+ const pageSize = limit === undefined ? 100 : Math.min(100, Math.max(1, limit - posts.length));
54
+ const response = await publoraApiRequest.call(this, 'GET', '/list-posts', undefined, {
55
+ ...query,
56
+ page,
57
+ limit: pageSize,
58
+ });
59
+ const batch = (_a = response.posts) !== null && _a !== void 0 ? _a : [];
60
+ posts.push(...batch);
61
+ const pagination = (_b = response.pagination) !== null && _b !== void 0 ? _b : {};
62
+ if (limit !== undefined && posts.length >= limit)
63
+ return posts.slice(0, limit);
64
+ if (!pagination.hasNextPage || batch.length === 0)
65
+ return posts;
66
+ page++;
67
+ }
68
+ }
69
+ function toPubloraApiError(error) {
70
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
71
+ const err = error;
72
+ const sources = [err, err.cause, err.errorResponse, (_a = err.cause) === null || _a === void 0 ? void 0 : _a.cause].filter((s) => !!s && typeof s === 'object');
73
+ let body;
74
+ let status;
75
+ for (const s of sources) {
76
+ body = (_c = body !== null && body !== void 0 ? body : (_b = s.response) === null || _b === void 0 ? void 0 : _b.data) !== null && _c !== void 0 ? _c : (_d = s.response) === null || _d === void 0 ? void 0 : _d.body;
77
+ status = (_h = (_f = status !== null && status !== void 0 ? status : (_e = s.response) === null || _e === void 0 ? void 0 : _e.status) !== null && _f !== void 0 ? _f : (_g = s.response) === null || _g === void 0 ? void 0 : _g.statusCode) !== null && _h !== void 0 ? _h : s.statusCode;
78
+ }
79
+ if (status === undefined && err.httpCode)
80
+ status = Number(err.httpCode);
81
+ if (typeof body === 'string') {
82
+ try {
83
+ body = JSON.parse(body);
84
+ }
85
+ catch {
86
+ body = { error: body };
87
+ }
88
+ }
89
+ if (!body || typeof body !== 'object') {
90
+ return error instanceof n8n_workflow_1.NodeApiError
91
+ ? error
92
+ : new n8n_workflow_1.NodeApiError(this.getNode(), error);
93
+ }
94
+ const data = body;
95
+ const validation = data.validation;
96
+ const validationErrors = ((_j = validation === null || validation === void 0 ? void 0 : validation.errors) !== null && _j !== void 0 ? _j : [])
97
+ .map((e) => {
98
+ var _a;
99
+ return e.platform
100
+ ? `${(_a = exports.PLATFORM_LABELS[e.platform]) !== null && _a !== void 0 ? _a : e.platform}: ${e.message}`
101
+ : e.message;
102
+ })
103
+ .filter(Boolean);
104
+ const mediaResults = ((_k = data.mediaResults) !== null && _k !== void 0 ? _k : [])
105
+ .filter((m) => m.code || m.error)
106
+ .map((m) => { var _a, _b, _c; return `${(_a = m.url) !== null && _a !== void 0 ? _a : 'media'}: ${(_c = (_b = m.message) !== null && _b !== void 0 ? _b : m.error) !== null && _c !== void 0 ? _c : m.code}`; });
107
+ const headline = validationErrors.length > 0
108
+ ? validationErrors.join('; ')
109
+ : ((_o = (_m = (_l = data.message) !== null && _l !== void 0 ? _l : data.error) !== null && _m !== void 0 ? _m : err.message) !== null && _o !== void 0 ? _o : 'Publora request failed');
110
+ const details = [];
111
+ if (data.code)
112
+ details.push(`Code: ${data.code}`);
113
+ if (validationErrors.length > 0 && data.error)
114
+ details.push(String(data.error));
115
+ if (data.message && data.error && data.message !== headline)
116
+ details.push(String(data.error));
117
+ if (mediaResults.length)
118
+ details.push(mediaResults.join('; '));
119
+ if (data.field)
120
+ details.push(`Field: ${data.field}`);
121
+ if (status === 401)
122
+ details.push('Check the API key in the Publora credential.');
123
+ if (data.code === 'POST_LIMIT_REACHED' ||
124
+ data.code === 'SCHEDULED_POST_LIMIT_REACHED' ||
125
+ data.code === 'SCHEDULE_HORIZON_REACHED') {
126
+ details.push('See plan limits at https://publora.com/pricing');
127
+ }
128
+ return new n8n_workflow_1.NodeApiError(this.getNode(), data, {
129
+ message: headline,
130
+ description: details.length ? details.join(' · ') : undefined,
131
+ httpCode: status !== undefined ? String(status) : err.httpCode,
132
+ });
133
+ }
134
+ //# sourceMappingURL=GenericFunctions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericFunctions.js","sourceRoot":"","sources":["../../../nodes/Publora/GenericFunctions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { IExecuteFunctions, ILoadOptionsFunctions, INodeExecutionData, INodeListSearchResult, INodePropertyOptions, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Publora implements INodeType {
3
+ description: INodeTypeDescription;
4
+ methods: {
5
+ loadOptions: {
6
+ getAccounts(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
7
+ };
8
+ listSearch: {
9
+ searchPosts(this: ILoadOptionsFunctions, filter?: string): Promise<INodeListSearchResult>;
10
+ };
11
+ };
12
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
13
+ }