n8n-nodes-upload-post 0.1.39 → 0.1.42

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.
@@ -6,6 +6,7 @@ const MANUAL_USER_VALUE = '__manual_user__';
6
6
  const MANUAL_FACEBOOK_VALUE = '__manual_facebook__';
7
7
  const MANUAL_LINKEDIN_VALUE = '__manual_linkedin__';
8
8
  const MANUAL_PINTEREST_VALUE = '__manual_pinterest__';
9
+ const MANUAL_PLATFORM_VALUE = '__manual_platform__';
9
10
  const isBinaryFormField = (value) => {
10
11
  return typeof value === 'object' && value !== null && 'value' in value;
11
12
  };
@@ -221,11 +222,18 @@ const prepareUploadBase = (ctx, operation) => {
221
222
  pollTimeout,
222
223
  };
223
224
  };
224
- const applyPinterestOptions = (ctx, operation, formData) => {
225
- const selection = ctx.node.getNodeParameter('pinterestBoardId', ctx.itemIndex, '');
226
- const pinterestBoardId = selection === MANUAL_PINTEREST_VALUE
227
- ? ctx.node.getNodeParameter('pinterestBoardIdManual', ctx.itemIndex)
228
- : selection;
225
+ const applyPinterestOptions = (ctx, operation, formData, isManualPlatform = false) => {
226
+ let pinterestBoardId = '';
227
+ if (isManualPlatform) {
228
+ pinterestBoardId = ctx.node.getNodeParameter('pinterestBoardIdManualEntry', ctx.itemIndex, '');
229
+ }
230
+ else {
231
+ const selection = ctx.node.getNodeParameter('pinterestBoardId', ctx.itemIndex, '');
232
+ pinterestBoardId =
233
+ selection === MANUAL_PINTEREST_VALUE
234
+ ? ctx.node.getNodeParameter('pinterestBoardIdManual', ctx.itemIndex)
235
+ : selection;
236
+ }
229
237
  if (pinterestBoardId) {
230
238
  formData.pinterest_board_id = pinterestBoardId;
231
239
  }
@@ -257,11 +265,18 @@ const applyPinterestOptions = (ctx, operation, formData) => {
257
265
  }
258
266
  }
259
267
  };
260
- const applyLinkedinOptions = (ctx, operation, formData) => {
261
- const selection = ctx.node.getNodeParameter('targetLinkedinPageId', ctx.itemIndex, '');
262
- const resolvedValue = selection === MANUAL_LINKEDIN_VALUE
263
- ? ctx.node.getNodeParameter('targetLinkedinPageIdManual', ctx.itemIndex)
264
- : selection;
268
+ const applyLinkedinOptions = (ctx, operation, formData, isManualPlatform = false) => {
269
+ let resolvedValue = '';
270
+ if (isManualPlatform) {
271
+ resolvedValue = ctx.node.getNodeParameter('targetLinkedinPageIdManualEntry', ctx.itemIndex, '');
272
+ }
273
+ else {
274
+ const selection = ctx.node.getNodeParameter('targetLinkedinPageId', ctx.itemIndex, '');
275
+ resolvedValue =
276
+ selection === MANUAL_LINKEDIN_VALUE
277
+ ? ctx.node.getNodeParameter('targetLinkedinPageIdManual', ctx.itemIndex)
278
+ : selection;
279
+ }
265
280
  if (resolvedValue && resolvedValue !== 'me') {
266
281
  const match = resolvedValue.match(/(\d+)$/);
267
282
  formData.target_linkedin_page_id = match ? match[1] : resolvedValue;
@@ -285,12 +300,20 @@ const applyLinkedinOptions = (ctx, operation, formData) => {
285
300
  }
286
301
  }
287
302
  };
288
- const applyFacebookOptions = (ctx, operation, formData) => {
289
- const selection = ctx.node.getNodeParameter('facebookPageId', ctx.itemIndex);
290
- const resolvedValue = selection === MANUAL_FACEBOOK_VALUE
291
- ? ctx.node.getNodeParameter('facebookPageIdManual', ctx.itemIndex)
292
- : selection;
293
- formData.facebook_page_id = resolvedValue;
303
+ const applyFacebookOptions = (ctx, operation, formData, isManualPlatform = false) => {
304
+ let resolvedValue = '';
305
+ if (isManualPlatform) {
306
+ resolvedValue = ctx.node.getNodeParameter('facebookPageIdManualEntry', ctx.itemIndex, '');
307
+ }
308
+ else {
309
+ const selection = ctx.node.getNodeParameter('facebookPageId', ctx.itemIndex);
310
+ resolvedValue =
311
+ selection === MANUAL_FACEBOOK_VALUE
312
+ ? ctx.node.getNodeParameter('facebookPageIdManual', ctx.itemIndex)
313
+ : selection;
314
+ }
315
+ if (resolvedValue)
316
+ formData.facebook_page_id = resolvedValue;
294
317
  if (operation === 'uploadVideo') {
295
318
  const facebookVideoState = ctx.node.getNodeParameter('facebookVideoState', ctx.itemIndex, '');
296
319
  const facebookMediaType = ctx.node.getNodeParameter('facebookMediaType', ctx.itemIndex, '');
@@ -562,14 +585,15 @@ const applyRedditOptions = (ctx, formData) => {
562
585
  };
563
586
  const applyUploadPlatformOptions = async (ctx, operation, prep) => {
564
587
  const { formData, platforms } = prep;
565
- if (platforms.includes('pinterest')) {
566
- applyPinterestOptions(ctx, operation, formData);
588
+ const isManualPlatform = platforms.includes(MANUAL_PLATFORM_VALUE);
589
+ if (platforms.includes('pinterest') || isManualPlatform) {
590
+ applyPinterestOptions(ctx, operation, formData, isManualPlatform);
567
591
  }
568
- if (platforms.includes('linkedin')) {
569
- applyLinkedinOptions(ctx, operation, formData);
592
+ if (platforms.includes('linkedin') || isManualPlatform) {
593
+ applyLinkedinOptions(ctx, operation, formData, isManualPlatform);
570
594
  }
571
- if (platforms.includes('facebook')) {
572
- applyFacebookOptions(ctx, operation, formData);
595
+ if (platforms.includes('facebook') || isManualPlatform) {
596
+ applyFacebookOptions(ctx, operation, formData, isManualPlatform);
573
597
  }
574
598
  if (platforms.includes('tiktok')) {
575
599
  applyTiktokOptions(ctx, operation, formData);
@@ -671,8 +695,9 @@ const buildUploadDocumentRequest = async (ctx) => {
671
695
  prep.formData.document = binaryField;
672
696
  }
673
697
  }
674
- if (prep.platforms.includes('linkedin')) {
675
- applyLinkedinOptions(ctx, 'uploadDocument', prep.formData);
698
+ const isManualDoc = prep.platforms.includes(MANUAL_PLATFORM_VALUE);
699
+ if (prep.platforms.includes('linkedin') || isManualDoc) {
700
+ applyLinkedinOptions(ctx, 'uploadDocument', prep.formData, isManualDoc);
676
701
  }
677
702
  return {
678
703
  endpoint: '/upload_document',
@@ -935,6 +960,7 @@ class UploadPost {
935
960
  defaults: {
936
961
  name: 'Upload Post',
937
962
  },
963
+ usableAsTool: true,
938
964
  inputs: ["main"],
939
965
  outputs: ["main"],
940
966
  credentials: [
@@ -1073,7 +1099,7 @@ class UploadPost {
1073
1099
  type: 'string',
1074
1100
  default: '',
1075
1101
  description: 'Optional override for Bluesky title (max 300 characters)',
1076
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['bluesky'] } },
1102
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['bluesky', '__manual_platform__'] } },
1077
1103
  },
1078
1104
  {
1079
1105
  displayName: 'Instagram Title (Override)',
@@ -1081,7 +1107,7 @@ class UploadPost {
1081
1107
  type: 'string',
1082
1108
  default: '',
1083
1109
  description: 'Optional override for Instagram title',
1084
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['instagram'] } },
1110
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['instagram', '__manual_platform__'] } },
1085
1111
  },
1086
1112
  {
1087
1113
  displayName: 'Facebook Title (Override)',
@@ -1089,7 +1115,7 @@ class UploadPost {
1089
1115
  type: 'string',
1090
1116
  default: '',
1091
1117
  description: 'Optional override for Facebook title',
1092
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['facebook'] } },
1118
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['facebook', '__manual_platform__'] } },
1093
1119
  },
1094
1120
  {
1095
1121
  displayName: 'TikTok Title (Override)',
@@ -1097,7 +1123,7 @@ class UploadPost {
1097
1123
  type: 'string',
1098
1124
  default: '',
1099
1125
  description: 'Optional override for TikTok title',
1100
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['tiktok'] } },
1126
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['tiktok', '__manual_platform__'] } },
1101
1127
  },
