postiz 2.0.5 → 2.0.7

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
@@ -29,7 +29,6 @@ pnpm link --global
29
29
  ### For Development
30
30
 
31
31
  ```bash
32
- cd apps/cli
33
32
  pnpm install
34
33
  pnpm run build
35
34
  pnpm link --global
@@ -180,19 +179,34 @@ postiz posts:delete <post-id>
180
179
  postiz upload <file-path>
181
180
  ```
182
181
 
182
+ **⚠️ IMPORTANT: Upload Files Before Posting**
183
+
184
+ You **must** upload media files to Postiz before using them in posts. Many platforms (especially TikTok, Instagram, and YouTube) require verified/trusted URLs and will reject external links.
185
+
186
+ **Workflow:**
187
+ 1. Upload your file using `postiz upload`
188
+ 2. Extract the returned URL
189
+ 3. Use that URL in your post's `-m` parameter
190
+
183
191
  **Supported formats:**
184
- - **Images:** PNG, JPG, JPEG, GIF, WEBP, SVG, BMP, ICO
185
- - **Videos:** MP4, MOV, AVI, MKV, WEBM, FLV, WMV, M4V, MPEG, MPG, 3GP
186
- - **Audio:** MP3, WAV, OGG, AAC, FLAC, M4A
187
- - **Documents:** PDF, DOC, DOCX
192
+ - **Images:** PNG, JPG, JPEG, GIF
193
+ - **Videos:** MP4
188
194
 
189
195
  **Example:**
190
196
  ```bash
197
+ # 1. Upload the file first
191
198
  RESULT=$(postiz upload video.mp4)
192
199
  PATH=$(echo "$RESULT" | jq -r '.path')
193
- postiz posts:create -c "Check out my video!" -m "$PATH" -i "tiktok-id"
200
+
201
+ # 2. Use the Postiz URL in your post
202
+ postiz posts:create -c "Check out my video!" -s "2024-12-31T12:00:00Z" -m "$PATH" -i "tiktok-id"
194
203
  ```
195
204
 
205
+ **Why this is required:**
206
+ - **TikTok, Instagram, YouTube** only accept URLs from trusted domains
207
+ - **Security:** Platforms verify media sources to prevent abuse
208
+ - **Reliability:** Postiz ensures your media is always accessible
209
+
196
210
  ---
197
211
 
198
212
  ## Platform-Specific Features
@@ -215,22 +229,31 @@ postiz posts:create \
215
229
  # Get playlists
216
230
  postiz integrations:trigger youtube-id getPlaylists
217
231
 
218
- # Upload video with metadata
232
+ # Upload video FIRST (required!)
233
+ VIDEO=$(postiz upload video.mp4)
234
+ VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
235
+
236
+ # Post with uploaded video URL
219
237
  postiz posts:create \
220
238
  -c "Video description" \
221
239
  -s "2024-12-31T12:00:00Z" \
222
240
  --settings '{"title":"Video Title","type":"public","tags":[{"value":"tech","label":"Tech"}],"playlistId":"playlist-id"}' \
223
- -m "video.mp4" \
241
+ -m "$VIDEO_URL" \
224
242
  -i "youtube-id"
225
243
  ```
226
244
 
227
245
  ### TikTok
228
246
  ```bash
247
+ # Upload video FIRST (TikTok only accepts verified URLs!)
248
+ VIDEO=$(postiz upload video.mp4)
249
+ VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
250
+
251
+ # Post with uploaded video URL
229
252
  postiz posts:create \
230
253
  -c "Video caption #fyp" \
231
254
  -s "2024-12-31T12:00:00Z" \
232
255
  --settings '{"privacy":"PUBLIC_TO_EVERYONE","duet":true,"stitch":true}' \
233
- -m "video.mp4" \
256
+ -m "$VIDEO_URL" \
234
257
  -i "tiktok-id"
235
258
  ```
236
259
 
@@ -268,20 +291,27 @@ postiz posts:create \
268
291
 
269
292
  ### Instagram
270
293
  ```bash
294
+ # Upload image FIRST (Instagram requires verified URLs!)
295
+ IMAGE=$(postiz upload image.jpg)
296
+ IMAGE_URL=$(echo "$IMAGE" | jq -r '.path')
297
+
271
298
  # Regular post
272
299
  postiz posts:create \
273
300
  -c "Caption #hashtag" \
