Initial commit with translated description
This commit is contained in:
472
PROVIDER_SETTINGS.md
Normal file
472
PROVIDER_SETTINGS.md
Normal 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/`
|
||||
Reference in New Issue
Block a user