n8n-nodes-upload-post 0.1.18 → 0.1.20

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 CHANGED
@@ -33,22 +33,37 @@ The node provides the following operations grouped for clarity:
33
33
 
34
34
  ### Upload Actions
35
35
  - **Upload Photo(s)**: Upload one or more photos to supported platforms.
36
- - Supports file uploads and photo URLs.
37
- - Common parameters: User Identifier, Platform(s), Title, Description (optional), Photos (Files or URLs), Scheduled Date (optional).
38
- - Title/Description overrides per platform: set `[platform]_title` and `[platform]_description` to override the generic fields (e.g., `instagram_title`, `youtube_description`).
39
- - Platform-specific parameters are available for LinkedIn, Facebook, TikTok, Instagram, and Pinterest.
40
- - Pinterest: requires selecting a Board via the dynamic selector (see Selectors below).
36
+ - Supports file uploads and photo URLs (comma-separated list).
37
+ - Common parameters: User Identifier, Platform Names or IDs, Title / Main Content, Description (optional), Photos (Files or URLs), Scheduled Date (optional).
38
+ - Title/Description overrides per platform: `instagram_title`, `facebook_title`, `tiktok_title`, `linkedin_title`, `x_title`, `youtube_title`, `pinterest_title`, `threads_title`.
39
+ - Platform-specific parameters available for: Facebook, Instagram, LinkedIn, Pinterest, TikTok, X (Twitter).
40
+ - **Pinterest**: Requires Board selection via dynamic selector.
41
+ - **Instagram**: Media Type (Image/Stories), TikTok: Auto-add music, disable comments, brand content toggles.
42
+ - **Facebook**: Page selection via dynamic selector.
43
+ - **LinkedIn**: Visibility settings (Photos only), Page selection via dynamic selector.
44
+ - **X (Twitter)**: Tagged user IDs, reply settings, geo place ID.
45
+
41
46
  - **Upload Video**: Upload a single video to supported platforms.
42
47
  - Supports file uploads and video URLs.
43
- - Common parameters: User Identifier, Platform(s), Title, Description (optional), Video (File or URL), Scheduled Date (optional).
44
- - Title/Description overrides per platform supported as arriba.
45
- - YouTube: supports custom thumbnail via URL or binary (YouTube Thumbnail).
46
- - Platform-specific parameters are available for LinkedIn, Facebook, TikTok, Instagram, YouTube, Threads, X (Twitter), and Pinterest.
47
- - Pinterest: requires selecting a Board via the dynamic selector (see Selectors below).
48
+ - Common parameters: User Identifier, Platform Names or IDs, Title / Main Content, Description (optional), Video (File or URL), Scheduled Date (optional).
49
+ - Title/Description overrides per platform: `instagram_title`, `facebook_title`, `tiktok_title`, `linkedin_title`, `x_title`, `youtube_title`, `pinterest_title`.
50
+ - Platform-specific parameters available for: Facebook, Instagram, LinkedIn, Pinterest, Threads, TikTok, X (Twitter), YouTube.
51
+ - **YouTube**: Custom thumbnail (URL/binary), tags, category, privacy, embeddable, license, public stats, made for kids, synthetic media declaration, geo-restrictions, paid product placement, recording date, default language/audio language.
52
+ - **Facebook**: Page selection, video state (Published/Draft), media type (Reels/Stories).
53
+ - **Instagram**: Media type (Reels/Stories), share to feed, collaborators, cover URL, audio name, user tags, location ID, thumb offset.
54
+ - **TikTok**: Privacy level, disable duet/stitch/comments, cover timestamp, brand content toggles, AI-generated content flag, post mode.
55
+ - **LinkedIn**: Visibility settings, Page selection, video description.
56
+ - **Pinterest**: Board selection, cover image options (URL/base64/keyframe).
57
+ - **X (Twitter)**: Tagged user IDs, reply settings, nullcast, place ID, long text handling.
58
+
48
59
  - **Upload Text**: Upload a text-based post to supported platforms.
