← Back to Plugins
Tools

Liner Search

liner-engineering By liner-engineering 👁 105 views ▲ 0 votes

Liner web search provider for OpenClaw — ClawHub plugin (@lienr/openclaw-liner-search)

GitHub

Install

npm install
npm

README

# @liner/openclaw-liner-search

A **Liner web search provider** for [OpenClaw](https://openclaw.ai/), published as
an external [ClawHub](https://clawhub.ai/) plugin. It adds Liner as a `web_search`
provider so OpenClaw agents can search the web with ranked, source-grounded
results — each with a title, URL, and excerpt.

> This is the external-plugin form of the provider. (A core-bundled PR was
> declined per OpenClaw's VISION.md, which keeps commercial integrations out of
> core; the sanctioned path is a ClawHub plugin maintained in its own repo.)

## Install

```bash
openclaw plugins install @liner/openclaw-liner-search
# or, ClawHub-only:
openclaw plugins install clawhub:@liner/openclaw-liner-search
```

## Configure

Get an API key at **[platform.liner.com](https://platform.liner.com)** (new
accounts include free credits), then either set an env var or configure it:

```bash
export LINER_API_KEY=sk_live_...
```

```json5
// openclaw.json
{
  plugins: {
    entries: {
      liner: {
        config: {
          webSearch: {
            apiKey: "sk_live_...",            // optional if LINER_API_KEY is set
            baseUrl: "https://platform.liner.com", // optional override
          },
        },
      },
    },
  },
  tools: { web: { search: { provider: "liner" } } },
}
```

The provider also auto-detects when `LINER_API_KEY` (or the config key) is present.

## Tool

`web_search` with:

| arg | type | notes |
|-----|------|-------|
| `query` | string (required) | natural-language question or keyword phrase |
| `count` | integer 1–50 | maps to Liner's `max_results` (default 5) |

Each result maps as `title` → `title`, `url` → `url`, Liner's `description`
excerpt → `description`, and `date` → `published`. Calls go through OpenClaw's
trusted-endpoint, content-wrapping, and search-cache plumbing like the bundled
providers.

## Develop

```bash
npm install
npm run typecheck
npm test                 # unit tests (mocked HTTP)
LINER_API_KEY=sk_live_... npm run test:live   # live test against platform.liner.com
```

## Publish to ClawHub

```bash
npm run publish:dry      # clawhub package publish ... --dry-run
npm run publish:clawhub  # clawhub package publish liner/openclaw-liner-search
```

> **Before first publish, confirm:**
> - The package **scope must match a ClawHub owner you control** (`@liner`).
>   If Liner's ClawHub owner handle differs, rename the package + `install`/
>   `publish` specs accordingly (ClawHub rejects scope/owner mismatches).
> - `openclaw.compat` / `openclaw.build` versions track the OpenClaw release you
>   built/tested against (currently `2026.6.x`).
> - New releases are hidden from install surfaces until ClawHub's automated
>   security review completes.

## Files

| File | Role |
|------|------|
| `openclaw.plugin.json` | manifest — id, `webSearchProviders` contract, config schema, UI hints |
| `index.ts` | plugin entry — registers the provider |
| `web-search-provider.ts` | top-level re-export |
| `web-search-contract-api.ts` | lightweight contract surface (metadata-only) |
| `src/liner-web-search-provider.shared.ts` | provider base (id/label/auth/order) |
| `src/liner-web-search-provider.ts` | tool schema + `createTool` |
| `src/liner-web-search-provider.runtime.ts` | HTTP call + response mapping |
| `src/liner-web-search-provider.test.ts` | unit tests |
| `liner.live.test.ts` | gated live test |
| `test-api.ts` | test-only re-export of runtime helpers |

## License

MIT
tools

Comments

Sign in to leave a comment

Loading comments...