274
301
  -s "2024-12-31T12:00:00Z" \
275
302
  --settings '{"post_type":"post"}' \
276
- -m "image.jpg" \
303
+ -m "$IMAGE_URL" \
277
304
  -i "instagram-id"
278
305
 
279
- # Story
306
+ # Story (upload first)
307
+ STORY=$(postiz upload story.jpg)
308
+ STORY_URL=$(echo "$STORY" | jq -r '.path')
309
+
280
310
  postiz posts:create \
281
311
  -c "" \
282
312
  -s "2024-12-31T12:00:00Z" \
283
313
  --settings '{"post_type":"story"}' \
284
- -m "story.jpg" \
314
+ -m "$STORY_URL" \
285
315
  -i "instagram-id"
286
316
  ```
287
317
 
@@ -491,21 +521,20 @@ The CLI provides clear error messages with exit codes:
491
521
  ### Project Structure
492
522
 
493
523
  ```
494
- apps/cli/
495
- ├── src/
496
- ├── index.ts # CLI entry point with yargs
497
- ├── api.ts # PostizAPI client class
498
- │ ├── config.ts # Environment configuration
499
- │ └── commands/
500
- ├── posts.ts # Post management commands
501
- │ ├── integrations.ts # Integration commands
502
- │ └── upload.ts # Media upload command
503
- ├── examples/ # Example scripts and JSON files
504
- ├── package.json
505
- ├── tsconfig.json
506
- ├── tsup.config.ts # Build configuration
507
- ├── README.md # This file
508
- └── SKILL.md # AI agent reference
524
+ src/
525
+ ├── index.ts # CLI entry point with yargs
526
+ ├── api.ts # PostizAPI client class
527
+ ├── config.ts # Environment configuration
528
+ └── commands/
529
+ ├── posts.ts # Post management commands
530
+ ├── integrations.ts # Integration commands
531
+ └── upload.ts # Media upload command
532
+ examples/ # Example scripts and JSON files
533
+ package.json
534
+ tsconfig.json
535
+ tsup.config.ts # Build configuration
536
+ README.md # This file
537
+ SKILL.md # AI agent reference
509
538
  ```
510
539
 
511
540
  ### Scripts
@@ -583,7 +612,7 @@ AGPL-3.0
583
612
  ## Links
584
613
 
585
614
  - **Website:** [postiz.com](https://postiz.com)
586
- - **API Docs:** [postiz.com/api-docs](https://postiz.com/api-docs)
615
+ - **API Docs:** [docs.postiz.com](https://docs.postiz.com)
587
616
  - **GitHub:** [gitroomhq/postiz-app](https://github.com/gitroomhq/postiz-app)
588
617
  - **Issues:** [Report bugs](https://github.com/gitroomhq/postiz-app/issues)
589
618
 
package/SKILL.md CHANGED
@@ -1,3 +1,10 @@
1
+ ---
2
+ name: postiz
3
+ description: Postiz is a tool to schedule social media and chat posts to 28+ channels X, LinkedIn, LinkedIn Page, Reddit, Instagram, Facebook Page, Threads, YouTube, Google My Business, TikTok, Pinterest, Dribbble, Discord, Slack, Kick, Twitch, Mastodon, Bluesky, Lemmy, Farcaster, Telegram, Nostr, VK, Medium, Dev.to, Hashnode, WordPress, ListMonk
4
+ homepage: https://docs.postiz.com/public-api/introduction
5
+ metadata: {"clawdbot":{"emoji":"🌎","requires":{"bins":[],"env":["POSTIZ_API_URL","POSTIZ_API_KEY"]}}}
6
+ ---
7
+
1
8
  | Property | Value |
2
9
  |----------|-------|
3
10
  | **name** | postiz |
@@ -107,12 +114,19 @@ postiz posts:delete <post-id>
107
114
 
108
115
  ### Media Upload
109
116
 
117
+ **⚠️ IMPORTANT:** Always upload files to Postiz before using them in posts. Many platforms (TikTok, Instagram, YouTube) **require verified URLs** and will reject external links.
118
+
110
119
  ```bash
111
120
  # Upload file and get URL
112
121
  postiz upload image.jpg
113
122
 
114
123
  # Supports: images (PNG, JPG, GIF, WEBP, SVG), videos (MP4, MOV, AVI, MKV, WEBM),
115
124
  # audio (MP3, WAV, OGG, AAC), documents (PDF, DOC, DOCX)
