AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | π Star if you like it!
Crawler Summary
An autonomous, multi-agent AI pipeline built with CrewAI and Python. It orchestrates LLM agents to research, summarize, and publish real-time news to Slack and a live Vercel dashboard with zero human intervention. <div align="center"> π° Signal Desk An unattended newsroom, run by agents, read by you. *A multi-agent AI pipeline that researches, summarizes, and publishes AI news β automatically, on a schedule, with zero human intervention.* $1 $1 $1 $1 $1 </div> --- π₯ Demo πΉ **$1** *(GitHub doesn't autoplay local .mp4 files inline in a README β click the link above to view, or drop the same file into a GitHub Release / Issue c Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Freshness
Last checked 10/9/2026
Best For
crewai-news-automation-bot is best for crewai, multi-agent workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, GITHUB REPOS, runtime-metrics, public facts pack
An autonomous, multi-agent AI pipeline built with CrewAI and Python. It orchestrates LLM agents to research, summarize, and publish real-time news to Slack and a live Vercel dashboard with zero human intervention. <div align="center"> π° Signal Desk An unattended newsroom, run by agents, read by you. *A multi-agent AI pipeline that researches, summarizes, and publishes AI news β automatically, on a schedule, with zero human intervention.* $1 $1 $1 $1 $1 </div> --- π₯ Demo πΉ **$1** *(GitHub doesn't autoplay local .mp4 files inline in a README β click the link above to view, or drop the same file into a GitHub Release / Issue c
Public facts
4
Change events
1
Artifacts
0
Freshness
Oct 9, 2026
Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Oct 9, 2026
Vendor
S Zaid 13
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Capability contract not published. No trust telemetry is available yet. Last updated 10/9/2026.
Setup snapshot
Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
S Zaid 13
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
6
Snippets
0
Languages
python
text
βββββββββββββββββββ cron / manual trigger ββββββββββββββββββββββββ
β GitHub Actions β ββββββββββββββββββββββββββββΆ β CrewAI Pipeline β
β (news-bot.yml) β β Researcher β
βββββββββββββββββββ β β Summarizer β
β² β β Publisher β
β workflow_dispatch ββββββββββββ¬ββββββββββββ
β β
βββββββββ΄βββββββββ ββββββββ΄ββββββββ
β api/trigger ββββββ button click βββββ β Slack β
β (Vercel func) β β β Channel β
βββββββββββββββββββ β βββββββββββββββββ
β β
βββββββββββββββββββ reads sheet ββββββββ΄βββββββββ writes rowβ
β index.html ββββββββββββββββββ api/index.py βββββββββββββββββββ
β (Dashboard) β JSON feed β (Vercel func) β
βββββββββββββββββββ βββββββββ¬βββββββββ
β
ββββββββββ΄βββββββββ
β Google Sheets β
β (data store) β
ββββββββββββββββββββtext
ai-news-bot/ β βββ agents.py # Agent definitions (Researcher, Summarizer, Publisher) βββ tasks.py # Task definitions for the crew βββ crew.py # Crew assembly + run function βββ main.py # Local entry point for testing the pipeline βββ config.py # Env loading + shared constants βββ patches.py # Runtime/library compatibility patches applied before the crew runs β βββ tools/ β βββ __init__.py β βββ news_fetcher_tool.py # Fetches raw news for the Researcher (via Serper) β βββ summarizer_tool.py # Condenses articles for the Summarizer β βββ slack_tool.py # Posts dispatches to Slack β βββ sheets_tool.py # Logs dispatches to Google Sheets β βββ api/ β βββ index.py # Vercel serverless function β dashboard API + trigger β βββ index.html # Live dashboard (served as a static asset) β βββ assets/ β βββ demo.mp4 # Demo video β βββ .github/ β βββ workflows/ β βββ news-bot.yml # Scheduled + manually-triggerable pipeline run β βββ credentials.json # Google service account key (gitignored, local only) βββ .env # Local environment variables (gitignored) βββ .env.example # Template for required env vars, safe to commit βββ .python-version # Pinned Python version for local/CI consistency βββ .gitignore βββ .vercelignore # Files excluded from the Vercel deployment bundle βββ requirements.txt βββ pyproject.toml βββ vercel.json # Deployment + routing config βββ README.md
bash
# Clone the repo git clone https://github.com/s-zaid-13/crewai-news-automation-bot.git cd ai-news-bot # Create and activate a virtual environment python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Install dependencies pip install -r requirements.txt # Configure environment variables cp .env.example .env # then fill in your values # Run the pipeline once, locally python main.py
dotenv
SLACK_BOT_TOKEN= SLACK_CHANNEL_ID= SERPER_API_KEY= GOOGLE_SHEETS_CREDENTIALS_PATH= GOOGLE_SHEET_ID= NEWS_TOPICS=AI,technology GEMINI_API_KEY= GEMINI_MODEL=gemini/gemini-3.1-flash-lite GOOGLE_CREDENTIALS_BASE64=
json
{
"count": 15,
"last_updated": "2026-08-10 20:22",
"items": [
{
"Datetime": "2026-08-10 20:22",
"Headline": "Example Headline",
"Summary": "Example summary text.",
"Source URL": "https://example.com/article"
}
]
}json
{ "status": "triggered" }Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB REPOS
Editorial quality
ready
An autonomous, multi-agent AI pipeline built with CrewAI and Python. It orchestrates LLM agents to research, summarize, and publish real-time news to Slack and a live Vercel dashboard with zero human intervention. <div align="center"> π° Signal Desk An unattended newsroom, run by agents, read by you. *A multi-agent AI pipeline that researches, summarizes, and publishes AI news β automatically, on a schedule, with zero human intervention.* $1 $1 $1 $1 $1 </div> --- π₯ Demo πΉ **$1** *(GitHub doesn't autoplay local .mp4 files inline in a README β click the link above to view, or drop the same file into a GitHub Release / Issue c
A multi-agent AI pipeline that researches, summarizes, and publishes AI news β automatically, on a schedule, with zero human intervention.
</div>πΉ Watch the demo
(GitHub doesn't autoplay local .mp4 files inline in a README β click the link above to view, or drop the same file into a GitHub Release / Issue comment to get an embeddable player.)
Signal Desk is a self-operating AI newsroom. A crew of three specialized AI agents β a Researcher, a Summarizer, and a Publisher β work together every few hours to:
No human touches the pipeline once it's deployed. It just runs β quietly, on schedule, in the background.
| | | |---|---| | π€ Multi-agent pipeline | CrewAI-powered Researcher β Summarizer β Publisher workflow | | β° Scheduled automation | Runs on a cron schedule via GitHub Actions β no server to maintain | | π¬ Slack publishing | Every dispatch is posted straight to your team's channel | | π Google Sheets archive | Permanent, queryable record of every story ever published | | π Live dashboard | A styled, real-time web UI reading directly from the Sheet | | π Duplicate-safe reads | The dashboard de-duplicates stories by source URL before rendering | | β‘ Manual override | Trigger an off-schedule run with one click from the dashboard | | π‘ Live status & highlights | Watch the pipeline run in real time β new stories glow as they land |
βββββββββββββββββββ cron / manual trigger ββββββββββββββββββββββββ
β GitHub Actions β ββββββββββββββββββββββββββββΆ β CrewAI Pipeline β
β (news-bot.yml) β β Researcher β
βββββββββββββββββββ β β Summarizer β
β² β β Publisher β
β workflow_dispatch ββββββββββββ¬ββββββββββββ
β β
βββββββββ΄βββββββββ ββββββββ΄ββββββββ
β api/trigger ββββββ button click βββββ β Slack β
β (Vercel func) β β β Channel β
βββββββββββββββββββ β βββββββββββββββββ
β β
βββββββββββββββββββ reads sheet ββββββββ΄βββββββββ writes rowβ
β index.html ββββββββββββββββββ api/index.py βββββββββββββββββββ
β (Dashboard) β JSON feed β (Vercel func) β
βββββββββββββββββββ βββββββββ¬βββββββββ
β
ββββββββββ΄βββββββββ
β Google Sheets β
β (data store) β
ββββββββββββββββββββ
Two independent surfaces, one source of truth: Slack gets a live feed as stories are published; the dashboard and Google Sheet stay in sync as the permanent archive.
gemini/gemini-3.1-flash-lite by default)gspread)workflow_dispatch)ai-news-bot/
β
βββ agents.py # Agent definitions (Researcher, Summarizer, Publisher)
βββ tasks.py # Task definitions for the crew
βββ crew.py # Crew assembly + run function
βββ main.py # Local entry point for testing the pipeline
βββ config.py # Env loading + shared constants
βββ patches.py # Runtime/library compatibility patches applied before the crew runs
β
βββ tools/
β βββ __init__.py
β βββ news_fetcher_tool.py # Fetches raw news for the Researcher (via Serper)
β βββ summarizer_tool.py # Condenses articles for the Summarizer
β βββ slack_tool.py # Posts dispatches to Slack
β βββ sheets_tool.py # Logs dispatches to Google Sheets
β
βββ api/
β βββ index.py # Vercel serverless function β dashboard API + trigger
β βββ index.html # Live dashboard (served as a static asset)
β
βββ assets/
β βββ demo.mp4 # Demo video
β
βββ .github/
β βββ workflows/
β βββ news-bot.yml # Scheduled + manually-triggerable pipeline run
β
βββ credentials.json # Google service account key (gitignored, local only)
βββ .env # Local environment variables (gitignored)
βββ .env.example # Template for required env vars, safe to commit
βββ .python-version # Pinned Python version for local/CI consistency
βββ .gitignore
βββ .vercelignore # Files excluded from the Vercel deployment bundle
βββ requirements.txt
βββ pyproject.toml
βββ vercel.json # Deployment + routing config
βββ README.md
/api/trigger and manually dispatches the workflow.NEWS_TOPICS.api/index.py reads the sheet on every request, de-duplicates by source URL, sorts by real timestamp (newest first), and returns clean JSON.index.html polls the API, renders the feed, and β after a manual trigger β actively watches for new dispatches and highlights them as they arrive..python-version# Clone the repo
git clone https://github.com/s-zaid-13/crewai-news-automation-bot.git
cd ai-news-bot
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure environment variables
cp .env.example .env # then fill in your values
# Run the pipeline once, locally
python main.py
Copy .env.example to .env and fill in your own values:
SLACK_BOT_TOKEN=
SLACK_CHANNEL_ID=
SERPER_API_KEY=
GOOGLE_SHEETS_CREDENTIALS_PATH=
GOOGLE_SHEET_ID=
NEWS_TOPICS=AI,technology
GEMINI_API_KEY=
GEMINI_MODEL=gemini/gemini-3.1-flash-lite
GOOGLE_CREDENTIALS_BASE64=
| Variable | Used By | Description |
|---|---|---|
| SLACK_BOT_TOKEN | slack_tool.py | Bot token used to post dispatches to Slack |
| SLACK_CHANNEL_ID | slack_tool.py | Channel the bot posts into |
| SERPER_API_KEY | news_fetcher_tool.py | API key for Serper.dev web search |
| GOOGLE_SHEETS_CREDENTIALS_PATH | sheets_tool.py | Local path to the service account JSON (used when running the pipeline locally / in Actions) |
| GOOGLE_CREDENTIALS_BASE64 | api/index.py | Base64-encoded service account JSON, used by the Vercel function (env vars can't hold multi-line files cleanly) |
| GOOGLE_SHEET_ID | sheets_tool.py, api/index.py | ID of the Google Sheet used as the data store |
| NEWS_TOPICS | news_fetcher_tool.py | Comma-separated list of topics the Researcher searches for |
| GEMINI_API_KEY | agents.py | API key for the Gemini LLM powering the crew |
| GEMINI_MODEL | agents.py | Gemini model identifier used by the agents |
| GITHUB_OWNER | api/index.py (trigger route) | GitHub username/org that owns the repo |
| GITHUB_REPO | api/index.py (trigger route) | Repository name |
| GITHUB_TOKEN | api/index.py (trigger route) | PAT with workflow scope, used to dispatch the Action |
Dashboard (Vercel):
GOOGLE_CREDENTIALS_BASE64, GOOGLE_SHEET_ID, GITHUB_OWNER, GITHUB_REPO, GITHUB_TOKEN) under Project Settings β Environment Variables..vercelignore keeps the agent/pipeline source (agents.py, tasks.py, crew.py, main.py, tools/, credentials.json, etc.) out of the deployed bundle β only api/ and index.html are needed there.index.html as a static asset and api/index.py as a serverless function.Automation (GitHub Actions):
SLACK_BOT_TOKEN, SLACK_CHANNEL_ID, SERPER_API_KEY, GOOGLE_SHEETS_CREDENTIALS_PATH/credentials, GOOGLE_SHEET_ID, GEMINI_API_KEY, GEMINI_MODEL) under Repo Settings β Secrets and variables β Actions..github/workflows/news-bot.yml runs on a cron schedule and can also be triggered manually via workflow_dispatch β which is exactly what the dashboard's Trigger Pipeline button calls through /api/trigger.Dispatchingβ¦ β Runningβ¦ β New dispatch added β), and any newly published story is highlighted with a gold glow as it lands.GET /api/newsReturns the de-duplicated, sorted news feed.
{
"count": 15,
"last_updated": "2026-08-10 20:22",
"items": [
{
"Datetime": "2026-08-10 20:22",
"Headline": "Example Headline",
"Summary": "Example summary text.",
"Source URL": "https://example.com/article"
}
]
}
POST /api/triggerDispatches the GitHub Actions workflow on demand.
{ "status": "triggered" }
Contributions, issues, and feature requests are welcome.
git checkout -b feature/your-feature)Signal Desk Β· CrewAI multi-agent pipeline Β· GitHub Actions cron Β· Vercel dashboard
</div>Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | π Star if you like it!
AI Agents & MCPs & AI Workflow Automation β’ (~400 MCP servers for AI agents) β’ AI Automation / AI Agent with MCPs β’ AI Workflows & AI Agents β’ MCPs for AI Agents
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
The Frontend for Agents & Generative UI. React + Angular
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_REPOS",
"generatedAt": "2026-10-10T06:26:32.611Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "crewai",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "multi-agent",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}Facts JSON
[
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "S Zaid 13",
"href": "https://github.com/s-zaid-13/crewai-news-automation-bot",
"sourceUrl": "https://github.com/s-zaid-13/crewai-news-automation-bot",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T15:16:45.561Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T15:16:45.561Z",
"isPublic": true
},
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-s-zaid-13-crewai-news-automation-bot/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub Β· GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to crewai-news-automation-bot and adjacent AI workflows.