I made Relinos, an open-source programmable browser that lets you turn websites into reusable APIs.
The idea is to make browser interactions and extractions easy to create, export, and share. I'd like to build a community of shared website automations that anyone can understand and maintain.
Isn't this just Playwright? No, Relinos runs locally and exposes a language-agnostic REST API. It handles much of the underlying complexity and common problems for you. This includes:
- Site actions ( click, type, scroll, ... ) with visual debug files
- Concurrency for rendered ( chromium ) and simple http requests
- Built-in caching of request results
- Per Request proxies
- Passes Cloudflare and reCAPTCHA v3
- Html to Markdown
- Html to JSON with xpathschema format
- Reusable routines with parameters and extractions
A Google Search automation that opens Google, enters a query, handles pagination and extracts structured data can be defined in just 24 lines of JSON.
{
"url": "https://www.google.com",
"render": true,
"actions": [
["actionWaitForAndSelect", "//textarea[@name='q']", "1"],
["actionType","your search term",""],
["actionSleep", "1", ""],
["actionKeyboardEnter", "", ""],
["actionSleep", "2", ""]
],
"pagination": ["//*[@id='pnnext']", "2"],
"cache": "1d",
"format": "json",
"extraction": {
"results": {
"$xpath": "//div[contains(@class, 'MjjYud')]",
"$list": true,
"title": { "$xpath": ".//h3[contains(@class, 'LC20lb MBeuO DKV0Md')]" },
"url": { "$xpath": ".//a[contains(@class, 'zReHs')]/@href" },
"site": { "$xpath": ".//span[contains(@class, 'VuuXrf')]" },
"snippet": { "$xpath": ".//div[contains(@data-snf, 'nke7rc')]" }
}
}
}
We can make this routine easy to reuse by parametrizing and saving it.The vision: Make the web programmable: imagine being able to use any website as an API, whether in your own applications or for an LLM.
I would love to hear your thoughts and feedback. Where should I focus my efforts next to support your use cases? Sergio