Skip to main content

Unified social media management - posting, analytics, and insights

Project description

Socialia

Unified social media management — posting, analytics, and insights

License: AGPL-3.0

Part of SciTeX™ for scientific research automation.

Installation

pip install socialia

# Or with optional dependencies
pip install socialia[reddit]      # Reddit support
pip install socialia[youtube]     # YouTube support
pip install socialia[analytics]   # Google Analytics Data API
pip install socialia[all]         # Everything

CLI Usage

# Post to Twitter
socialia post twitter "Hello World!"

# Post to LinkedIn
socialia post linkedin "Professional update!"

# Post to Reddit
socialia post reddit "Post body" --subreddit python --title "Post Title"

# Post to YouTube (video upload)
socialia post youtube "Description" --video video.mp4 --title "My Video"

# Analytics tracking
socialia analytics track page_view --param page /docs

# Get realtime users
socialia analytics realtime

# Post from file
socialia post twitter --file tweet.txt

# Delete a post
socialia delete twitter 1234567890

# Post a thread (separate posts with ---)
socialia thread twitter --file thread.txt

# Dry run (preview without posting)
socialia post twitter "Test" --dry-run

# Show all commands
socialia help-recursive

# JSON output
socialia --json post twitter "Hello"

Quick Start with Make

make install                    # Install package
make check                      # Verify credentials
make twitter MSG='Hello!'       # Post to Twitter
make linkedin MSG='Update'      # Post to LinkedIn
make dry-run P=twitter MSG='Test'  # Preview
make setup                      # View setup guide

Python API

from socialia import TwitterPoster, LinkedInPoster, RedditPoster, GoogleAnalytics, YouTubePoster

# Twitter
twitter = TwitterPoster()
result = twitter.post("Hello World!")
twitter.post_thread(["First", "Second", "Third"])

# LinkedIn
linkedin = LinkedInPoster()
linkedin.post("Professional update!")

# Reddit (requires: pip install socialia[reddit])
reddit = RedditPoster()
reddit.post("Post body", subreddit="test", title="Title")

# YouTube (requires: pip install socialia[youtube])
youtube = YouTubePoster()
youtube.post("Description", video_path="video.mp4", title="My Video")

# Google Analytics (requires: pip install socialia[analytics])
ga = GoogleAnalytics()
ga.track_event("social_post", {"platform": "twitter", "post_id": "123"})
ga.get_page_views(start_date="7daysAgo", end_date="today")

MCP Server

Add to Claude Code settings:

{
  "mcpServers": {
    "socialia": {
      "command": "python",
      "args": ["-m", "socialia.mcp_server"],
      "env": {
        "SCITEX_X_CONSUMER_KEY": "...",
        "SCITEX_X_CONSUMER_KEY_SECRET": "...",
        "SCITEX_X_ACCESSTOKEN": "...",
        "SCITEX_X_ACCESSTOKEN_SECRET": "..."
      }
    }
  }
}

Environment Variables

# Twitter/X
export SCITEX_X_CONSUMER_KEY="your_consumer_key"
export SCITEX_X_CONSUMER_KEY_SECRET="your_consumer_secret"
export SCITEX_X_ACCESSTOKEN="your_access_token"
export SCITEX_X_ACCESSTOKEN_SECRET="your_access_token_secret"

# LinkedIn
export LINKEDIN_ACCESS_TOKEN="your_access_token"

# Reddit
export REDDIT_CLIENT_ID="your_client_id"
export REDDIT_CLIENT_SECRET="your_client_secret"
export REDDIT_USERNAME="your_username"
export REDDIT_PASSWORD="your_password"

# YouTube
export YOUTUBE_CLIENT_SECRETS_FILE="path/to/client_secrets.json"

# Google Analytics
export GA_MEASUREMENT_ID="G-XXXXXXXXXX"
export GA_API_SECRET="your_api_secret"
export GA_PROPERTY_ID="123456789"  # Optional, for Data API

Detailed setup guide: make setup or see docs/SETUP.md

Project Structure

socialia/
├── src/socialia/         # Python package
│   ├── cli.py            # CLI with argparse
│   ├── twitter.py        # Twitter/X API
│   ├── linkedin.py       # LinkedIn API
│   ├── reddit.py         # Reddit API (PRAW)
│   ├── youtube.py        # YouTube API
│   ├── analytics.py      # Google Analytics
│   ├── mcp_server.py     # MCP server (delegates to CLI)
│   └── base.py           # Base class
├── docs/
│   ├── platforms/        # Platform API documentation
│   └── SETUP.md          # Step-by-step setup guide
├── Makefile              # Command dispatcher
├── pyproject.toml
└── .env                  # Credentials (gitignored)

Supported Platforms

Platform Status API Install
Twitter/X Ready v2 OAuth 1.0a pip install socialia
LinkedIn Ready v2 OAuth 2.0 pip install socialia
Reddit Ready PRAW pip install socialia[reddit]
YouTube Ready Data API v3 pip install socialia[youtube]
Google Analytics Ready GA4 + Data API pip install socialia[analytics]

SciTeX Integration

Socialia is part of the SciTeX ecosystem:

# Install via scitex
pip install scitex[social]

# Use in research workflows
import scitex as stx
from socialia import TwitterPoster

@stx.session
def share_results(twitter=stx.INJECTED):
    # Auto-configured from scitex settings
    twitter.post("New research results!")

SciTeX
AGPL-3.0 · social@scitex.ai

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

socialia-0.1.0.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

socialia-0.1.0-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file socialia-0.1.0.tar.gz.

File metadata

  • Download URL: socialia-0.1.0.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for socialia-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e7b68e20762ec965f834b8beff0276fb0c5662a21b1178ab2a08df1fe4ee0108
MD5 471907e36543b5f026cf5602a8232f7a
BLAKE2b-256 cf5f0ba49c878f2564d4aa72a7d6b3ed0e0a3baf385adf5ac2fd5fade69a466a

See more details on using hashes here.

File details

Details for the file socialia-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: socialia-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.0rc1

File hashes

Hashes for socialia-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5da5dcb322fe397482149a041c7a73ff5e96218ea9059f36e94e3895b8ce18a1
MD5 b2b68a6d32c3dd1b2aa512cca9b58895
BLAKE2b-256 14775f9a3073eb0fecfcabb41f75cc0bda1f69969c3e98912b45b6fbee17b273

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page