Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻訳待ち
No updates detected yet. GitHub releases will appear here.
AI content pipeline: real sources → your voice → you approve → LinkedIn + X. A guide to building your own.
翻訳待ち
Loading the full README.
Read the full README ↗I built this for myself. Every week it reads podcasts, blogs, market data, my own git log and my coding stats, writes a post every other day in my voice, designs the image, and waits for one tap on my phone. Then it publishes to LinkedIn and X. It has been live since June 2026.
This repo is a working example, not a template to copy. My topics, sources and writing style are mine. What's reusable is the pattern, and the guide shows how to rebuild it around your own topics, your own data and your own voice:
TOPIC ─▶ REAL MATERIAL ─▶ GROUND ─▶ WRITE ─▶ CLEAN + TRUTH CHECK ─▶ IMAGE ─▶ YOU APPROVE ─▶ PUBLISH
| Stage | What happens | Where | Change it with |
|---|---|---|---|
| Topic | picks which topic owns today's slot | topic_rotator.py | config/topics.yaml, config/schedule.yaml |
| Material | RSS, podcasts (transcribed), APIs, your own data | scraper.py, podcast_insights.py, *_insights.py | config/scraper_sources.yaml + a small module for your own data |
| Dedup | skips URLs, similar titles, stale news and podcast episodes already used | duplicate_checker.py, podcast_insights.py | automatic |
| Ground | 2–3 passages from your books/notes as background | knowledge_base.py | books/*.pdf + scripts/ingest_books.py |
| Write | LLM writes in your voice from the material only | writer.py | config/voice_rules.yaml, templates/voice_samples.txt |
| Clean + check | strips model junk, enforces style, rejects made-up numbers | post_processor.py | toggle fixes in process_post() |
| Image | branded card, chart or stat card rendered by Playwright | cards.py, screenshotter.py | INSIGHT_CARDS, static/assets, static/fonts |
| Approve | drafts wait as PENDING on a mobile dashboard | api.py, static/dashboard.html | — |
| Publish | LinkedIn post + first-comment link, X thread + reply | publisher.py, cron.py | .env keys |
Adding an RSS-based topic takes zero code: one entry in topics.yaml and a list of feeds in scraper_sources.yaml. Adding your own private data source (training log, sales sheet, git log…) is one small module and one elif. The guide has a full example.
git clone https://github.com/lubobali/Lubo_AI_Publisher.git
cd Lubo_AI_Publisher
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium
cp .env.example .env # NVIDIA_API_KEY is the only required key
docker compose up publisher-db -d
python3 -m pytest tests/ -q # safe: uses a separate publisher_test DB
python3 scripts/test_pipeline.py # generate a week of drafts (nothing is published)
uvicorn src.api:app --port 8100 # read them at http://localhost:8100
Then follow BUILD_YOUR_OWN.md to swap in your topics, sources and voice.
This is how I configured it. Use it as a reference for what a finished setup looks like.
| Topic | Primary source | Fallback | Image |
|---|---|---|---|
| Biohacker (3 of every 9 posts) | Podcast episodes, transcribed and distilled: The Human Upgrade (Dave Asprey), Paul Saladino MD, The Ultimate Human (Gary Brecka) | 18 RSS feeds | Insight card |
| AI News | Weekly Moonshots with Peter Diamandis episode, read for news | 27 RSS feeds (OpenAI, DeepMind, NVIDIA, Hugging Face…) | Headline card |
| Tech Talk | Same episode, read for ideas worth a senior opinion | 23 RSS feeds (Pragmatic Engineer, Latent Space, Martin Fowler…) | Insight card |
| Market Pulse | Real index data from yfinance. The chart symbols are picked from the week's market podcasts | — | ECharts market card |
| Investing Principle | Finance blogs (JL Collins, A Wealth of Common Sense, Of Dollars and Data, The New Frontier) | CNBC / MarketWatch RSS | Insight card |
| My Agent Build | My real git log: commits grouped by feature, real +/- lines | — | Git card |
| Building in Public | My real coding week from DevTrack-AI / WakaTime: hours, languages, AI usage, momentum | — | Stat card |
Schedule (Chicago time): one post every other day (post_every_n_days: 2), 3–5pm on weekdays and 11am–1pm on weekends, at a random minute. The order comes from a 9-slot weekly plan where Biohacker owns 3 slots and the other 6 topics rotate and shift by one slot each week. Set post_every_n_days: 1 and that same plan runs day by day, 9 posts a week.
Designing Data-Intensive Applications · Fundamentals of Data Engineering · Data Engineering Cookbook · Fundamentals of Metadata Management · The Architecture of Open Source Applications Vol 1 + 2 · Dive into Deep Learning · Foundations of Large Language Models · Speech and Language Processing (3e) · Machine Learning Yearning · Illustrated Guide to Python 3. Plus the 4 finance blogs above.
Pipeline: pypdf → clean → ~400-word chunks (50 overlap, sentence-aware) → llama-nemotron-embed-vl-1b-v2 (2048-dim) → Postgres → numpy cosine, min score 0.35. No vector DB needed at this size. The PDFs are not in the repo.
This is the beginning of the README. Read the rest at the original. Read the full README ↗