Initial commit with translated description

This commit is contained in:
2026-03-29 13:08:26 +08:00
commit 2be840545d
26 changed files with 6593 additions and 0 deletions

472
PROVIDER_SETTINGS.md Normal file
View File

@@ -0,0 +1,472 @@
# Provider-Specific Settings
The Postiz CLI supports platform-specific settings for each integration. Different platforms have different options and requirements.
## How to Use Provider Settings
### Method 1: Command Line Flags
```bash
postiz posts:create \
-c "Your content" \
-p <provider-type> \
--settings '<json-settings>' \
-i "integration-id"
```
### Method 2: JSON File
```bash
postiz posts:create --json post-with-settings.json
```
In the JSON file, specify settings per integration:
```json
{
"type": "now",
"date": "2024-01-15T12:00:00Z",
"shortLink": true,
"tags": [],
"posts": [{
"integration": { "id": "reddit-123" },
"value": [{ "content": "Post content", "image": [] }],
"settings": {
"__type": "reddit",
"subreddit": [{
"value": {
"subreddit": "programming",
"title": "My Post Title",
"type": "text",
"url": "",
"is_flair_required": false
}
}]
}
}]
}
```
## Supported Platforms & Settings
### Reddit (`reddit`)
**Settings:**
- `subreddit` (required): Subreddit name
- `title` (required): Post title
- `type` (required): `"text"` or `"link"`
- `url` (required for links): URL if type is "link"
- `is_flair_required` (boolean): Whether flair is required
- `flair` (optional): Flair object with `id` and `name`
**Example:**
```bash
postiz posts:create \
-c "Post content here" \
-p reddit \
--settings '{
"subreddit": [{
"value": {
"subreddit": "programming",
"title": "Check out this cool project",
"type": "text",
"url": "",
"is_flair_required": false
}
}]
}' \
-i "reddit-123"
```
### YouTube (`youtube`)
**Settings:**
- `title` (required): Video title (2-100 characters)
- `type` (required): `"public"`, `"private"`, or `"unlisted"`
- `selfDeclaredMadeForKids` (optional): `"yes"` or `"no"`
- `thumbnail` (optional): Thumbnail MediaDto object
- `tags` (optional): Array of tag objects with `value` and `label`
**Example:**
```bash
postiz posts:create \
-c "Video description here" \
-p youtube \
--settings '{
"title": "My Awesome Video",
"type": "public",
"selfDeclaredMadeForKids": "no",
"tags": [
{"value": "tech", "label": "Tech"},
{"value": "tutorial", "label": "Tutorial"}
]
}' \
-i "youtube-123"
```
### X / Twitter (`x`)
**Settings:**
- `community` (optional): X community URL (format: `https://x.com/i/communities/1234567890`)
- `who_can_reply_post` (required): Who can reply
- `"everyone"` - Anyone can reply
- `"following"` - Only people you follow
- `"mentionedUsers"` - Only mentioned users
- `"subscribers"` - Only subscribers
- `"verified"` - Only verified users
**Example:**
```bash
postiz posts:create \
-c "Tweet content" \
-p x \
--settings '{
"who_can_reply_post": "everyone"
}' \
-i "twitter-123"
```
**With Community:**
```bash
postiz posts:create \
-c "Community tweet" \
-p x \
--settings '{
"community": "https://x.com/i/communities/1493446837214187523",
"who_can_reply_post": "everyone"
}' \
-i "twitter-123"
```
### LinkedIn (`linkedin`)
**Settings:**
- `post_as_images_carousel` (boolean): Post as image carousel
- `carousel_name` (optional): Carousel name if posting as carousel
**Example:**
```bash
postiz posts:create \
-c "LinkedIn post" \
-m "img1.jpg,img2.jpg,img3.jpg" \
-p linkedin \
--settings '{
"post_as_images_carousel": true,
"carousel_name": "Product Showcase"
}' \
-i "linkedin-123"
```
### Instagram (`instagram`)
**Settings:**
- `post_type` (required): `"post"` or `"story"`
- `is_trial_reel` (optional): Boolean
- `graduation_strategy` (optional): `"MANUAL"` or `"SS_PERFORMANCE"`
- `collaborators` (optional): Array of collaborator objects with `label`
**Example:**
```bash
postiz posts:create \
-c "Instagram post" \
-m "photo.jpg" \
-p instagram \
--settings '{
"post_type": "post",
"is_trial_reel": false
}' \
-i "instagram-123"
```
**Story Example:**
```bash
postiz posts:create \
-c "Story content" \
-m "story-image.jpg" \
-p instagram \
--settings '{
"post_type": "story"
}' \
-i "instagram-123"
```
### TikTok (`tiktok`)
**Settings:**
- `title` (optional): Video title (max 90 characters)
- `privacy_level` (required): Privacy level
- `"PUBLIC_TO_EVERYONE"`
- `"MUTUAL_FOLLOW_FRIENDS"`
- `"FOLLOWER_OF_CREATOR"`
- `"SELF_ONLY"`
- `duet` (boolean): Allow duets
- `stitch` (boolean): Allow stitch
- `comment` (boolean): Allow comments
- `autoAddMusic` (required): `"yes"` or `"no"`
- `brand_content_toggle` (boolean): Brand content toggle
- `brand_organic_toggle` (boolean): Brand organic toggle
- `video_made_with_ai` (optional): Boolean
- `content_posting_method` (required): `"DIRECT_POST"` or `"UPLOAD"`
**Example:**
```bash
postiz posts:create \
-c "TikTok video description" \
-m "video.mp4" \
-p tiktok \
--settings '{
"title": "Check this out!",
"privacy_level": "PUBLIC_TO_EVERYONE",
"duet": true,
"stitch": true,
"comment": true,
"autoAddMusic": "no",
"brand_content_toggle": false,
"brand_organic_toggle": false,
"content_posting_method": "DIRECT_POST"
}' \
-i "tiktok-123"
```
### Facebook (`facebook`)
Settings available - check the DTO for specifics.
### Pinterest (`pinterest`)
Settings available - check the DTO for specifics.
### Discord (`discord`)
Settings available - check the DTO for specifics.
### Slack (`slack`)
Settings available - check the DTO for specifics.
### Medium (`medium`)
Settings available - check the DTO for specifics.
### Dev.to (`devto`)
Settings available - check the DTO for specifics.
### Hashnode (`hashnode`)
Settings available - check the DTO for specifics.
### WordPress (`wordpress`)
Settings available - check the DTO for specifics.
## Platforms Without Specific Settings
These platforms use the default `EmptySettings`:
- `threads`
- `mastodon`
- `bluesky`
- `telegram`
- `nostr`
- `vk`
For these, you don't need to specify settings or can use:
```bash
-p threads # or any of the above
```
## Using JSON Files for Complex Settings
For complex settings, it's easier to use JSON files:
### Reddit Example
**reddit-post.json:**
```json
{
"type": "now",
"date": "2024-01-15T12:00:00Z",
"shortLink": true,
"tags": [],
"posts": [{
"integration": { "id": "reddit-123" },
"value": [{
"content": "Check out this cool project!",
"image": []
}],
"settings": {
"__type": "reddit",
"subreddit": [{
"value": {
"subreddit": "programming",
"title": "My Cool Project - Built with TypeScript",
"type": "text",
"url": "",
"is_flair_required": true,
"flair": {
"id": "flair-123",
"name": "Project"
}
}
}]
}
}]
}
```
```bash
postiz posts:create --json reddit-post.json
```
### YouTube Example
**youtube-video.json:**
```json
{
"type": "schedule",
"date": "2024-12-25T12:00:00Z",
"shortLink": true,
"tags": [],
"posts": [{
"integration": { "id": "youtube-123" },
"value": [{
"content": "Full video description with timestamps...",
"image": [{
"id": "thumb1",
"path": "https://cdn.example.com/thumbnail.jpg"
}]
}],
"settings": {
"__type": "youtube",
"title": "How to Build a CLI Tool",
"type": "public",
"selfDeclaredMadeForKids": "no",
"tags": [
{ "value": "programming", "label": "Programming" },
{ "value": "typescript", "label": "TypeScript" },
{ "value": "tutorial", "label": "Tutorial" }
]
}
}]
}
```
```bash
postiz posts:create --json youtube-video.json
```
### Multi-Platform with Different Settings
**multi-platform-campaign.json:**
```json
{
"type": "now",
"date": "2024-01-15T12:00:00Z",
"shortLink": true,
"tags": [],
"posts": [
{
"integration": { "id": "reddit-123" },
"value": [{ "content": "Reddit-specific content", "image": [] }],
"settings": {
"__type": "reddit",
"subreddit": [{
"value": {
"subreddit": "programming",
"title": "Post Title",
"type": "text",
"url": "",
"is_flair_required": false
}
}]
}
},
{
"integration": { "id": "twitter-123" },
"value": [{ "content": "Twitter-specific content", "image": [] }],
"settings": {
"__type": "x",
"who_can_reply_post": "everyone"
}
},
{
"integration": { "id": "linkedin-123" },
"value": [
{
"content": "LinkedIn post",
"image": [
{ "id": "1", "path": "img1.jpg" },
{ "id": "2", "path": "img2.jpg" }
]
}
],
"settings": {
"__type": "linkedin",
"post_as_images_carousel": true,
"carousel_name": "Product Launch"
}
}
]
}
```
## Tips
1. **Use JSON files for complex settings** - Command-line JSON strings get messy fast
2. **Validate your settings** - The API will return errors if settings are invalid
3. **Check required fields** - Each platform has different required fields
4. **Platform-specific content** - Different platforms may need different content/media
5. **Test with drafts first** - Use `"type": "draft"` to test without posting
## Finding Your Provider Type
To find the correct provider type for your integration:
```bash
postiz integrations:list
```
This will show the `provider` field for each integration, which corresponds to the `__type` in settings.
## Common Errors
### Missing __type
```json
{
"settings": {
"title": "My Video" // ❌ Missing __type
}
}
```
**Fix:**
```json
{
"settings": {
"__type": "youtube", // ✅ Add __type
"title": "My Video"
}
}
```
### Wrong Provider Type
```bash
# ❌ Wrong
-p twitter # Should be "x"
# ✅ Correct
-p x
```
### Invalid Settings for Platform
Each platform validates its own settings. Check the error message and refer to the platform's required fields above.
## See Also
- **EXAMPLES.md** - General usage examples
- **COMMAND_LINE_GUIDE.md** - Command-line syntax
- **SKILL.md** - AI agent patterns
- Source DTOs in `libraries/nestjs-libraries/src/dtos/posts/providers-settings/`