n8n-nodes-upload-post 0.1.56 → 0.4.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 CHANGED
@@ -75,6 +75,7 @@ The node provides the following operations grouped for clarity:
75
75
  - Supported: Facebook, Instagram, LinkedIn, Pinterest, Reddit, Threads, TikTok, X, YouTube. Analytics are not available for Bluesky, Discord, Google Business or Telegram.
76
76
  - **Get Post Analytics**: Per-post metrics for an upload, by `request_id`.
77
77
  - Parameters: Request ID, Platform (optional filter).
78
+ - On TikTok, `post_metrics` also carries `retention`, `impression_sources`, `audience_types`, `new_followers`, `reach` and the watch times.
78
79
  - **Get Post Analytics by Platform ID**: Per-post metrics for a post published outside Upload-Post.
79
80
  - Parameters: Platform Post ID, Platform, Profile Username.
80
81
  - **Get Cached Post Analytics**: Replays per-post metrics already fetched, instead of querying the platforms again, so it is not subject to the live analytics rate limit (100 requests / 5 minutes). Only contains posts previously fetched through a live per-post endpoint; there is no background refresh, so captured_at is the last time that post was read live.
@@ -114,6 +115,31 @@ The node provides the following operations grouped for clarity:
114
115
  - Parameters: JWT token (password field).
115
116
  - The API response is returned as-is; its `profile` object also carries the `ui_labels` map configured for that profile.
116
117
 
118
+ ### Comment Actions
119
+ The comment endpoints are shaped like the rest of the API: **one endpoint per question, with a `platform` parameter** that says which connected network is being asked. There is no endpoint per social network.
120
+ - **Get Post Comments**: Comments on a post from the network given by `Platform` (Instagram, Facebook, YouTube, LinkedIn or TikTok).
121
+ - Parameters: User Identifier, Platform, Post ID or URL, Comment ID (optional).
122
+ - Instagram and Facebook accept the media ID or the post URL, YouTube the video ID, LinkedIn the post URN, TikTok the video ID. TikTok has no URL lookup, so pasting a URL fails with a descriptive error instead of an upstream one.
123
+ - Fill **Comment ID** to get the replies to that comment instead of the top-level comments of the post. It is the same question with one parameter more, not a separate operation.
124
+ - **Comment Action**: Moderate one comment — hide, unhide, like, unlike, pin or unpin it.
125
+ - Parameters: User Identifier, Platform, Comment ID, Action, Post ID (shown only when it is needed).
126
+ - Each action carries its own inverse, so there is no separate toggle: `hide`/`unhide`, `like`/`unlike`, `pin`/`unpin`.
127
+ - **Post ID** is required for `hide`, `unhide`, `pin` and `unpin`, and is never sent for `like`/`unlike` — the API rejects a like that carries a post. The node checks it before the request leaves n8n.
128
+ - TikTok is the network that answers this today, and its profile needs the `comments` capability (see the `capabilities` array returned by **List Users**); an account connected before that capability existed has to reconnect TikTok.
129
+ - **Private Reply to Comment**: DM the author of a comment. Instagram only.
130
+ - **Public Reply to Comment**: Public reply under the comment. Instagram only.
131
+
132
+ ### Insight Actions
133
+ Two more questions with a `platform` parameter, not two TikTok endpoints. A network that cannot answer a question replies with `platform_not_supported` and the list of the ones that can; today that network is TikTok, whose profile needs the `profile_analytics` capability (see the `capabilities` array returned by **List Users**).
134
+ - **Get Audience**: Who follows the profile and when they are around — audience countries, cities, age brackets and genders, followers online per hour, daily followers gained and lost, profile actions and the bio.
135
+ - Parameters: User Identifier, Platform, Start Date, End Date, Benchmark Category (all optional except the first two).
136
+ - Dates are `YYYY-MM-DD`. The window is clamped **by the server**: 60 days at most, and End Date always below today. A wider range is trimmed, not rejected, so the node sends it as typed.
137
+ - Filling **Benchmark Category** adds a `benchmark` object with that niche's averages (comments, engagement rate, follower count and growth, likes, shares, video count and views) next to the account's own numbers. The 25 accepted values come back in `benchmark_categories` on every response, so filling a picker needs no extra call.
138
+ - Use this to know *who* the audience is and *when* to post; use **Get Post Analytics** for how a given post did.
139
+ - **Get Suggestions**: What to write about — hashtags or the searches people run around a seed word.
140
+ - Parameters: User Identifier, Platform, Type (`hashtags` / `keywords`), Query, Country Code, Language.
141
+ - `Type = hashtags` answers with `hashtags: [{ name, view_count }]`; `Type = keywords` answers with `keywords: [...]`. One endpoint, told apart by `type`, not by operation.
142
+
117
143
  Refer to the [Upload Post API Documentation](https://docs.upload-post.com) for detailed information on parameters and platform requirements.
118
144
 
119
145
  ### Waiting for asynchronous uploads
@@ -168,6 +194,45 @@ If you saw duplicate posts on an older version of this node, upgrade: versions b
168
194
  - **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).