49
- - Common parameters: User Identifier, Platform(s), Title (used as content for most platforms), Scheduled Date (optional).
50
- - Facebook: supports `Facebook Link` to attach a URL with link preview.
51
- - Platform-specific parameters are available for LinkedIn, Facebook, Threads, and X (Twitter).
60
+ - Common parameters: User Identifier, Platform Names or IDs, Title / Main Content (used as post content), Scheduled Date (optional).
61
+ - Platform-specific parameters available for: Facebook, LinkedIn, Reddit, Threads, X (Twitter).
62
+ - **Facebook**: Page selection, link URL for preview.
63
+ - **LinkedIn**: Page selection ("Me" for personal profile).
64
+ - **X (Twitter)**: Reply settings, poll options (2-4 options, 5-10080 min duration), post URL, quote tweet ID, geo place ID, super followers exclusivity, community ID, sharing options, direct message deep link, card URI, long text handling.
65
+ - **Threads**: Long text as single post option.
66
+ - **Reddit**: Subreddit selection, flair ID.
52
67
 
53
68
  ### Status & History Actions
54
69
  - **Get Upload Status**: Check the status/result of an async upload by `request_id`.
@@ -65,21 +80,21 @@ The node provides the following operations grouped for clarity:
65
80
  - Tip: You can schedule any Upload action by providing the `Scheduled Date` during upload.
66
81
 
67
82
  ### Platform Selectors (Dynamic)
68
- - Facebook Pages: pick the Page from a dynamic list, or enter an ID via expression. Backed by the API endpoint documented at https://docs.upload-post.com/api/get-facebook-pages
69
- - LinkedIn Pages: pick the Organization Page from a dynamic list, or enter an ID via expression. Backed by the API endpoint documented at https://docs.upload-post.com/api/get-linkedin-pages
70
- - Pinterest Boards: pick the Board from a dynamic list, or enter an ID via expression. Backed by the API endpoint documented at https://docs.upload-post.com/api/get-pinterest-boards
83
+ - **Facebook Pages**: Dynamic picker for Facebook pages, or enter ID via expression. Required for all Facebook operations.
84
+ - **LinkedIn Pages**: Dynamic picker for organization pages with "Me (Personal Profile)" option, or enter ID via expression.
85
+ - **Pinterest Boards**: Dynamic picker for Pinterest boards, or enter ID via expression. Required for all Pinterest operations.
71
86
 
72
87
  ### User Actions (incl. JWT for custom platform integration)
73
- - ⚠️ JWT endpoints are only needed if you integrate Upload-Post into your own platform and want end-users to link their social accounts via your UI.
88
+ - ⚠️ **JWT endpoints are only needed if you integrate Upload-Post into your own platform** and want end-users to link their social accounts via your UI.
74
89
  - **List Users**: Retrieve Upload-Post profiles created under your API key.
75
90
  - **Create User**: Create a new user profile.
76
91
  - Parameters: New User Identifier (username).
77
92
  - **Delete User**: Delete an existing user profile.
78
93
  - Parameters: Username to delete.
79
94
  - **Generate JWT (for platform integration)**: Generate a connection URL (JWT) for a given profile so the user can link social accounts.
80
- - Parameters: User Identifier (username). Optional branding parameters may apply server-side.
81
- - **Validate JWT (for platform integration)**: Validate a connection token if you need to check it from your backend.
82
- - Parameters: JWT.
95
+ - Parameters: User Identifier, optional redirect URL, logo image URL, redirect button text, platform restrictions.
96
+ - **Validate JWT (for platform integration)**: Validate a connection token from your backend.
97
+ - Parameters: JWT token (password field).
83
98
 