1102
1128
  {
1103
1129
  displayName: 'LinkedIn Title (Override)',
@@ -1105,7 +1131,7 @@ class UploadPost {
1105
1131
  type: 'string',
1106
1132
  default: '',
1107
1133
  description: 'Optional override for LinkedIn title',
1108
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['linkedin'] } },
1134
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['linkedin', '__manual_platform__'] } },
1109
1135
  },
1110
1136
  {
1111
1137
  displayName: 'X Title (Override)',
@@ -1113,7 +1139,7 @@ class UploadPost {
1113
1139
  type: 'string',
1114
1140
  default: '',
1115
1141
  description: 'Optional override for X title',
1116
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['x'] } },
1142
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['x', '__manual_platform__'] } },
1117
1143
  },
1118
1144
  {
1119
1145
  displayName: 'YouTube Title (Override)',
@@ -1121,7 +1147,7 @@ class UploadPost {
1121
1147
  type: 'string',
1122
1148
  default: '',
1123
1149
  description: 'Optional override for YouTube title',
1124
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['youtube'] } },
1150
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['youtube', '__manual_platform__'] } },
1125
1151
  },
1126
1152
  {
1127
1153
  displayName: 'Pinterest Title (Override)',
@@ -1129,7 +1155,7 @@ class UploadPost {
1129
1155
  type: 'string',
1130
1156
  default: '',
1131
1157
  description: 'Optional override for Pinterest title',
1132
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['pinterest'] } },
1158
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['pinterest', '__manual_platform__'] } },
1133
1159
  },
1134
1160
  {
1135
1161
  displayName: 'Threads Title (Override)',
@@ -1137,7 +1163,7 @@ class UploadPost {
1137
1163
  type: 'string',
1138
1164
  default: '',
1139
1165
  description: 'Optional override for Threads title',
1140
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['threads'] } },
1166
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['threads', '__manual_platform__'] } },
1141
1167
  },
1142
1168
  {
1143
1169
  displayName: 'Description (Optional)',
@@ -1148,7 +1174,7 @@ class UploadPost {
1148
1174
  displayOptions: {
1149
1175
  show: {
1150
1176
  operation: ['uploadPhotos', 'uploadVideo'],
1151
- platform: ['linkedin', 'facebook', 'youtube', 'pinterest', 'tiktok']
1177
+ platform: ['linkedin', 'facebook', 'youtube', 'pinterest', 'tiktok', '__manual_platform__']
1152
1178
  }
1153
1179
  },
1154
1180
  },
@@ -1158,7 +1184,7 @@ class UploadPost {
1158
1184
  type: 'string',
1159
1185
  default: '',
1160
1186
  description: 'Override for Facebook description/message when supported (Reels/feed, albums). Falls back to the main title when empty.',
1161
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['facebook'] } },
1187
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['facebook', '__manual_platform__'] } },
1162
1188
  },
