This project has been archived by its maintainers, and is no longer receiving any updates.
Vociro — Social-Media Search Assistant
A command-line tool that launches autonomous social-media search agents powered by OpenAI (o3 or o4-mini). Each agent can gather information from:
- DuckDuckGo Web Search (HTML scrape)
- Reddit posts (plus top comments)
- Bluesky posts
The collected evidence is summarised and passed to a report compiler model that produces the final analysis. If the compiler feels the results are insufficient, it can request another search round via an internal redo_search tool.
Why?
Quickly answer exploratory questions that benefit from perspectives across traditional web pages, social-media discussion (Reddit) and emerging networks (Bluesky) without juggling multiple APIs or manual browsing.
Architecture
┌──────────────┐ 1. strategy_model (o3/o4-mini)
│ generate │ • Produces 3-8 search queries
│ search │
│ objectives │
└──────┬───────┘
│queries[]
┌──────▼───────┐ 2. N search agents (agent_model)
│ each agent │ • Picks one query
│ uses tools │ • Calls search_web / search_reddit / search_bsky
└──────┬───────┘
│summaries[]
┌──────▼───────┐ 3. report_model
│ compile │ • Writes final report
│ final report │ • May call redo_search to loop back
└──────────────┘
Installation
# (optional) create and activate a virtual environment
python -m venv .venv && source .venv/bin/activate
# install from PyPI
pip install vociro
Environment variables
Set the following variables in your terminal session before running Vociro (no .env file is used):
| Variable | Purpose |
|---|---|
OPENAI_API_KEY |
Your OpenAI key (mandatory) |
REDDIT_CLIENT_ID & REDDIT_CLIENT_SECRET |
Reddit app credentials |
BLUESKY_HANDLE & BLUESKY_APP_PASSWORD |
Bluesky login (optional – improves rate-limits) |
Examples (Unix shells):
export OPENAI_API_KEY="sk-..."
export REDDIT_CLIENT_ID="abc" REDDIT_CLIENT_SECRET="xyz"
Windows (PowerShell):
setx OPENAI_API_KEY "sk-..."
Usage
vociro init # start an interactive research session
-
Clarification phase — the assistant asks follow-up questions until it proposes a final objective:
READY: <concise objective>You must then confirm with
y(accept) orn(explain why, loop continues). Presszat any prompt to skip the phase entirely. -
Source selection
• Reddit and Bluesky are always enabled (sentiment sources).
• DuckDuckGo Web search is optional (default n). -
Model selection / number of agents — same as before.
During execution you will see, for each generated search query:
Search — <query>
Tool calls:
1. search_reddit(query='…')
2. search_bsky(query='…')
…
Total cost so far: $0.0123
The agent is encouraged to perform deep dives (many tool calls) on Reddit and Bluesky to surface real user sentiment. The report compiler will call redo_search automatically if it feels more evidence is required.
Skip everything quickly
If you want a totally non-interactive run you can feed inputs through stdin, e.g.
echo -e "My question\nz\n\n\no4-mini\no3\n" | vociro init | cat
(The first z skips clarifications.)
Extending functionality
- Add new search back-ends by:
- Implementing a simple Python function that returns JSON-serialisable results.
- Registering a matching schema in
build_tool_specs(). - Handling the tool call in
execute_tool().
- All OpenAI calls are centralised, so adding caching or async batching is straightforward.
Caveats
- DuckDuckGo HTML scraping is brittle and for light personal use only.
- The project is not production-grade: no rate-limit back-off, retries or robust error handling.
- Token counts rely on the
usagefield from the OpenAI response and may vary slightly from billing.
License
MIT – do what you like, just don't blame me.
Metadata
Release files for vociro 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vociro-0.1.2.tar.gz | 18.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vociro-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.1 kB
Release files / vociro-0.1.2.tar.gz
| Download URL | vociro-0.1.2.tar.gz |
|---|---|
| Size | 18.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2b5fe26b0afc92189a0d9c462a1d1ec78303347c64289158055a6f9edd90059
|
|
BLAKE2b-256 checksum How to use checksums |
4231c68146ac66ff0ed47348fd7b9c60401644e32fdfe85a6b81843386e67e8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.9
|
Release files / vociro-0.1.2-py3-none-any.whl
| Download URL | vociro-0.1.2-py3-none-any.whl |
|---|---|
| Size | 25.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b35b854797f33e9c72e0e5b9c2fc75fbca579ece20059ff9aa927622bbdfcf12
|
|
BLAKE2b-256 checksum How to use checksums |
1196de4f84f6bb5922ca51ae524a2d4f8fedbd8a30d39da6c4acc0ced06032d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.11.9
|