Syndication Setup¶
The Syndication Setup screen allows you to configure accounts for announcing your YouTube videos across multiple social media and communication platforms. Once configured, you can automatically share your video announcements to all enabled platforms with a single action.
Supported Platforms¶
| Platform | Auth Method | Character Limit | Key Features |
|---|---|---|---|
| Mastodon | OAuth2 | 500 chars | Federated, any instance, images |
| Bluesky | App Password | 300 chars | Decentralized, AT Protocol |
| OAuth2 | 3000 chars | Professional network, rich previews | |
| Telegram | Bot Token | 4096 chars | Markdown formatting, channels |
| Signal | signal-cli | Unlimited | End-to-end encrypted, groups |
| ntfy.sh | HTTP Token | Unlimited | Push notifications, click actions |
| Google Chat | Webhook | 4096 chars | Cards, buttons, workspace integration |
| WordPress | App Password | Unlimited | Full HTML, featured images, SEO |
Accessing Syndication Setup¶
Navigate to: Main Menu → Options → Syndication Setup
Screen Navigation¶
Platform List¶
When you enter Syndication Setup, you'll see all supported platforms with account counts:
┌─────────────────────────────────────────┐
│ SYNDICATION SETUP │
├─────────────────────────────────────────┤
│ Select Platform │
│ Configure accounts to announce videos │
│ │
│ > 🐘 Mastodon (2 accounts, 1 enabled) │
│ 🦋 Bluesky (1 accounts, 1 enabled) │
│ 💼 LinkedIn (0 accounts) │
│ ✈️ Telegram (1 accounts, 1 enabled) │
│ 📱 Signal (0 accounts) │
│ 🔔 ntfy.sh (0 accounts) │
│ 💬 Google Chat (0 accounts) │
│ 📝 WordPress (0 accounts) │
├─────────────────────────────────────────┤
│ ↑/↓: select • enter: manage • q: back │
└─────────────────────────────────────────┘
Account List¶
Press Enter on a platform to view and manage its accounts:
┌─────────────────────────────────────────┐
│ 🐘 MASTODON ACCOUNTS │
├─────────────────────────────────────────┤
│ > Personal Account [enabled] │
│ Work Account [disabled] │
├─────────────────────────────────────────┤
│ n: add • e: edit • d: delete │
│ c: connect • t: toggle • esc: back │
└─────────────────────────────────────────┘
| Key | Action |
|---|---|
| N / A | Add new account |
| E | Edit selected account |
| D / Del | Delete selected account |
| C | Connect/authenticate account |
| T | Toggle enabled/disabled |
| Up / Down | Navigate accounts |
| Esc | Back to platform list |
Platform Setup Guides¶
Mastodon¶
Mastodon is a federated social network. You can connect to any Mastodon instance.
Prerequisites¶
- A Mastodon account on any instance
- Ability to create an application on your instance
Step 1: Register an OAuth Application¶
- Log into your Mastodon instance (e.g.,
mastodon.social,fosstodon.org) - Go to Settings → Development → New Application
- Direct URL:
https://YOUR_INSTANCE/settings/applications - Fill in the application details:
- Application name:
Kartoza Screencaster - Application website:
https://github.com/kartoza/kartoza-screencaster(optional) - Redirect URI:
urn:ietf:wg:oauth:2.0:oob - Scopes: Select the following:
-
read- Read account information -
write:statuses- Post statuses -
write:media- Upload media attachments
-
- Click Submit
- Copy the Client ID and Client Secret
Step 2: Add Account in App¶
- Navigate to Syndication Setup → Mastodon
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name (e.g., "Personal Mastodon")
- Instance URL: Your instance domain (e.g.,
mastodon.social) - Client ID: Paste from step 1
- Client Secret: Paste from step 1
- Press Enter to save
Step 3: Authorize the App¶
- Select your account and press C to connect
- A browser window will open to your instance's authorization page
- Click Authorize to grant permissions
- Copy the authorization code displayed
- Paste the code in the app when prompted
Connected
Your Mastodon account is now ready for syndication!
Bluesky¶
Bluesky uses the AT Protocol for decentralized social networking.
Prerequisites¶
- A Bluesky account (handle ending in
.bsky.socialor custom domain)
Step 1: Generate an App Password¶
- Log into bsky.app
- Click your avatar → Settings
- Navigate to App Passwords (under Advanced)
- Click Add App Password
- Enter a name:
Kartoza Screencaster - Click Create App Password
- Copy the password immediately - it won't be shown again!
App Password Security
App passwords provide full access to your account. Store them securely and never share them. You can revoke app passwords at any time from Settings.
Step 2: Add Account in App¶
- Navigate to Syndication Setup → Bluesky
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name (e.g., "My Bluesky")
- Handle: Your full handle (e.g.,
username.bsky.social) - App Password: Paste the app password from step 1
- Press Enter to save
Step 3: Verify Connection¶
- Select your account and press C to test the connection
- The app will create a session with Bluesky's servers
Session Management
Bluesky sessions are automatically refreshed. You shouldn't need to reconnect unless you revoke the app password.
LinkedIn¶
LinkedIn requires OAuth2 authentication with a registered application.
Prerequisites¶
- A LinkedIn account
- A LinkedIn Company Page (if posting as organization) or personal profile
Step 1: Create a LinkedIn App¶
- Go to LinkedIn Developer Portal
- Click Create App
- Fill in the app details:
- App name:
Kartoza Screencaster - LinkedIn Page: Select your company page (required)
- Privacy policy URL: Can use your website
- App logo: Upload any square image
- Click Create app
Step 2: Configure Products and Permissions¶
- In your app dashboard, go to the Products tab
- Request access to:
- Share on LinkedIn - Required for posting
- Sign In with LinkedIn using OpenID Connect - Required for authentication
- Go to the Auth tab
- Under OAuth 2.0 settings, add redirect URL:
- Copy the Client ID and Client Secret
Approval Process
LinkedIn may require manual approval for certain API products. The "Share on LinkedIn" product typically requires a review that can take a few days.
Step 3: Add Account in App¶
- Navigate to Syndication Setup → LinkedIn
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name (e.g., "Company LinkedIn")
- Client ID: Paste from developer portal
- Client Secret: Paste from developer portal
- Press Enter to save
Step 4: Authorize the App¶
- Select your account and press C to connect
- A browser window opens to LinkedIn's authorization page
- Sign in and click Allow
- Copy the authorization code from the redirect URL
- Paste the code in the app
Telegram¶
Telegram uses bot tokens for automated posting to channels and groups.
Prerequisites¶
- A Telegram account
- A channel or group where you want to post
- Admin rights in the target channel/group
Step 1: Create a Telegram Bot¶
- Open Telegram and search for @BotFather
- Start a chat and send
/newbot - Follow the prompts:
- Enter a name for your bot (e.g., "Video Announcements")
- Enter a username ending in
bot(e.g.,kartoza_videos_bot) - Copy the HTTP API token provided by BotFather
Step 2: Get Your Chat ID¶
For Channels:
- Add your bot as an administrator to your channel
- Post any message to the channel
- Visit:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates - Look for
"chat":{"id":-100XXXXXXXXXX}- this is your channel ID
For Groups:
- Add your bot to your group
- Send a message mentioning the bot:
@your_bot test - Visit the same URL as above
- The group ID will appear (usually starts with
-)
For Private Messages:
- Start a chat with your bot
- Send any message
- Check the getUpdates URL for your personal chat ID
Multiple Destinations
You can send to multiple channels/groups by entering comma-separated chat IDs.
Step 3: Add Account in App¶
- Navigate to Syndication Setup → Telegram
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name (e.g., "Announcements Channel")
- Bot Token: Paste from BotFather
- Chat IDs: Enter one or more chat IDs, comma-separated
- Example:
-1001234567890,-1009876543210
- Example:
- Press Enter to save
Step 4: Test Connection¶
- Select your account and press C to send a test message
- Check your Telegram channel/group for the test message
Signal¶
Signal uses signal-cli for sending encrypted messages.
Prerequisites¶
- A phone number for Signal registration
signal-cliinstalled and in your PATH
Step 1: Install signal-cli¶
# Download the latest release
wget https://github.com/AsamK/signal-cli/releases/download/v0.13.0/signal-cli-0.13.0-Linux.tar.gz
# Extract
tar xf signal-cli-0.13.0-Linux.tar.gz
# Move to PATH
sudo mv signal-cli-0.13.0/bin/signal-cli /usr/local/bin/
sudo mv signal-cli-0.13.0/lib /usr/local/lib/signal-cli
Step 2: Register Your Number¶
# Request verification code via SMS
signal-cli -a +1234567890 register
# Or request via voice call
signal-cli -a +1234567890 register --voice
# Verify with the code you receive
signal-cli -a +1234567890 verify 123456
Number Restrictions
Signal may require CAPTCHA verification. If you see a CAPTCHA error, visit the URL provided and complete verification, then run:
Step 3: Get Group IDs (Optional)¶
To send to Signal groups:
# List all groups you're a member of
signal-cli -a +1234567890 listGroups -d
# Output shows group ID in base64 format
Step 4: Add Account in App¶
- Navigate to Syndication Setup → Signal
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name
- Signal Number: Your registered number (e.g.,
+1234567890) - Recipients: Comma-separated phone numbers or group IDs
- Example:
+1987654321,group.XXXXXXXX==
- Example:
- Press Enter to save
ntfy.sh¶
ntfy.sh provides simple HTTP-based push notifications.
Prerequisites¶
- None for public topics
- A ntfy.sh account for private topics (optional)
Step 1: Choose a Topic¶
Topics are like channels. Anyone who knows the topic name can subscribe.
Public Topics:
- Choose a unique, hard-to-guess topic name
- Example:
kartoza-videos-abc123xyz
Private Topics (ntfy.sh account required):
- Create an account at ntfy.sh
- Go to Account → Access Tokens
- Generate a new token
- Reserve your topic name in account settings
Self-Hosted ntfy
You can also run your own ntfy server. Just change the Server URL in the account configuration.
Step 2: Add Account in App¶
- Navigate to Syndication Setup → ntfy.sh
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name
- Topic: Your topic name (e.g.,
my-video-announcements) - Server URL:
https://ntfy.sh(or your self-hosted URL) - Access Token: Leave empty for public topics, or enter token for private
- Press Enter to save
Step 3: Subscribe to Notifications¶
Tell your audience to subscribe:
- Web: Visit
https://ntfy.sh/YOUR_TOPIC - Android: Install ntfy app, add topic
- iOS: Install ntfy app, add topic
- Desktop: Use web interface or CLI
Google Chat¶
Google Chat uses incoming webhooks for posting to spaces.
Prerequisites¶
- A Google Workspace account
- A Google Chat space where you have permissions to add webhooks
Step 1: Create a Webhook¶
- Open Google Chat
- Open the space where you want to post
- Click the space name at the top → Apps & integrations
- Click + Add webhooks
- Enter a name:
Kartoza Screencaster - Optionally add an avatar URL
- Click Save
- Copy the webhook URL
Webhook URL Security
Anyone with the webhook URL can post to your space. Keep it confidential and don't commit it to version control.
Step 2: Add Account in App¶
- Navigate to Syndication Setup → Google Chat
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name (e.g., "Team Updates Space")
- Webhook URL: Paste the full webhook URL
- Press Enter to save
Step 3: Test Connection¶
- Select your account and press C to send a test message
- Check your Google Chat space
WordPress¶
WordPress uses application passwords for REST API authentication.
Prerequisites¶
- A WordPress site (self-hosted or WordPress.com Business plan)
- Administrator or Editor role on the site
- WordPress 5.6+ (for application passwords)
Step 1: Enable Application Passwords¶
Application passwords are enabled by default on WordPress 5.6+. If disabled:
- Add to your theme's
functions.phpor a plugin:
Step 2: Generate an Application Password¶
- Log into your WordPress admin dashboard
- Go to Users → Profile (or click your username)
- Scroll down to Application Passwords
- Enter a name:
Kartoza Screencaster - Click Add New Application Password
- Copy the password immediately - it won't be shown again!
Password Format
The password is displayed with spaces for readability (e.g., XXXX XXXX XXXX). You can enter it with or without spaces - both work.
Step 3: Add Account in App¶
- Navigate to Syndication Setup → WordPress
- Press N to add a new account
- Fill in the fields:
- Account Name: A friendly name (e.g., "Company Blog")
- Site URL: Your WordPress URL (e.g.,
https://example.com) - Username: Your WordPress username
- App Password: Paste the application password
- Post Status:
draft(review before publishing) orpublish(immediate) - Press Enter to save
Step 4: Test Connection¶
- Select your account and press C to verify authentication
- The app will attempt to access the WordPress REST API
Post Categories
Posts are created in the default category. You can edit them in WordPress to add categories, tags, and featured images before publishing.
Configuration Storage¶
All syndication settings are stored locally:
~/.config/kartoza-screencaster/
├── config.json # Main config with account settings
├── syndication_token_synd_xxxxx.json # OAuth tokens (Mastodon, LinkedIn)
└── syndication_session_synd_xxxxx.json # Bluesky sessions
Credential Security
- Config files contain sensitive credentials
- Files are only readable by your user (
chmod 600) - Never commit these files to version control
- Back up securely if needed
Troubleshooting¶
Common Issues¶
"Connection failed" for OAuth platforms:
- Verify Client ID and Secret are correct
- Check that redirect URI matches exactly
- Ensure required scopes/products are enabled
"Unauthorized" for Telegram:
- Verify bot token is correct
- Ensure bot is admin in the channel
- Check chat ID format (channels start with
-100)
"signal-cli not found":
- Ensure signal-cli is in your PATH
- Check with:
which signal-cli - Verify number is registered:
signal-cli -a +NUMBER listGroups
LinkedIn posts not appearing:
- Check if "Share on LinkedIn" product is approved
- Verify account has posting permissions
- Try posting to personal profile first
WordPress authentication failed:
- Verify site URL is correct (include https://)
- Check username spelling
- Regenerate application password if needed
- Ensure WordPress 5.6+ or application passwords plugin
Related Pages¶
- Options - Application settings
- History - View recordings and syndicate
- YouTube Upload - Upload videos
- YouTube Setup - Configure YouTube accounts