1163
1189
  {
1164
1190
  displayName: 'TikTok Description (Override)',
@@ -1166,7 +1192,7 @@ class UploadPost {
1166
1192
  type: 'string',
1167
1193
  default: '',
1168
1194
  description: 'Override for TikTok photo post description. Video uploads ignore this value.',
1169
- displayOptions: { show: { operation: ['uploadPhotos'], platform: ['tiktok'] } },
1195
+ displayOptions: { show: { operation: ['uploadPhotos'], platform: ['tiktok', '__manual_platform__'] } },
1170
1196
  },
1171
1197
  {
1172
1198
  displayName: 'LinkedIn Description (Override)',
@@ -1174,7 +1200,7 @@ class UploadPost {
1174
1200
  type: 'string',
1175
1201
  default: '',
1176
1202
  description: 'Override for LinkedIn post commentary. When empty we repeat the main title.',
1177
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['linkedin'] } },
1203
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['linkedin', '__manual_platform__'] } },
1178
1204
  },
1179
1205
  {
1180
1206
  displayName: 'YouTube Description (Override)',
@@ -1182,7 +1208,7 @@ class UploadPost {
1182
1208
  type: 'string',
1183
1209
  default: '',
1184
1210
  description: 'Override for YouTube video description. When empty we default to the main title.',
1185
- displayOptions: { show: { operation: ['uploadVideo'], platform: ['youtube'] } },
1211
+ displayOptions: { show: { operation: ['uploadVideo'], platform: ['youtube', '__manual_platform__'] } },
1186
1212
  },
1187
1213
  {
1188
1214
  displayName: 'Pinterest Alt Text (Override)',
@@ -1190,7 +1216,7 @@ class UploadPost {
1190
1216
  type: 'string',
1191
1217
  default: '',
1192
1218
  description: 'Optional override for Pinterest alt text',
1193
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['pinterest'] } },
1219
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['pinterest', '__manual_platform__'] } },
1194
1220
  },
1195
1221
  {
1196
1222
  displayName: 'Pinterest Description (Override)',
@@ -1198,7 +1224,7 @@ class UploadPost {
1198
1224
  type: 'string',
1199
1225
  default: '',
1200
1226
  description: 'Override for Pinterest pin description (and alt text fallback). When empty we re-use the main title.',
1201
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['pinterest'] } },
1227
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['pinterest', '__manual_platform__'] } },
1202
1228
  },
1203
1229
  {
1204
1230
  displayName: 'Instagram First Comment (Override)',
@@ -1206,7 +1232,7 @@ class UploadPost {
1206
1232
  type: 'string',
1207
1233
  default: '',
1208
1234
  description: 'Optional override for Instagram first comment. If provided, overrides the generic First Comment for Instagram.',
1209
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['instagram'] } },
1235
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo'], platform: ['instagram', '__manual_platform__'] } },
1210
1236
  },
1211
1237
  {
1212
1238
  displayName: 'Facebook First Comment (Override)',
@@ -1214,7 +1240,7 @@ class UploadPost {
1214
1240
  type: 'string',
1215
1241
  default: '',
1216
1242
  description: 'Optional override for Facebook first comment. If provided, overrides the generic First Comment for Facebook.',
1217
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['facebook'] } },
1243
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['facebook', '__manual_platform__'] } },
1218
1244
  },
1219
1245
  {
1220
1246
  displayName: 'X First Comment (Override)',
@@ -1222,7 +1248,7 @@ class UploadPost {
1222
1248
  type: 'string',
1223
1249
  default: '',
1224
1250
  description: 'Optional override for X (Twitter) first comment/reply. If provided, overrides the generic First Comment for X.',
1225
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['x'] } },
1251
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['x', '__manual_platform__'] } },
1226
1252
  },
1227
1253
  {
1228
1254
  displayName: 'Threads First Comment (Override)',
@@ -1230,7 +1256,7 @@ class UploadPost {
1230
1256
  type: 'string',
1231
1257
  default: '',
1232
1258
  description: 'Optional override for Threads first comment/reply. If provided, overrides the generic First Comment for Threads.',
1233
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['threads'] } },
1259
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['threads', '__manual_platform__'] } },
1234
1260
  },
1235
1261
  {
1236
1262
  displayName: 'YouTube First Comment (Override)',
@@ -1238,7 +1264,7 @@ class UploadPost {
1238
1264
  type: 'string',
1239
1265
  default: '',
1240
1266
  description: 'Optional override for YouTube first comment. If provided, overrides the generic First Comment for YouTube.',
1241
- displayOptions: { show: { operation: ['uploadVideo'], platform: ['youtube'] } },
1267
+ displayOptions: { show: { operation: ['uploadVideo'], platform: ['youtube', '__manual_platform__'] } },
1242
1268
  },
1243
1269
  {
1244
1270
  displayName: 'Reddit First Comment (Override)',
@@ -1246,7 +1272,7 @@ class UploadPost {
1246
1272
  type: 'string',
1247
1273
  default: '',
1248
1274
  description: 'Optional override for Reddit first comment. If provided, overrides the generic First Comment for Reddit.',
1249
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadText'], platform: ['reddit'] } },
1275
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadText'], platform: ['reddit', '__manual_platform__'] } },
1250
1276
  },
1251
1277
  {
1252
1278
  displayName: 'Bluesky First Comment (Override)',
@@ -1254,7 +1280,7 @@ class UploadPost {
1254
1280
  type: 'string',
1255
1281
  default: '',
1256
1282
  description: 'Optional override for Bluesky first comment/reply. If provided, overrides the generic First Comment for Bluesky.',
1257
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['bluesky'] } },
1283
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['bluesky', '__manual_platform__'] } },
1258
1284
  },
