Skip to main content

Socials Daily

Fetch recent posts from public social media accounts and generate a daily summary.

Setup

uv sync

Optional backends:

uv sync -E hikerapi -E xpoz -E youtube

Usage

  1. Edit accounts.json — grouped by platform:
{
  "bluesky": {
    "accounts": [{"handle": "bsky.app"}]
  },
  "instagram": {
    "accounts": [{"handle": "natgeo"}, {"handle": "nasa"}]
  }
}

Each account can have a custom limit:

{
  "bluesky": {
    "accounts": [
      {"handle": "bsky.app"},
      {"handle": "atmos.bsky.social", "limit": 20}
    ]
  },
  "instagram": {
    "accounts": [
      {"handle": "natgeo"}
    ]
  }
}

Each platform can override the scraper backend (optional):

{
  "instagram": {
    "backend": "hikerapi",
    "accounts": [
      {"handle": "natgeo"}
    ]
  }
}

Backend resolution (highest to lowest priority):

  1. CLI --backend flag (overrides everything)

  2. Platform backend in accounts.json

  3. Default mapping (instagram → instaloader, bluesky → bluesky, etc.)

  4. Run the scraper:

# Default: Bluesky (free, no auth needed)
uv run python -m socials_daily scrape

# Instagram (free, rate-limited)
uv run python -m socials_daily scrape --backend instaloader

# HikerAPI (pay-per-request, ~$0.0006/request)
uv run python -m socials_daily scrape --backend hikerapi --api-key YOUR_KEY

# Xpoz (pre-indexed data, free tier available)
uv run python -m socials_daily scrape --backend xpoz --api-key YOUR_KEY
  1. Check the output:
output/daily-summary-YYYY-MM-DD.md   # Markdown summary
output/daily-summary-YYYY-MM-DD.json # JSON for programmatic use

Add Accounts

# Bluesky (default)
uv run python -m socials_daily add bsky.app

# Instagram
uv run python -m socials_daily add natgeo --platform instagram

# With custom limit
uv run python -m socials_daily add atmos.bsky.social --platform bluesky --limit 20

# Set platform backend
uv run python -m socials_daily add natgeo --platform instagram --backend hikerapi

Scrapers

Backend Cost Setup Best For
bluesky Free None Public Bluesky accounts
instaloader Free None 1-5 Instagram accounts, low volume
reddit Free None Subreddit posts
rss Free None Any RSS/Atom feed
youtube Free uv sync -E youtube YouTube channel videos
hikerapi ~$0.0006/request API key Reliable, high volume
xpoz Free tier available API key Pre-indexed data, multi-platform

Bluesky (default)

Uses Bluesky's public AT Protocol API. No authentication required.

uv run python -m socials_daily scrape --backend bluesky

Instaloader

Free, open-source Instagram scraper. Rate-limited by Instagram.

HikerAPI

REST API with 100+ endpoints. No blocks, no rate limits.

export HIKERAPI_TOKEN=your-key
uv run python -m socials_daily scrape --backend hikerapi

Xpoz

Pre-indexed social data API. Supports Instagram, Twitter, TikTok, Reddit.

export XPOZ_API_KEY=your-key
uv run python -m socials_daily scrape --backend xpoz

YouTube

Fetches recent videos from YouTube channels. Requires optional yt-dlp dependency.

# Install YouTube support
uv sync -E youtube

# Add a channel (handle or name)
uv run python -m socials_daily add mkbhd --platform youtube

# Scrape
uv run python -m socials_daily scrape

Reddit

Fetches recent posts from public subreddits via Reddit's JSON API. No authentication required.

# Add a subreddit
uv run python -m socials_daily add programming --platform reddit

# Scrape
uv run python -m socials_daily scrape

RSS

Scrapes any RSS/Atom feed. The handle field holds the feed URL.

# Add an RSS feed
uv run python -m socials_daily add https://www.reddit.com/r/programming/.rss --platform rss

# Scrape
uv run python -m socials_daily scrape

Project Structure

accounts.json         # Accounts grouped by platform (with optional backend config)
src/socials_daily/    # Source code
├── __main__.py       # Entry point
└── scrapers/         # Scraper backends
    ├── base.py       # Abstract interface
    ├── bluesky.py
    ├── instaloader.py
    ├── reddit.py     # Reddit JSON API
    ├── rss.py        # RSS/Atom feeds
    ├── youtube.py    # YouTube channel videos
    ├── hikerapi.py
    └── xpoz.py
output/               # Generated daily summaries
pyproject.toml        # Project config (uv)

Architecture

See ARCHITECTURE.md for a detailed breakdown of the scraper layer, config resolution, deduplication system, and data flow.

Metadata

Release files for socials-daily 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for socials-daily 0.1.0
File Size Uploaded
socials_daily-0.1.0.tar.gz 13.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for socials-daily 0.1.0
File Interpreter ABI Platform
socials_daily-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 32.8 kB

Release files / socials_daily-0.1.0.tar.gz

Download URL socials_daily-0.1.0.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
ee4f2fa8f30625bd7235805601fee26cdf39dacb354839eab69d5cd0db808b7b
BLAKE2b-256 checksum
How to use checksums
f4bcbc40ff7fd2c9ca6c3c86a4b02600915877ac129dc9e17abc788e8891c8bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / socials_daily-0.1.0-py3-none-any.whl

Download URL socials_daily-0.1.0-py3-none-any.whl
Size 19.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e4af0ecbdf706bf545c2ce7463b048b4f9ccecc0deecb888c3bc284555ad5a4d
BLAKE2b-256 checksum
How to use checksums
f0d43a40e99f4ebeee94999db4b2170122587cb5054da7cbb2c96fe049b9d9c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page