125
+
126
+ # Workflow: Upload → Extract URL → Use in post
127
+ VIDEO=$(postiz upload video.mp4)
128
+ VIDEO_PATH=$(echo "$VIDEO" | jq -r '.path')
129
+ postiz posts:create -c "Content" -s "2024-12-31T12:00:00Z" -m "$VIDEO_PATH" -i "tiktok-id"
116
130
  ```
117
131
 
118
132
  ---
@@ -455,21 +469,29 @@ postiz posts:create \
455
469
 
456
470
  ### YouTube
457
471
  ```bash
472
+ # Upload video first (required!)
473
+ VIDEO=$(postiz upload video.mp4)
474
+ VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
475
+
458
476
  postiz posts:create \
459
477
  -c "Video description" \
460
478
  -s "2024-12-31T12:00:00Z" \
461
479
  --settings '{"title":"Video Title","type":"public","tags":[{"value":"tech","label":"Tech"}]}' \
462
- -m "video.mp4" \
480
+ -m "$VIDEO_URL" \
463
481
  -i "youtube-id"
464
482
  ```
465
483
 
466
484
  ### TikTok
467
485
  ```bash
486
+ # Upload video first (TikTok only accepts verified URLs!)
487
+ VIDEO=$(postiz upload video.mp4)
488
+ VIDEO_URL=$(echo "$VIDEO" | jq -r '.path')
489
+
468
490
  postiz posts:create \
469
491
  -c "Video caption #fyp" \
470
492
  -s "2024-12-31T12:00:00Z" \
471
493
  --settings '{"privacy":"PUBLIC_TO_EVERYONE","duet":true,"stitch":true}' \
472
- -m "video.mp4" \
494
+ -m "$VIDEO_URL" \
473
495
  -i "tiktok-id"
474
496
  ```
475
497
 
@@ -497,20 +519,27 @@ postiz posts:create \
497
519
 
498
520
  ### Instagram
499
521
  ```bash
522
+ # Upload image first (Instagram requires verified URLs!)
523
+ IMAGE=$(postiz upload image.jpg)
524
+ IMAGE_URL=$(echo "$IMAGE" | jq -r '.path')
525
+
500
526
  # Regular post
501
527
  postiz posts:create \
502
528
  -c "Caption #hashtag" \
503
529
  -s "2024-12-31T12:00:00Z" \
504
530
  --settings '{"post_type":"post"}' \
505
- -m "image.jpg" \
531
+ -m "$IMAGE_URL" \
506
532
  -i "instagram-id"
507
533
 
508
534
  # Story
535
+ STORY=$(postiz upload story.jpg)
536
+ STORY_URL=$(echo "$STORY" | jq -r '.path')
537
+
509
538
  postiz posts:create \
510
539
  -c "" \
511
540
  -s "2024-12-31T12:00:00Z" \
512
541
  --settings '{"post_type":"story"}' \
513
- -m "story.jpg" \
542
+ -m "$STORY_URL" \
514
543
  -i "instagram-id"
515
544
  ```
516
545
 
@@ -545,9 +574,9 @@ postiz posts:create \
545
574
  1. **API Key not set** - Always `export POSTIZ_API_KEY=key` before using CLI
546
575
  2. **Invalid integration ID** - Run `integrations:list` to get current IDs
547
576
  3. **Settings schema mismatch** - Check `integrations:settings` for required fields
548
- 4. **Media upload before posting** - Upload returns URL to use in `-m` flag
577
+ 4. **Media MUST be uploaded to Postiz first** - ⚠️ **CRITICAL:** TikTok, Instagram, YouTube, and many platforms only accept verified URLs. Upload files via `postiz upload` first, then use the returned URL in `-m`. External URLs will be rejected!
549
578
  5. **JSON escaping in shell** - Use single quotes for JSON: `--settings '{...}'`
550
- 6. **Date format** - Must be ISO 8601: `"2024-12-31T12:00:00Z"`
579
+ 6. **Date format** - Must be ISO 8601: `"2024-12-31T12:00:00Z"` and is REQUIRED
551
580
  7. **Tool not found** - Check available tools in `integrations:settings` output
552
581
  8. **Character limits** - Each platform has different limits, check `maxLength` in settings
553
582
  9. **Required settings** - Some platforms require specific settings (Reddit needs title, YouTube needs title)