1259
1285
  {
1260
1286
  displayName: 'Photos (Files or URLs)',
@@ -1304,7 +1330,7 @@ class UploadPost {
1304
1330
  displayOptions: {
1305
1331
  show: {
1306
1332
  operation: ['uploadDocument'],
1307
- platform: ['linkedin'],
1333
+ platform: ['linkedin', '__manual_platform__'],
1308
1334
  },
1309
1335
  },
1310
1336
  },
@@ -1556,7 +1582,7 @@ class UploadPost {
1556
1582
  displayOptions: {
1557
1583
  show: {
1558
1584
  operation: ['uploadPhotos', 'uploadVideo', 'uploadDocument'],
1559
- platform: ['linkedin']
1585
+ platform: ['linkedin', '__manual_platform__']
1560
1586
  },
1561
1587
  },
1562
1588
  },
@@ -1571,7 +1597,7 @@ class UploadPost {
1571
1597
  displayOptions: {
1572
1598
  show: {
1573
1599
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText', 'uploadDocument'],
1574
- platform: ['linkedin']
1600
+ platform: ['linkedin', '__manual_platform__']
1575
1601
  }
1576
1602
  },
1577
1603
  },
@@ -1579,7 +1605,6 @@ class UploadPost {
1579
1605
  displayName: 'LinkedIn Page Name or ID (Manual Entry)',
1580
1606
  name: 'targetLinkedinPageIdManual',
1581
1607
  type: 'string',
1582
- required: true,
1583
1608
  default: '',
1584
1609
  description: 'Provide the LinkedIn page identifier when it does not appear in the list',
1585
1610
  displayOptions: {
@@ -1599,7 +1624,7 @@ class UploadPost {
1599
1624
  displayOptions: {
1600
1625
  show: {
1601
1626
  operation: ['uploadVideo'],
1602
- platform: ['linkedin']
1627
+ platform: ['linkedin', '__manual_platform__']
1603
1628
  },
1604
1629
  },
1605
1630
  },
@@ -1608,14 +1633,13 @@ class UploadPost {
1608
1633
  name: 'facebookPageId',
1609
1634
  type: 'options',
1610
1635
  noDataExpression: true,
1611
- required: true,
1612
1636
  default: '',
1613
1637
  description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
1614
1638
  typeOptions: { loadOptionsMethod: 'getFacebookPages', loadOptionsDependsOn: ['user'] },
1615
1639
  displayOptions: {
1616
1640
  show: {
1617
1641
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
1618
- platform: ['facebook']
1642
+ platform: ['facebook', '__manual_platform__']
1619
1643
  }
1620
1644
  },
1621
1645
  },
@@ -1623,7 +1647,6 @@ class UploadPost {
1623
1647
  displayName: 'Facebook Page Name or ID (Manual Entry)',
1624
1648
  name: 'facebookPageIdManual',
1625
1649
  type: 'string',
1626
- required: true,
1627
1650
  default: '',
1628
1651
  description: 'Provide the Facebook page identifier when it does not appear in the list',
1629
1652
  displayOptions: {
@@ -1643,7 +1666,7 @@ class UploadPost {
1643
1666
  displayOptions: {
1644
1667
  show: {
1645
1668
  operation: ['uploadText'],
1646
- platform: ['facebook']
1669
+ platform: ['facebook', '__manual_platform__']
1647
1670
  },
1648
1671
  },
1649
1672
  },
@@ -1656,7 +1679,7 @@ class UploadPost {
1656
1679
  displayOptions: {
1657
1680
  show: {
1658
1681
  operation: ['uploadVideo'],
1659
- platform: ['facebook']
1682
+ platform: ['facebook', '__manual_platform__']
1660
1683
  },
1661
1684
  },
1662
1685
  },
@@ -1673,7 +1696,7 @@ class UploadPost {
1673
1696
  displayOptions: {
1674
1697
  show: {
1675
1698
  operation: ['uploadVideo'],
1676
- platform: ['facebook']
1699
+ platform: ['facebook', '__manual_platform__']
1677
1700
  },
1678
1701
  },
1679
1702
  },
@@ -1690,7 +1713,7 @@ class UploadPost {
1690
1713
  displayOptions: {
1691
1714
  show: {
1692
1715
  operation: ['uploadVideo'],
1693
- platform: ['facebook']
1716
+ platform: ['facebook', '__manual_platform__']
1694
1717
  },
1695
1718
  },
1696
1719
  },
@@ -1707,7 +1730,7 @@ class UploadPost {
1707
1730
  displayOptions: {
1708
1731
  show: {
1709
1732
  operation: ['uploadPhotos'],
1710
- platform: ['facebook']
1733
+ platform: ['facebook', '__manual_platform__']
1711
1734
  },
1712
1735
  },
1713
1736
  },
@@ -1720,7 +1743,7 @@ class UploadPost {
1720
1743
  displayOptions: {
1721
1744
  show: {
1722
1745
  operation: ['uploadPhotos'],
1723
- platform: ['tiktok']
1746
+ platform: ['tiktok', '__manual_platform__']
1724
1747
  },
1725
1748
  },
1726
1749
  },
@@ -1733,7 +1756,7 @@ class UploadPost {
1733
1756
  displayOptions: {
1734
1757
  show: {
1735
1758
  operation: ['uploadPhotos', 'uploadVideo'],
1736
- platform: ['tiktok']
1759
+ platform: ['tiktok', '__manual_platform__']
1737
1760
  },
1738
1761
  },
1739
1762
  },
@@ -1747,7 +1770,7 @@ class UploadPost {
1747
1770
  displayOptions: {
1748
1771
  show: {
1749
1772
  operation: ['uploadPhotos'],
1750
- platform: ['tiktok']
1773
+ platform: ['tiktok', '__manual_platform__']
1751
1774
  },
1752
1775
  },
1753
1776
  },
@@ -1760,7 +1783,7 @@ class UploadPost {
1760
1783
  displayOptions: {
1761
1784
  show: {
1762
1785
  operation: ['uploadPhotos'],
1763
- platform: ['tiktok']
1786
+ platform: ['tiktok', '__manual_platform__']
1764
1787
  },
1765
1788
  },
1766
1789
  },
@@ -1773,7 +1796,7 @@ class UploadPost {
1773
1796
  displayOptions: {
1774
1797
  show: {
1775
1798
  operation: ['uploadPhotos'],
1776
- platform: ['tiktok']
1799
+ platform: ['tiktok', '__manual_platform__']
1777
1800
  },
1778
1801
  },
1779
1802
  },
@@ -1786,7 +1809,7 @@ class UploadPost {
1786
1809
  displayOptions: {
1787
1810
  show: {
1788
1811
  operation: ['uploadPhotos'],
1789
- platform: ['tiktok']
1812
+ platform: ['tiktok', '__manual_platform__']
1790
1813
  },
1791
1814
  },
1792
1815
  },
@@ -1805,7 +1828,7 @@ class UploadPost {
1805
1828
  displayOptions: {
1806
1829
  show: {
1807
1830
  operation: ['uploadVideo'],
1808
- platform: ['tiktok']
1831
+ platform: ['tiktok', '__manual_platform__']
1809
1832
  },
1810
1833
  },
1811
1834
  },
@@ -1818,7 +1841,7 @@ class UploadPost {
1818
1841
  displayOptions: {
1819
1842
  show: {
1820
1843
  operation: ['uploadVideo'],
1821
- platform: ['tiktok']
1844
+ platform: ['tiktok', '__manual_platform__']
1822
1845
  },
1823
1846
  },
1824
1847
  },
@@ -1831,7 +1854,7 @@ class UploadPost {
1831
1854
  displayOptions: {
1832
1855
  show: {
1833
1856
  operation: ['uploadVideo'],
1834
- platform: ['tiktok']
1857
+ platform: ['tiktok', '__manual_platform__']
1835
1858
  },
1836
1859
  },
1837
1860
  },
@@ -1844,7 +1867,7 @@ class UploadPost {
1844
1867
  displayOptions: {
1845
1868
  show: {
1846
1869
  operation: ['uploadVideo'],
1847
- platform: ['tiktok']
1870
+ platform: ['tiktok', '__manual_platform__']
1848
1871
  },
1849
1872
  },
1850
1873
  },
@@ -1857,7 +1880,7 @@ class UploadPost {
1857
1880
  displayOptions: {
1858
1881
  show: {
1859
1882
  operation: ['uploadVideo'],
1860
- platform: ['tiktok']
1883
+ platform: ['tiktok', '__manual_platform__']
1861
1884
  },
1862
1885
  },
1863
1886
  },
@@ -1870,7 +1893,7 @@ class UploadPost {
1870
1893
  displayOptions: {
1871
1894
  show: {
1872
1895
  operation: ['uploadVideo'],
1873
- platform: ['tiktok']
1896
+ platform: ['tiktok', '__manual_platform__']
1874
1897
  },
1875
1898
  },
1876
1899
  },
@@ -1883,7 +1906,7 @@ class UploadPost {
1883
1906
  displayOptions: {
1884
1907
  show: {
1885
1908
  operation: ['uploadVideo'],
1886
- platform: ['tiktok']
1909
+ platform: ['tiktok', '__manual_platform__']
1887
1910
  }
1888
1911
  },
1889
1912
  },
@@ -1900,7 +1923,7 @@ class UploadPost {
1900
1923
  displayOptions: {
1901
1924
  show: {
1902
1925
  operation: ['uploadVideo'],
1903
- platform: ['tiktok']
1926
+ platform: ['tiktok', '__manual_platform__']
1904
1927
  }
1905
1928
  },
1906
1929
  },
@@ -1918,7 +1941,7 @@ class UploadPost {
1918
1941
  displayOptions: {
1919
1942
  show: {
1920
1943
  operation: ['uploadPhotos', 'uploadVideo'],
1921
- platform: ['instagram']
1944
+ platform: ['instagram', '__manual_platform__']
1922
1945
  },
1923
1946
  },
1924
1947
  },
@@ -1936,7 +1959,7 @@ class UploadPost {
1936
1959
  displayOptions: {
1937
1960
  show: {
1938
1961
  operation: ['uploadVideo'],
1939
- platform: ['instagram'],
1962
+ platform: ['instagram', '__manual_platform__'],
1940
1963
  instagramMediaType: ['REELS'],
1941
1964
  },
1942
1965
  },
@@ -1950,7 +1973,7 @@ class UploadPost {
1950
1973
  displayOptions: {
1951
1974
  show: {
1952
1975
  operation: ['uploadVideo'],
1953
- platform: ['instagram'],
1976
+ platform: ['instagram', '__manual_platform__'],
1954
1977
  instagramShareMode: ['CUSTOM'],
1955
1978
  },
1956
1979
  },
@@ -1962,7 +1985,7 @@ class UploadPost {
1962
1985
  default: '',
1963
1986
  description: 'Comma-separated collaborator usernames for Instagram. Sent as a string.',
1964
1987
  displayOptions: { show: { operation: ['uploadVideo', 'uploadPhotos'],
1965
- platform: ['instagram']
1988
+ platform: ['instagram', '__manual_platform__']
1966
1989
  },
1967
1990
  },
1968
1991
  },
@@ -1975,7 +1998,7 @@ class UploadPost {
1975
1998
  displayOptions: {
1976
1999
  show: {
1977
2000
  operation: ['uploadVideo'],
1978
- platform: ['instagram']
2001
+ platform: ['instagram', '__manual_platform__']
1979
2002
  },
1980
2003
  },
1981
2004
  },
@@ -1988,7 +2011,7 @@ class UploadPost {
1988
2011
  displayOptions: {
1989
2012
  show: {
1990
2013
  operation: ['uploadVideo'],
1991
- platform: ['instagram']
2014
+ platform: ['instagram', '__manual_platform__']
1992
2015
  },
1993
2016
  },
1994
2017
  },
@@ -1999,7 +2022,7 @@ class UploadPost {
1999
2022
  default: '',
2000
2023
  description: 'Comma-separated user tags for Instagram. Sent as a string.',
2001
2024
  displayOptions: { show: { operation: ['uploadVideo', 'uploadPhotos'],
2002
- platform: ['instagram']
2025
+ platform: ['instagram', '__manual_platform__']
2003
2026
  },
2004
2027
  },
2005
2028
  },
@@ -2009,7 +2032,7 @@ class UploadPost {
2009
2032
  type: 'string',
2010
2033
  default: '',
2011
2034
  displayOptions: { show: { operation: ['uploadVideo', 'uploadPhotos'],
2012
- platform: ['instagram']
2035
+ platform: ['instagram', '__manual_platform__']
2013
2036
  },
2014
2037
  },
2015
2038
  },
@@ -2022,7 +2045,7 @@ class UploadPost {
2022
2045
  displayOptions: {
2023
2046
  show: {
2024
2047
  operation: ['uploadVideo'],
2025
- platform: ['instagram']
2048
+ platform: ['instagram', '__manual_platform__']
2026
2049
  }
2027
2050
  },
2028
2051
  },
@@ -2032,16 +2055,15 @@ class UploadPost {
2032
2055
  type: 'boolean',
2033
2056
  default: false,
2034
2057
  description: 'Whether long text is published as a single post. If false (default), a thread is created if the text exceeds 500 characters.',
2035
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['threads'] } },
2058
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadVideo', 'uploadText'], platform: ['threads', '__manual_platform__'] } },
2036
2059
  },
2037
2060
  {
2038
2061
  displayName: 'Reddit Subreddit',
2039
2062
  name: 'redditSubreddit',
2040
2063
  type: 'string',
2041
- required: true,
2042
2064
  default: '',
2043
2065
  description: 'Destination subreddit, without r/ (e.g., python)',
2044
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadText'], platform: ['reddit'] } },
2066
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadText'], platform: ['reddit', '__manual_platform__'] } },
2045
2067
  },
2046
2068
  {
2047
2069
  displayName: 'Reddit Flair ID',
@@ -2049,7 +2071,7 @@ class UploadPost {
2049
2071
  type: 'string',
2050
2072
  default: '',
2051
2073
  description: 'ID of the flair template to apply to the post',
2052
- displayOptions: { show: { operation: ['uploadPhotos', 'uploadText'], platform: ['reddit'] } },
2074
+ displayOptions: { show: { operation: ['uploadPhotos', 'uploadText'], platform: ['reddit', '__manual_platform__'] } },
2053
2075
  },
2054
2076
  {
2055
2077
  displayName: 'YouTube Tags',
@@ -2060,7 +2082,7 @@ class UploadPost {
2060
2082
  displayOptions: {
2061
2083
  show: {
2062
2084
  operation: ['uploadVideo'],
2063
- platform: ['youtube']
2085
+ platform: ['youtube', '__manual_platform__']
2064
2086
  },
2065
2087
  },
2066
2088
  },
@@ -2073,7 +2095,7 @@ class UploadPost {
2073
2095
  displayOptions: {
2074
2096
  show: {
2075
2097
  operation: ['uploadVideo'],
2076
- platform: ['youtube']
2098
+ platform: ['youtube', '__manual_platform__']
2077
2099
  },
2078
2100
  },
2079
2101
  },
@@ -2091,7 +2113,7 @@ class UploadPost {
2091
2113
  displayOptions: {
2092
2114
  show: {
2093
2115
  operation: ['uploadVideo'],
2094
- platform: ['youtube']
2116
+ platform: ['youtube', '__manual_platform__']
2095
2117
  },
2096
2118
  },
2097
2119
  },
@@ -2104,7 +2126,7 @@ class UploadPost {
2104
2126
  displayOptions: {
2105
2127
  show: {
2106
2128
  operation: ['uploadVideo'],
2107
- platform: ['youtube']
2129
+ platform: ['youtube', '__manual_platform__']
2108
2130
  },
2109
2131
  },
2110
2132
  },
@@ -2121,7 +2143,7 @@ class UploadPost {
2121
2143
  displayOptions: {
2122
2144
  show: {
2123
2145
  operation: ['uploadVideo'],
2124
- platform: ['youtube']
2146
+ platform: ['youtube', '__manual_platform__']
2125
2147
  },
2126
2148
  },
2127
2149
  },
@@ -2134,7 +2156,7 @@ class UploadPost {
2134
2156
  displayOptions: {
2135
2157
  show: {
2136
2158
  operation: ['uploadVideo'],
2137
- platform: ['youtube']
2159
+ platform: ['youtube', '__manual_platform__']
2138
2160
  },
2139
2161
  },
2140
2162
  },
@@ -2147,7 +2169,7 @@ class UploadPost {
2147
2169
  displayOptions: {
2148
2170
  show: {
2149
2171
  operation: ['uploadVideo'],
2150
- platform: ['youtube']
2172
+ platform: ['youtube', '__manual_platform__']
2151
2173
  },
2152
2174
  },
2153
2175
  },
@@ -2160,7 +2182,7 @@ class UploadPost {
2160
2182
  displayOptions: {
2161
2183
  show: {
2162
2184
  operation: ['uploadVideo'],
2163
- platform: ['youtube']
2185
+ platform: ['youtube', '__manual_platform__']
2164
2186
  },
2165
2187
  },
2166
2188
  },
@@ -2173,7 +2195,7 @@ class UploadPost {
2173
2195
  displayOptions: {
2174
2196
  show: {
2175
2197
  operation: ['uploadVideo'],
2176
- platform: ['youtube']
2198
+ platform: ['youtube', '__manual_platform__']
2177
2199
  },
2178
2200
  },
2179
2201
  },
@@ -2186,7 +2208,7 @@ class UploadPost {
2186
2208
  displayOptions: {
2187
2209
  show: {
2188
2210
  operation: ['uploadVideo'],
2189
- platform: ['youtube']
2211
+ platform: ['youtube', '__manual_platform__']
2190
2212
  },
2191
2213
  },
2192
2214
  },
@@ -2199,7 +2221,7 @@ class UploadPost {
2199
2221
  displayOptions: {
2200
2222
  show: {
2201
2223
  operation: ['uploadVideo'],
2202
- platform: ['youtube']
2224
+ platform: ['youtube', '__manual_platform__']
2203
2225
  },
2204
2226
  },
2205
2227
  },
@@ -2212,7 +2234,7 @@ class UploadPost {
2212
2234
  displayOptions: {
2213
2235
  show: {
2214
2236
  operation: ['uploadVideo'],
2215
- platform: ['youtube']
2237
+ platform: ['youtube', '__manual_platform__']
2216
2238
  },
2217
2239
  },
2218
2240
  },
@@ -2225,7 +2247,7 @@ class UploadPost {
2225
2247
  displayOptions: {
2226
2248
  show: {
2227
2249
  operation: ['uploadVideo'],
2228
- platform: ['youtube']
2250
+ platform: ['youtube', '__manual_platform__']
2229
2251
  },
2230
2252
  },
2231
2253
  },
@@ -2238,7 +2260,7 @@ class UploadPost {
2238
2260
  displayOptions: {
2239
2261
  show: {
2240
2262
  operation: ['uploadVideo'],
2241
- platform: ['youtube']
2263
+ platform: ['youtube', '__manual_platform__']
2242
2264
  },
2243
2265
  },
2244
2266
  },
@@ -2251,7 +2273,7 @@ class UploadPost {
2251
2273
  displayOptions: {
2252
2274
  show: {
2253
2275
  operation: ['uploadVideo'],
2254
- platform: ['youtube']
2276
+ platform: ['youtube', '__manual_platform__']
2255
2277
  },
2256
2278
  },
2257
2279
  },
@@ -2267,7 +2289,7 @@ class UploadPost {
2267
2289
  show: {
2268
2290
  resource: ['uploads'],
2269
2291
  operation: ['uploadPhotos', 'uploadVideo'],
2270
- platform: ['pinterest']
2292
+ platform: ['pinterest', '__manual_platform__']
2271
2293
  },
2272
2294
  },
2273
2295
  },
@@ -2275,7 +2297,6 @@ class UploadPost {
2275
2297
  displayName: 'Pinterest Board Name or ID (Manual Entry)',
2276
2298
  name: 'pinterestBoardIdManual',
2277
2299
  type: 'string',
2278
- required: true,
2279
2300
  default: '',
2280
2301
  description: 'Provide the Pinterest board identifier when it does not appear in the list',
2281
2302
  displayOptions: {
@@ -2296,7 +2317,7 @@ class UploadPost {
2296
2317
  displayOptions: {
2297
2318
  show: {
2298
2319
  operation: ['uploadPhotos', 'uploadVideo'],
2299
- platform: ['pinterest']
2320
+ platform: ['pinterest', '__manual_platform__']
2300
2321
  }
2301
2322
  },
2302
2323
  },
@@ -2309,7 +2330,7 @@ class UploadPost {
2309
2330
  displayOptions: {
2310
2331
  show: {
2311
2332
  operation: ['uploadVideo'],
2312
- platform: ['pinterest']
2333
+ platform: ['pinterest', '__manual_platform__']
2313
2334
  }
2314
2335
  },
2315
2336
  },
@@ -2328,7 +2349,7 @@ class UploadPost {
2328
2349
  displayOptions: {
2329
2350
  show: {
2330
2351
  operation: ['uploadVideo'],
2331
- platform: ['pinterest']
2352
+ platform: ['pinterest', '__manual_platform__']
2332
2353
  }
2333
2354
  },
2334
2355
  },
@@ -2341,7 +2362,7 @@ class UploadPost {
2341
2362
  displayOptions: {
2342
2363
  show: {
2343
2364
  operation: ['uploadVideo'],
2344
- platform: ['pinterest']
2365
+ platform: ['pinterest', '__manual_platform__']
2345
2366
  }
2346
2367
  },
2347
2368
  },
@@ -2354,7 +2375,7 @@ class UploadPost {
2354
2375
  displayOptions: {
2355
2376
  show: {
2356
2377
  operation: ['uploadVideo'],
2357
- platform: ['pinterest']
2378
+ platform: ['pinterest', '__manual_platform__']
2358
2379
  }
2359
2380
  },
2360
2381
  },
@@ -2367,7 +2388,7 @@ class UploadPost {
2367
2388
  displayOptions: {
2368
2389
  show: {
2369
2390
  operation: ['uploadPhotos', 'uploadVideo'],
2370
- platform: ['x']
2391
+ platform: ['x', '__manual_platform__']
2371
2392
  },
2372
2393
  },
2373
2394
  },
@@ -2387,7 +2408,7 @@ class UploadPost {
2387
2408
  displayOptions: {
2388
2409
  show: {
2389
2410
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2390
- platform: ['x']
2411
+ platform: ['x', '__manual_platform__']
2391
2412
  },
2392
2413
  },
2393
2414
  },
@@ -2400,7 +2421,7 @@ class UploadPost {
2400
2421
  displayOptions: {
2401
2422
  show: {
2402
2423
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2403
- platform: ['x']
2424
+ platform: ['x', '__manual_platform__']
2404
2425
  },
2405
2426
  },
2406
2427
  },
@@ -2413,7 +2434,7 @@ class UploadPost {
2413
2434
  displayOptions: {
2414
2435
  show: {
2415
2436
  operation: ['uploadVideo'],
2416
- platform: ['x']
2437
+ platform: ['x', '__manual_platform__']
2417
2438
  },
2418
2439
  },
2419
2440
  },
@@ -2426,7 +2447,7 @@ class UploadPost {
2426
2447
  displayOptions: {
2427
2448
  show: {
2428
2449
  operation: ['uploadText'],
2429
- platform: ['x']
2450
+ platform: ['x', '__manual_platform__']
2430
2451
  }
2431
2452
  },
2432
2453
  },
@@ -2439,7 +2460,7 @@ class UploadPost {
2439
2460
  displayOptions: {
2440
2461
  show: {
2441
2462
  operation: ['uploadText'],
2442
- platform: ['x']
2463
+ platform: ['x', '__manual_platform__']
2443
2464
  }
2444
2465
  },
2445
2466
  },
@@ -2458,7 +2479,7 @@ class UploadPost {
2458
2479
  displayOptions: {
2459
2480
  show: {
2460
2481
  operation: ['uploadText'],
2461
- platform: ['x']
2482
+ platform: ['x', '__manual_platform__']
2462
2483
  }
2463
2484
  },
2464
2485
  },
@@ -2471,7 +2492,7 @@ class UploadPost {
2471
2492
  displayOptions: {
2472
2493
  show: {
2473
2494
  operation: ['uploadText'],
2474
- platform: ['x']
2495
+ platform: ['x', '__manual_platform__']
2475
2496
  },
2476
2497
  },
2477
2498
  },
@@ -2484,7 +2505,7 @@ class UploadPost {
2484
2505
  displayOptions: {
2485
2506
  show: {
2486
2507
  operation: ['uploadText'],
2487
- platform: ['x']
2508
+ platform: ['x', '__manual_platform__']
2488
2509
  }
2489
2510
  },
2490
2511
  },
@@ -2497,7 +2518,7 @@ class UploadPost {
2497
2518
  displayOptions: {
2498
2519
  show: {
2499
2520
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2500
- platform: ['x']
2521
+ platform: ['x', '__manual_platform__']
2501
2522
  },
2502
2523
  },
2503
2524
  },
@@ -2510,7 +2531,7 @@ class UploadPost {
2510
2531
  displayOptions: {
2511
2532
  show: {
2512
2533
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2513
- platform: ['x']
2534
+ platform: ['x', '__manual_platform__']
2514
2535
  },
2515
2536
  },
2516
2537
  },
@@ -2523,7 +2544,7 @@ class UploadPost {
2523
2544
  displayOptions: {
2524
2545
  show: {
2525
2546
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2526
- platform: ['x']
2547
+ platform: ['x', '__manual_platform__']
2527
2548
  },
2528
2549
  },
2529
2550
  },
@@ -2536,7 +2557,7 @@ class UploadPost {
2536
2557
  displayOptions: {
2537
2558
  show: {
2538
2559
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2539
- platform: ['x']
2560
+ platform: ['x', '__manual_platform__']
2540
2561
  },
2541
2562
  },
2542
2563
  },
@@ -2549,7 +2570,7 @@ class UploadPost {
2549
2570
  displayOptions: {
2550
2571
  show: {
2551
2572
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2552
- platform: ['x']
2573
+ platform: ['x', '__manual_platform__']
2553
2574
  }
2554
2575
  },
2555
2576
  },
@@ -2562,7 +2583,7 @@ class UploadPost {
2562
2583
  displayOptions: {
2563
2584
  show: {
2564
2585
  operation: ['uploadText'],
2565
- platform: ['x']
2586
+ platform: ['x', '__manual_platform__']
2566
2587
  }
2567
2588
  },
2568
2589
  },
@@ -2575,10 +2596,49 @@ class UploadPost {
2575
2596
  displayOptions: {
2576
2597
  show: {
2577
2598
  operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2578
- platform: ['x']
2599
+ platform: ['x', '__manual_platform__']
2579
2600
  },
2580
2601
  },
2581
2602
  },
2603
+ {
2604
+ displayName: 'LinkedIn Page ID',
2605
+ name: 'targetLinkedinPageIdManualEntry',
2606
+ type: 'string',
2607
+ default: '',
2608
+ description: 'LinkedIn company/page ID or vanity name (only needed when posting to LinkedIn)',
2609
+ displayOptions: {
2610
+ show: {
2611
+ operation: ['uploadPhotos', 'uploadVideo', 'uploadText', 'uploadDocument'],
2612
+ platform: [MANUAL_PLATFORM_VALUE],
2613
+ }
2614
+ },
2615
+ },
2616
+ {
2617
+ displayName: 'Facebook Page ID',
2618
+ name: 'facebookPageIdManualEntry',
2619
+ type: 'string',
2620
+ default: '',
2621
+ description: 'Facebook page ID or name (only needed when posting to Facebook)',
2622
+ displayOptions: {
2623
+ show: {
2624
+ operation: ['uploadPhotos', 'uploadVideo', 'uploadText'],
2625
+ platform: [MANUAL_PLATFORM_VALUE],
2626
+ }
2627
+ },
2628
+ },
2629
+ {
2630
+ displayName: 'Pinterest Board ID',
2631
+ name: 'pinterestBoardIdManualEntry',
2632
+ type: 'string',
2633
+ default: '',
2634
+ description: 'Pinterest board ID (only needed when posting to Pinterest)',
2635
+ displayOptions: {
2636
+ show: {
2637
+ operation: ['uploadPhotos', 'uploadVideo'],
2638
+ platform: [MANUAL_PLATFORM_VALUE],
2639
+ }
2640
+ },
2641
+ },
2582
2642
  ],
2583
2643
  };
2584
2644
  this.methods = {
@@ -2603,7 +2663,9 @@ class UploadPost {
2603
2663
  uploadText: ['bluesky', 'facebook', 'linkedin', 'reddit', 'threads', 'x'],
2604
2664
  };
2605
2665
  const supportedPlatforms = platformSupport[operation] || [];
2606
- return allPlatforms.filter(platform => supportedPlatforms.includes(platform.value));
2666
+ const filtered = allPlatforms.filter(platform => supportedPlatforms.includes(platform.value));
2667
+ filtered.push({ name: 'Manual Entry (all fields)', value: MANUAL_PLATFORM_VALUE });
2668
+ return filtered;
2607
2669
  },
2608
2670
  async getFacebookPages() {
2609
2671
  try {