169
195
  - **Brand Content**: Separate toggles for paid partnerships and own business promotion.
170
196
 
197
+ #### TikTok Advanced Video Options
198
+
199
+ > **Capability-gated.** `GET /api/uploadposts/users` returns a `capabilities`
200
+ > array on each TikTok account (`music`, `location`, `cover_image`,
201
+ > `cover_timestamp`, `draft`, `photo_privacy`, `video_privacy`,
202
+ > `inbox_fallback`, `profile_analytics`). If the connection does not declare the capability an option
203
+ > needs, the API ignores that field, the post still publishes and the response
204
+ > includes a per-field warning — reconnect the TikTok account to enable it.
205
+ > These options are only sent when actually filled in, so leaving them at their
206
+ > defaults keeps the previous behaviour.
207
+
208
+ - **Music** (`music`): TikTok Music ID — the `id` of a track returned by `GET /api/uploadposts/tiktok/music/trending` or `GET /api/uploadposts/tiktok/music/search` (not its `commercial_music_id`) — plus music volume (0-100) and music start/end offsets in ms. The Music ID works on **video and photo** posts; the volume and the offsets are video-only, because TikTok's photo contract takes the track id alone.
209
+
210
+ To pick a track by name inside a workflow, put an **HTTP Request** node before
211
+ this one calling
212
+ `GET https://api.upload-post.com/api/uploadposts/tiktok/music/search?profile=<profile>&q=<song or artist>`
213
+ with the header `Authorization: Apikey <your key>`, and feed `tracks[0].id`
214
+ into TikTok Music ID. It also accepts `genre`, `country_code`, `date_range`
215
+ and `limit`. Note that TikTok has **no music search endpoint**: the search
216
+ runs over the trending charts Upload-Post caches per genre/country/period, so
217
+ it finds trending tracks, not TikTok's entire catalogue.
218
+ - **Original Sound Volume**: Volume (0-100) of the video's own audio when music is added. Keep it above 0 so the original audio is not muted. Music volume and original sound volume are only sent when a Music ID is set.
219
+ - **Location** (`location`): TikTok Location ID plus TikTok Location Name — TikTok requires both together. Works on video and photo posts.
220
+ - **Cover Image URL** (`cover_image`): Custom cover image, takes priority over the cover timestamp. Video only.
221
+ - **Is AI Generated**: AI-generated content disclosure. Works on video and photo posts.
222
+ - **Upload to Draft** (`draft`): Sends the video to TikTok drafts instead of publishing; TikTok then ignores the rest of the post settings. Video only.
223
+
224
+ > **Privacy level on TikTok.** `privacy_level` is accepted on video and photo
225
+ > uploads alike (capabilities `video_privacy` / `photo_privacy`), but **TikTok
226
+ > decides per account which values are available**: a private account is offered
227
+ > Followers / Mutual Friends / Self Only and has no Public. Asking for one the
228
+ > account does not have fails with `tiktok_privacy_unavailable`, and the error
229
+ > lists the ones it does have. The **Account Default** option on the TikTok
230
+ > Privacy Level (Video) field sends nothing and lets TikTok apply the account's
231
+ > own setting — the only choice guaranteed to work on every account, and the
232
+ > default for new nodes. Photo posts default to Public. To pick a value up front,
233
+ > query `GET /api/uploadposts/tiktok/settings?profile=<profile>` from an HTTP
234
+ > Request node and read `privacy_level_options`.
235
+
171
236
  #### YouTube
172
237
  - **Video Metadata**: Tags (comma-separated), category ID, privacy status (public/unlisted/private), embeddable, license, public stats viewable.
173
238
  - **Compliance**: Made for kids declaration, self-declared made for kids (COPPA), contains synthetic media (AI transparency), has paid product placement (FTC).
@@ -229,6 +294,10 @@ If you saw duplicate posts on an older version of this node, upgrade: versions b
229
294
  - **`Description (Optional)`**: Generic description used for LinkedIn, Facebook, YouTube, Pinterest, TikTok when supported.
230
295
  - **Platform Description Overrides**: `[platform]_description` (e.g., `youtube_description`, `linkedin_description`).
231
296
  - Available for: facebook, tiktok, linkedin, youtube, pinterest
297
+ - **`First Comment`**: Generic first comment posted right after publishing.
298
+ - **Platform First Comment Overrides**: `[platform]_first_comment` (e.g., `instagram_first_comment`, `tiktok_first_comment`).
299
+ - Available for: instagram, facebook, x, threads, youtube (video only), reddit, bluesky, linkedin, tiktok (media only).
300
+ - TikTok needs the `comments` capability on the profile's TikTok account.
232
301
 
233
302
  **⚠️ 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.
234
303