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
- 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):
-
CLI
--backendflag (overrides everything) -
Platform
backendinaccounts.json -
Default mapping (
instagram→instaloader,bluesky→bluesky, etc.) -
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
- 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
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)
| File | Size | Uploaded | |
|---|---|---|---|
| socials_daily-0.1.0.tar.gz | 13.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
How to use checksums
ee4f2fa8f30625bd7235805601fee26cdf39dacb354839eab69d5cd0db808b7bHow to use checksums
f4bcbc40ff7fd2c9ca6c3c86a4b02600915877ac129dc9e17abc788e8891c8bdWhat is trusted publishing?
twine/7.0.0 CPython/3.13.14Provenance
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 logIdentity
Workflow
Artifact
socials_daily-0.1.0.tar.gzee4f2fa8f30625bd7235805601fee26cdf39dacb354839eab69d5cd0db808b7bVerifying attestations