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
Dieses Repository enthält einen KI-gesteuerten Browser-Agenten, der autonom Websites besucht, sich einloggt, Daten extrahiert und diese per E-Mail für die Weiterverarbeitung (z.B. durch CrewAI) versendet. Universal Web Monitoring Agent This repository runs scheduled GitHub Actions jobs that monitor research sources and store results as Markdown reports: - **LessWrong filter**: reads recent LessWrong posts (GraphQL API, with the RSS feed as a fallback) and filters for long ML/NLP posts with likely visualizations. - **Page watchers**: scrape the Anthropic Interpretability team page and the Goodfire research page, detect Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 10/9/2026.
Freshness
Last checked 10/9/2026
Best For
Universal-Web-Monitoring-Agent 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
Dieses Repository enthält einen KI-gesteuerten Browser-Agenten, der autonom Websites besucht, sich einloggt, Daten extrahiert und diese per E-Mail für die Weiterverarbeitung (z.B. durch CrewAI) versendet. Universal Web Monitoring Agent This repository runs scheduled GitHub Actions jobs that monitor research sources and store results as Markdown reports: - **LessWrong filter**: reads recent LessWrong posts (GraphQL API, with the RSS feed as a fallback) and filters for long ML/NLP posts with likely visualizations. - **Page watchers**: scrape the Anthropic Interpretability team page and the Goodfire research page, detect
Public facts
5
Change events
1
Artifacts
0
Freshness
Oct 9, 2026
Capability contract not published. No trust telemetry is available yet. 1 GitHub stars reported by the source. Last updated 10/9/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Oct 9, 2026
Vendor
Erikiss
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. 1 GitHub stars reported by the source. 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
Erikiss
Protocol compatibility
OpenClaw
Adoption signal
1 GitHub stars
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
2
Snippets
0
Languages
python
bash
python -m unittest test_lw_filter.py test_arxiv_top_papers.py
bash
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt python lw_filter.py
Full documentation captured from public sources, including the complete README when available.
Docs source
GITHUB REPOS
Editorial quality
ready
Dieses Repository enthält einen KI-gesteuerten Browser-Agenten, der autonom Websites besucht, sich einloggt, Daten extrahiert und diese per E-Mail für die Weiterverarbeitung (z.B. durch CrewAI) versendet. Universal Web Monitoring Agent This repository runs scheduled GitHub Actions jobs that monitor research sources and store results as Markdown reports: - **LessWrong filter**: reads recent LessWrong posts (GraphQL API, with the RSS feed as a fallback) and filters for long ML/NLP posts with likely visualizations. - **Page watchers**: scrape the Anthropic Interpretability team page and the Goodfire research page, detect
This repository runs scheduled GitHub Actions jobs that monitor research sources and store results as Markdown reports:
reports/ is honest. lw_filter.py (LW_STRICT), page_watch.py (WATCH_MIN_ENTRIES) and arxiv_top_papers.py all follow this.User-Agent, honour robots.txt (LessWrong asks for Crawl-Delay: 3) and keep to roughly one request a day. If a source deliberately blocks us, the response is to reduce load and contact the maintainers — never to rotate addresses, disguise the client or bypass a challenge.workflow_dispatch.lw_filter.py requests recent LessWrong posts over HTTP instead of browser automation, using whichever transport answers (see below).reports/YYYY-MM-DD.md.seen.json so the workflow does not report the same post twice.LW_TRANSPORT selects how posts are fetched; the default auto tries them in order and reports the winner in the report header.
| Transport | Endpoint | Coverage | Notes |
| --- | --- | --- | --- |
| graphql | POST /graphql | Full window, paginated via offset | Preferred: one request returns baseScore, wordCount, frontpageDate and the full post HTML. Uses the selector argument; the older input: { terms: … } form is deprecated server-side. |
| feed | GET /feed.xml?view=… | 10 items per view, hard-capped server-side | Fallback. The feed's <description> is the same contents.html GraphQL returns and its <guid> is the bare post ID, so the filter heuristics and seen.json work unchanged. baseScore is unavailable and renders as n/a; a Frontpage post outside the 10 newest frontpage items is reported as Personal/All (unconfirmed). Responses are CDN-cached, so this path can stay reachable when the uncacheable GraphQL POST is not — which is why no after query parameter is sent: it is part of the edge cache key, and a daily-changing value would force a MISS to the origin on every run. The lookback window is enforced client-side for both transports instead. |
seen.json untouched, exits non-zero and sends the failure alert email. Set LW_STRICT=0 to downgrade that to a green run with a degraded report.seen.json — so rewriting the file from that run's matches alone would silently delete the earlier ones, unrecoverably, since their IDs are already marked seen. Each day's matches are therefore also kept in reports/.matches/YYYY-MM-DD.json, and every run renders the union. A backlog catch-up run adds to the day's report instead of replacing it.seen.json, and the run exits non-zero — so those posts stay eligible for the next run rather than being suppressed with nothing written anywhere.LW_TIME_BUDGET_MINUTES, deliberately below the workflow's timeout-minutes. GitHub enforces that timeout by cancelling the job, and cancellation would otherwise skip the alert step — so the script gives up first.LW_BLOCK_STRIKES attempts and moves to the next transport instead of burning its whole budget.Probe LessWrong reachability step curls /api/agent/ping (LessWrong's documented reachability probe), /feed.xml and /graphql on every run and never fails the job. If /api/agent/ping is refused as well, the whole host is unreachable from GitHub's runners and no transport change will help — the remedy is to contact the LessWrong developers (POST /api/agent/feedback, or an issue on ForumMagnum) and describe the job's traffic, not to work around the block.Two separate workflows watch one concrete URL each instead of matching names on arXiv:
anthropic-interpretability-watch.yml → https://www.anthropic.com/research/team/interpretability (3×/day at 06:00, 14:00, 22:00 UTC = 00/08/16h CEST)goodfire-research-watch.yml → https://www.goodfire.ai/research (3×/day at 06:15, 14:15, 22:15 UTC, staggered to avoid push races)Both run page_watch.py, which extracts publication links from the page (rendered anchors plus URLs embedded in script/JSON payloads), compares them against a persisted baseline (seen_anthropic_interpretability.json / seen_goodfire_research.json), and writes a report to reports/ only when something changed. Design decisions:
WATCH_MIN_ENTRIES environment variable.reports/ directory is not flooded with empty daily files.On a hit, send_alert.py sends a plain-text email via SMTP. All personal data lives exclusively in GitHub Actions repository secrets (Settings → Secrets and variables → Actions), so nothing private appears in this public repository or its logs:
| Secret | Required | Description |
| --- | --- | --- |
| SMTP_HOST | yes | SMTP server of the sending account |
| SMTP_PORT | no | 587 (STARTTLS, default) or 465 (implicit TLS) |
| SMTP_USERNAME | yes | Login of the sending account |
| SMTP_PASSWORD | yes | Password / app password of the sending account |
| ALERT_EMAIL_TO | yes | Recipient address(es), comma-separated — kept secret on purpose |
| ALERT_EMAIL_FROM | no | From address, defaults to SMTP_USERNAME |
If a hit occurs while these secrets are missing, the email step fails visibly (listing only the missing secret names) so a hit can never be dropped silently. Both workflows accept two Run workflow inputs: dry_run tests scraping without committing or emailing, and test_email sends a test alert immediately so the SMTP secrets can be verified without waiting for a real hit.
arxiv_top_papers.py runs once a week (arxiv-top-papers.yml, Sundays 22:30 UTC) and covers everything submitted to the AI/computing categories cs.AI, cs.LG, cs.CL, cs.NE (override with ARXIV_CATEGORIES) during the last 7 days (LOOKBACK_DAYS). It writes reports/arxiv_top15_YYYY-MM-DD.md with two rankings:
weighted score = Σ citation_count(reference).Reference lists and citation counts come from the Semantic Scholar Graph API. Notes:
S2_API_KEY (a free Semantic Scholar API key) raises the rate limit considerably; without it the script paces itself more conservatively and the run takes longer. An invalid or not-yet-activated key (Semantic Scholar answers 403) is detected at runtime: the job logs a warning and falls back to unauthenticated requests instead of failing.S2_MAX_429_RETRIES, up to ~30 min per request) instead of aborting. An overall time budget (S2_TIME_BUDGET_MINUTES, default 240) caps the Semantic Scholar phase: when exhausted, remaining per-paper reference fetches are skipped and the report is written with the data collected so far (affected papers keep their reference count but get no weighted score).seen_*.json file.test_arxiv_top_papers.py, mocked APIs) run in the workflow before the ranking step.lab_pubs_filter.py matched recent arXiv papers against a large list of lab names (no URLs) and produced only empty reports for weeks. Its schedule is therefore commented out in .github/workflows/lab-pubs-filter.yml; it can still be started manually via workflow_dispatch and re-enabled by uncommenting the schedule block.
lw_filter.py: main LessWrong filtering scriptpage_watch.py: generic page watcher used by the Anthropic/Goodfire workflowssend_alert.py: SMTP alert mailer (configured via repository secrets)arxiv_top_papers.py: weekly arXiv AI top-papers ranking (references & citation-weighted references)test_arxiv_top_papers.py: offline unit tests for the ranking scripttest_lw_filter.py: offline unit tests for the LessWrong filter (transports, retry/blocking logic, report guards)lab_pubs_filter.py: arXiv lab-name filter (schedule temporarily disabled)requirements.txt: Python dependencies for the workflows and local runs.github/workflows/: scheduled workflowsreports/: generated Markdown reportsseen.json, seen_labs.json, seen_anthropic_interpretability.json, seen_goodfire_research.json: persisted state so nothing is reported twiceEvery value below can be set as a repository variable (Settings → Secrets and variables → Actions → Variables); lesswrong-filter.yml reads vars.<NAME> and falls back to the default. LOOKBACK_DAYS, POST_LIMIT, LW_TRANSPORT and LW_STRICT are also exposed as workflow_dispatch inputs, which take precedence — that is how you run a one-off backlog catch-up with a raised POST_LIMIT.
| Variable | Description | Default |
| --- | --- | --- |
| MIN_WORDS | Minimum word count for a matching post | 1800 |
| LOOKBACK_DAYS | How many days of posts to request | 14 |
| POST_LIMIT | Max posts fetched per run. Binds before LOOKBACK_DAYS: if more posts were published in the window than this, the window is truncated and the report says so. LessWrong publishes roughly 15–30 posts a day | 100 |
| POST_SCOPE | all, frontpage, or personal | all |
| LW_TRANSPORT | auto, graphql, or feed | auto |
| LW_STRICT | 1 fails the run when no transport works; 0 writes a degraded report instead | 1 |
| LW_PAGE_SIZE | Posts per GraphQL request when paginating | 50 |
| LW_MAX_RETRIES | Retry budget for network and 5xx errors | 5 |
| LW_MAX_429_RETRIES | Separate retry budget for rate limiting | 6 |
| LW_MAX_BACKOFF_SECONDS | Maximum computed wait between retries | 60 |
| LW_RETRY_AFTER_CAP | Hard ceiling on an honoured Retry-After header | 300 |
| LW_BLOCK_STRIKES | Consecutive budget-less refusals treated as a standing block | 2 |
| LW_CRAWL_DELAY | Minimum seconds between requests (robots.txt asks for 3) | 3 |
| LW_TIME_BUDGET_MINUTES | Total wall clock the run may spend waiting out retries, across all transports. Keep below the workflow's timeout-minutes | 10 |
| LW_FEED_VIEWS | Comma-separated RSS views for the feed transport | Derived from POST_SCOPE |
| LESSWRONG_USER_AGENT | Identifiable user agent for API requests | Repository URL based default |
| LW_REQUEST_TIMEOUT | Request timeout in seconds | 60 |
LW_MAX_RETRIES, LW_MAX_BACKOFF_SECONDS and LW_REQUEST_TIMEOUT also accept the older unprefixed names (MAX_RETRIES, MAX_BACKOFF_SECONDS, REQUEST_TIMEOUT); the prefixed ones win. The prefix exists because three scripts in this repository read those generic names with different intended defaults.
test_lw_filter.py and test_arxiv_top_papers.py mock all HTTP, so they run offline and are executed by their workflows before the real job:
python -m unittest test_lw_filter.py test_arxiv_top_papers.py
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python lw_filter.py
LW_CRAWL_DELAY, one run a day).loginToken harvested from a logged-in browser session, which would mean storing a live session credential in repository secrets — deliberately not done./api/SKILL.md, /api/latest, /api/post/[id]). It is not used here because the filter's visualization heuristic counts HTML elements (<figure>, <svg>, <canvas>, <iframe>, <table>), which the Markdown rendering discards. /api/agent/ping and /api/agent/feedback from that same API are used for the reachability probe and as the escalation path.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-erikiss-universal-web-monitoring-agent/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/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-erikiss-universal-web-monitoring-agent/snapshot",
"contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/contract",
"trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/trust"
},
"curlExamples": [
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/snapshot\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/contract\"",
"curl -s \"https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/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-10T00:47:50.284Z"
}
},
"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": "Erikiss",
"href": "https://github.com/Erikiss/Universal-Web-Monitoring-Agent",
"sourceUrl": "https://github.com/Erikiss/Universal-Web-Monitoring-Agent",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T11:16:31.808Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T11:16:31.808Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1 GitHub stars",
"href": "https://github.com/Erikiss/Universal-Web-Monitoring-Agent",
"sourceUrl": "https://github.com/Erikiss/Universal-Web-Monitoring-Agent",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T11:16:31.808Z",
"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-erikiss-universal-web-monitoring-agent/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-erikiss-universal-web-monitoring-agent/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 Universal-Web-Monitoring-Agent and adjacent AI workflows.