84
99
  Refer to the [Upload Post API Documentation](https://docs.upload-post.com) for detailed information on parameters and platform requirements.
85
100
 
@@ -102,20 +117,92 @@ You have two ways to handle this in n8n:
102
117
  - Add a Wait node (e.g., 10s), then call "Get Upload Status" passing the `request_id`.
103
118
  - Loop with an IF node until the status is final (success/failed) or a max attempts limit is reached.
104
119
 
105
- ### Notable platform-specific options
106
- - Facebook: Media Type (Reels/Stories); Page picker; optional link for Text.
107
- - LinkedIn: Visibility; Organization picker; optional description override.
108
- - TikTok: Post Mode (Direct Post / Media Upload), privacy, duet/comment/stitch toggles.
109
- - Instagram: Media type (Image/Stories/Reels), video options (cover, audio, tags, etc.).
110
- - YouTube: Thumbnail via URL or file; description override; tags/category/privacy and related flags.
111
- - Threads: Description override for video; thread-related handling on backend.
112
- - Pinterest: Board picker; optional link; cover image options (URL/base64/key frame).
113
-
114
- ### Title & Description overrides
115
- - `Title / Main Content`: generic title used across platforms.
116
- - Platform title overrides: `[platform]_title` (e.g., `x_title`, `pinterest_title`).
117
- - `Description (Optional)`: generic description used across platforms when supported.
118
- - Platform description overrides: `[platform]_description` (e.g., `youtube_description`, `linkedin_description`).
120
+ ### Platform-Specific Options
121
+
122
+ #### Facebook
123
+ - **Page Selection**: Dynamic picker for Facebook pages (required for all operations).
124
+ - **Media Type (Video)**: Reels or Stories.
125
+ - **Video State**: Published or Draft.
126
+ - **Link (Text)**: URL for link preview in text posts.
127
+
128
+ #### LinkedIn
129
+ - **Page Selection**: Dynamic picker for organization pages ("Me" option for personal profiles).
130
+ - **Visibility (Photos/Video)**: Public, Connections, Logged In, Container (video only).
131
+ - **Video Description**: User commentary for video posts.
132
+
133
+ #### Instagram
134
+ - **Media Type**: Image (feed photos), Stories, Reels (video).
135
+ - **Video Options**: Share to feed, collaborators (comma-separated usernames), cover URL, audio name, user tags (comma-separated), location ID, thumb offset.
136
+ - **Photo Cover Index**: Which photo to use as cover (0-based index).
137
+
138
+ #### TikTok
139
+ - **Photo Options**: Auto-add music, disable comments, photo cover index, brand content toggles (paid partnerships/third-party brands vs own business).
140
+ - **Video Options**: Privacy level (Public/Mutual Friends/Followers/Self), disable duet/stitch/comments, cover timestamp (ms), brand content toggles, AI-generated content flag, post mode (Direct Post/Media Upload).
141
+ - **Brand Content**: Separate toggles for paid partnerships and own business promotion.
142
+
143
+ #### YouTube
144
+ - **Video Metadata**: Tags (comma-separated), category ID, privacy status (public/unlisted/private), embeddable, license, public stats viewable.
145
+ - **Compliance**: Made for kids declaration, self-declared made for kids (COPPA), contains synthetic media (AI transparency), has paid product placement (FTC).
146
+ - **Geo-Restrictions**: Allowed/blocked countries (ISO 3166-1 alpha-2 codes, mutually exclusive).
147
+ - **Language Settings**: Default language (title/description), default audio language.
148
+ - **Recording Date**: ISO 8601 timestamp.
149
+ - **Thumbnail**: Custom thumbnail via URL or binary file.
150
+
151
+ #### X (Twitter)
152
+ - **Common Options**: Tagged user IDs (comma-separated), reply settings (everyone/following/mentioned/verified/subscribers), geo place ID, long text as single post.
153
+ - **Video/Photo Options**: Nullcast (promoted-only posts), place ID.
154
+ - **Text Options**: Poll options (2-4 options, 25 chars max each, 5-10080 min duration), poll reply settings, post URL, quote tweet ID, card URI, direct message deep link.
155
+ - **Community Features**: Community ID, share with followers.
156
+ - **Super Followers**: Exclusive content for super followers.
157
+ - **Validation**: Poll options mutually exclusive with card URI, quote tweet ID, and direct message deep link.
158
+
159
+ #### Threads
160
+ - **Text Options**: Long text as single post (otherwise creates thread if >500 chars).
161
+ - **Video Options**: Description override support.
162
+
163
+ #### Pinterest
164
+ - **Board Selection**: Dynamic picker for Pinterest boards (required).
165
+ - **Link**: Optional link attachment.
166
+ - **Video Cover**: URL, base64 data with content type, or keyframe timestamp.
167
+
168
+ #### Reddit
169
+ - **Text Options**: Subreddit (without r/), flair ID for post categorization.
170
+
171
+ ### Validation Rules & Restrictions
172
+
173
+ #### X (Twitter) Poll Validation
174
+ - **Options Count**: Must contain 2-4 non-empty options.
175
+ - **Option Length**: Each option cannot exceed 25 characters.
176
+ - **Duration**: Must be between 5 and 10080 minutes (5 minutes to 7 days).
177
+ - **Mutually Exclusive**: Poll options cannot be used with Card URI, Quote Tweet ID, or Direct Message Deep Link.
178
+
179
+ #### Platform-Specific Requirements
180
+ - **Facebook**: Page selection is required for all operations.
181
+ - **Pinterest**: Board selection is required for all operations.
182
+ - **LinkedIn Photos**: Only supports PUBLIC visibility (API limitation).
183
+ - **YouTube**: Allowed/blocked countries are mutually exclusive.
184
+ - **Instagram Video**: Media type automatically defaults to REELS if invalid, IMAGE for photos.
185
+ - **TikTok Photos**: Media type automatically defaults to IMAGE if invalid.
186
+
187
+ #### File Handling
188
+ - **Photos**: Comma-separated list supporting both file paths and URLs.
189
+ - **Videos**: Single file path or URL.
190
+ - **YouTube Thumbnails**: Supports both URL and binary file uploads.
191
+ - **Pinterest Covers**: Multiple options (URL, base64 data with content type, or keyframe timestamp).
192
+
193
+ #### Scheduling
194
+ - **Date Format**: Automatic conversion to ISO 8601 with UTC timezone if not provided.
195
+ - **Asynchronous Processing**: Automatic fallback to async mode if upload exceeds 59 seconds.
196
+
197
+ ### Title & Description Overrides
198
+ - **`Title / Main Content`**: Generic title used across platforms.
199
+ - **Platform Title Overrides**: `[platform]_title` (e.g., `x_title`, `pinterest_title`, `threads_title`).
200
+ - Available for: instagram, facebook, tiktok, linkedin, x, youtube, pinterest, threads
201
+ - **`Description (Optional)`**: Generic description used for LinkedIn, Facebook, YouTube, Pinterest, TikTok when supported.
202
+ - **Platform Description Overrides**: `[platform]_description` (e.g., `youtube_description`, `linkedin_description`).
203
+ - Available for: facebook, tiktok, linkedin, youtube, pinterest
204
+
205
+ **⚠️ Runtime Validations**: The node performs automatic validations at runtime including poll constraints, mutually exclusive field checks, and platform-specific requirements. Invalid configurations will throw descriptive error messages.
119
206
 
120
207
  Related docs:
121
208
  - Profiles & JWT reference (context): [User Profiles API](https://docs.upload-post.com/api/user-profiles#create-user-profile)
@@ -142,4 +229,4 @@ If you want to contribute to this node or run it locally for development:
142
229
 
143
230
  ## License
144
231
 
145
- [MIT](LICENSE.md)
232
+ [MIT](LICENSE.md)
@@ -3,9 +3,11 @@ export declare class UploadPost implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  methods: {
5
5
  loadOptions: {
6
+ getPlatforms(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
6
7
  getFacebookPages(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
7
8
  getLinkedinPages(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
8
9
  getPinterestBoards(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
10
+ getUserProfiles(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]>;
9
11
  };
10
12
  };
11
13
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;