agentCLAWHUBUnverified

line-oa-chat-send

Send explicitly authorized LINE Official Account Chat messages through a persistent Chromium session; user-operated LINE login or reauthentication may use a temporary remote noVNC handoff that grants interactive browser control. Skill: line-oa-chat-send Owner: mosluce Summary: Send explicitly authorized LINE Official Account Chat messages through a persistent Chromium session; user-operated LINE login or reauthentication may use a temporary remote noVNC handoff that grants interactive browser control. Tags: latest:0.1.6 Version history: v0.1.6 | 2026-07-29T08:06:26.333Z | user v0.1.6 — first clean publish; the skill itself is unchanged since

OpenClaw

Rank

62

Safety

84

Downloads

1.0k

Updated

Oct 11, 2026

Version

0.1.6

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 11, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 11, 2026
Adoption signal
1K downloadsadoption · observed Oct 11, 2026
Latest release
0.1.6release · observed Jul 29, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17934mwfw7y691b30bz9n5hhs8aqhhd:line-oa-chat-send
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. 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.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-mosluce-line-oa-chat-send/snapshot"

Run-check

$0.02 USD

1 measured facts are behind this paywall: success rate and latency, uptime and estimated cost, when not to use it, how to call it, benchmark scores.

Agents pay $0.02 in USDC. A card payment is $0.50, the smallest a card allows.

Documentation

CLAWHUB

151,671 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: line-oa-chat-send
description: Send explicitly authorized LINE Official Account Chat messages through a persistent Chromium session; user-operated LINE login or reauthentication may use a temporary remote noVNC handoff that grants interactive browser control.
---

# LINE OA Chat: send a message

## Use when

A user provides or has already opened a LINE OA Chat URL and asks to send a
specific message to a named chat recipient.

## Prerequisites

- The persistent Chromium profile is already authenticated to LINE by the user.
- A browser session is running with its loopback CDP endpoint reachable.
- The user has explicitly authorized the outgoing message. Do not infer a
  message other than an unambiguous test message.

## Security boundary

- Normal message work uses local CDP only. It does not expose a browser, CDP,
  VNC, screenshots, cookies, or profile data to the network.
- The optional noVNC handoff is **only** for a user to complete LINE login or
  reauthentication. It grants whoever holds its URL interactive control of the
  browser, so treat the URL as a high-risk bearer secret—not as a general
  browsing or support channel.
- Start a handoff only after the user explicitly requests this
  login/reauthentication route. It has a default 15-minute TTL (configurable only
  from 60 to 3600 seconds), must be shared only in a direct private channel, and
  must be revoked immediately after login. Do not use it to send messages, browse
  unrelated sites, or perform autonomous actions.
- Never request, handle, record, or transmit LINE passwords, OTPs, or other
  credentials. The user completes every authentication step themselves.
- Never log, commit, reuse, or relay a handoff URL.

Revoking a handoff removes external reachability only; the browser session keeps
running. That narrows the cost of revoking promptly — it does not narrow what the
handoff grants while it is armed.

## Quick start

```bash
# 1. Check the environment. Exit 0 = ready; 3 = usable but not logged in; 1 = blocked.
bash scripts/doctor.sh

# 2. Start the browser session if one is not running.
#    Owns the display, Chromium, and a loopback-only screen-sharing stack.
#    Nothing is externally reachable.
bash scripts/start_line_oa_chromium.sh

# 3. ONLY when the user explicitly asks to log in or re-authenticate.
#    Prints one URL, already verified reachable, or fails non-zero.
export LINE_OA_SEND_CHAT_HANDOFF_PURPOSE=line-login
export LINE_OA_SEND_CHAT_HANDOFF_TTL_SECONDS=900   # 60-3600, default 900
bash scripts/start_line_oa_vnc_handoff.sh

# 4. Revoke as soon as the user says login is done. Session keeps running.
bash scripts/stop_line_oa_vnc_handoff.sh

# 5. Find and open the chat without sending. This is the safe default.
bash scripts/run_line_oa_chat.sh --recipient "<exact recipient>" --message "<message>"

# 6. Send, only after the user authorized this exact recipient and message.
bash scripts/run_line_oa_chat.sh --recipient "<exact recipient>" --message "<messa

containers/README.md

# Container test environment

A reproducible Linux environment for running and deliberately breaking this
repository's scripts. It exists because the scripts target Linux while
development happens elsewhere, and because failure paths are far cheaper to
exercise by picking a variant than by breaking a real host by hand.

## What this is and is not authoritative for

| Authoritative for | Not authoritative for |
| --- | --- |
| Script behavior | Which startup phase dominates |
| Refusal and error paths | Absolute phase durations |
| Dependency detection and remediation messages | Any reported speedup figure |
| Handoff arm/revoke lifecycle | End-to-end message send |

Latency results from this container are usable for rehearsing a measurement and
for same-host before-and-after comparison. They are **not** an answer to which
phase dominates handoff startup. Both poles are distorted here, in the same
direction but by different and unpredictable amounts:

- **Chromium** is slowed by the VM's CPU allocation and filesystem layer, and is
  simultaneously *sped up* by using a throwaway profile instead of a real one.
- **Tunnel registration** is slowed because Quick Tunnels prefer QUIC over UDP,
  which a desktop VM's NAT can degrade into an HTTP/2 fallback, and because
  egress goes through a workstation network rather than a datacenter link.

## Distance from the target host

The target is **x86_64 Debian 13 (trixie)**, running as a Kubernetes pod. The
container here is **arm64 Debian 12 (bookworm)** on a Docker Desktop VM. They
differ in instruction set, distribution release, and virtualization layer.

| Differs | Effect |
| --- | --- |
| arm64 here vs x86_64 there | Different silicon; no basis for comparing absolute times |
| Debian 12 vs Debian 13 | Different Chromium, Caddy, and cloudflared builds |
| Docker Desktop VM vs a pod | Different CPU allocation and filesystem layer |
| Throwaway profile instead of a real authenticated one | Deflates Chromium cold start |
| Workstation egress, QUIC through the VM's NAT | Changes tunnel registration and DNS behaviour |
| `seccomp=unconfined`, absent on the target | Changes sandbox setup cost |

Measured, once both sides had run the same script:

| | container | target |
| --- | --- | --- |
| session start | 0.53s | 1.63s |
| `tunnel_url` | 2.79s | 4.62s |

The container was **faster** on both — the opposite of what "a VM inflates
startup" would predict. That is the point: the direction of the distortion was
not predictable in advance, which is why this environment is not authoritative
for latency and why the measurements had to be repeated on the target.

A concrete case: the container found that a 3s grace window failed outright,
which looked like evidence of a propagation floor. The target sweep showed no
floor at all — misses are sporadic and independent of how long you wait. The
container result was one unlucky sample generalized into a rule. It was labelled
non-authoritative, and that label is why it was

README.md

# line-oa-chat-send

A safety-first CLI for sending messages through an already authenticated
[LINE Official Account Chat](https://chat.line.biz/) browser session.

The send command attaches to a local Chromium DevTools (CDP) endpoint. It does
not start a browser, log in to LINE, or collect credentials.

> **Optional login handoff — high-risk capability:** when a user explicitly asks
> to complete LINE login or reauthentication through a remote GUI,
> `scripts/start_line_oa_vnc_handoff.sh` arms a temporary Cloudflare noVNC URL
> that grants its holder interactive control of the browser. It attaches to a
> running session rather than starting one, requires the explicit
> `LINE_OA_SEND_CHAT_HANDOFF_PURPOSE=line-login` scope, defaults to a 15-minute
> TTL, keeps VNC and CDP loopback-only, and must be revoked as soon as login
> ends. Revoking it leaves the browser session running.

## What it does

- Searches for a chat recipient and refuses ambiguous matches.
- Opens the selected conversation and confirms the composer is available.
- Defaults to a no-send dry run; requires an explicit `--send` to transmit.
- After a send, checks that the composer cleared and the exact message appears in
  the active transcript.

## Requirements

1. A user-authenticated LINE OA Chat session in Chromium.
2. Chromium exposing a loopback CDP endpoint (default `http://127.0.0.1:9222`).
3. Python with the `playwright` package. No browser download is needed — the tool
   attaches to an existing Chromium.
4. Explicit authorization for the recipient and the outgoing message.

Linux is the supported platform. `containers/` provides a reproducible Linux
environment for running the scripts from another OS.

> **Authentication:** complete LINE login, password entry, QR confirmation, MFA,
> OTP, and security prompts yourself in the interactive browser. This project
> never accepts, stores, or transmits those secrets.

## Check the environment first

```bash
bash scripts/doctor.sh
```

| Exit | Meaning |
| --- | --- |
| 0 | Ready; a send can run |
| 3 | Environment usable, LINE authentication required — a checkpoint, not a failure |
| 1 | Blocked; the missing pieces and their remediation are printed |

It reports what the launcher will actually do, and never suggests widening a
network binding. It invokes no package manager and no `sudo`.

If it reports no Python runtime:

```bash
bash scripts/setup_line_oa_runtime.sh --runtime-dir <private-dir> --skip-browser-install
export LINE_OA_PYTHON=<private-dir>/venv/bin/python
```

## Usage

```bash
# Start the browser session. Owns the display, Chromium, and a loopback-only
# screen-sharing stack. Nothing is externally reachable.
bash scripts/start_line_oa_chromium.sh

# Safe default: find and open a uniquely matched chat, send nothing.
bash scripts/run_line_oa_chat.sh --recipient "Recipient name" --message "Message text"

# Send, only after the recipient and exact text have been authorized.
bash scripts/run_line_oa_chat.sh --recipient "

_meta.json

{
  "ownerId": "kn743ga1fg7x5xfqphk150apyd8apt23",
  "slug": "line-oa-chat-send",
  "version": "0.1.6",
  "publishedAt": 1785312386333
}

references/handoff-operations.md

# Handoff operations

Why the session and handoff scripts look the way they do. Everything here is
already enforced in code — this is the reasoning, for when the code needs
changing. Read it before editing `scripts/start_line_oa_chromium.sh`,
`scripts/start_line_oa_vnc_handoff.sh`, or `scripts/lib/*.sh`.

## Shape

```
Browser session (long-lived, loopback only)
  Xvfb ── Chromium ── CDP 127.0.0.1:9222
    └──── x11vnc ──── websockify ──── Caddy (404 until armed)

Login handoff (ephemeral, the only thing that is ever externally reachable)
    Caddy token route ──── cloudflared Quick Tunnel ──── public HTTPS URL
```

The session owns the browser. The handoff attaches. Revoking the handoff removes
the tunnel and the route and leaves everything else running.

## Ports are never assumed free

VNC, websockify, Caddy, and Caddy's admin endpoint all get dynamically selected
loopback ports, chosen in one call that holds each socket until all are chosen —
otherwise the same port can be handed out twice.

Fixed ports silently attach the handoff to something else. A hard-coded `5900`
can bind to another display and produce a black canvas; a hard-coded front-end
port can collide and leave a working tunnel URL serving nothing.

## Caddy's output is not discarded

A bind conflict with output sent to `/dev/null` surfaces as "the URL works but
the page is blank" — expensive to diagnose, trivial to prevent. Output goes to
the run log.

## The site address is host-agnostic

```
:PORT {
  bind 127.0.0.1
  ...
}
```

Not `http://127.0.0.1:PORT`. The tunnel arrives carrying a public Host header,
and a host-specific site address rejects it. `bind 127.0.0.1` keeps the listener
on loopback while leaving the matcher host-agnostic.

Keep `handle` blocks multi-line. Compact inline blocks can fail Caddy parsing.

## x11vnc needs `-noxrecord -noxfixes -noxdamage`

Without them noVNC can stay black even while Chromium has a mapped window on the
display.

The cost is real: `-noxdamage` disables the damage extension, so x11vnc polls
the whole screen instead of being told what changed. That means higher CPU and a
less responsive remote canvas. It is a deliberate trade — a slow picture beats no
picture — and it affects interaction latency, not startup time.

## Verification waits before it probes

The single most counterintuitive part.

A fresh `trycloudflare.com` hostname is **not resolvable when cloudflared prints
it**. A lookup that misses is cached as a negative answer, and re-querying keeps
refreshing that negative entry — so an eager polling loop holds itself in
failure long past actual propagation.

Measured:

| Approach | Outcome |
| --- | --- |
| Probe immediately, poll every 1s | Hostname never resolved within 120s |
| Wait 45s quietly, then query once | Resolved on the first query |

This is not a container artifact. systemd-resolved, dnsmasq, and container
embedded DNS all cache negative answers.

So the handoff waits a quiet grace window (`LINE_OA_SEND_CHAT_HANDOFF_V
Github ReposUpdated 2d agoRank 70

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!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

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

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/mosluce/skills/line-oa-chat-send",
      "sourceUrl": "https://clawhub.ai/mosluce/skills/line-oa-chat-send",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T17:04:05.712Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-mosluce-line-oa-chat-send/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mosluce-line-oa-chat-send/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-11T17:04:05.712Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1K downloads",
      "href": "https://clawhub.ai/mosluce/line-oa-chat-send",
      "sourceUrl": "https://clawhub.ai/mosluce/line-oa-chat-send",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-11T17:04:05.712Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "0.1.6",
      "href": "https://clawhub.ai/mosluce/line-oa-chat-send",
      "sourceUrl": "https://clawhub.ai/mosluce/line-oa-chat-send",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-29T08:06:26.333Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-mosluce-line-oa-chat-send/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mosluce-line-oa-chat-send/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 0.1.6",
      "description": "v0.1.6 — first clean publish; the skill itself is unchanged since 0.1.4 No behaviour change. SKILL.md, references/, and every script the skill runs are byte-identical to 0.1.4. Nothing new to run. 0.1.5 does not exist for this skill. It was published to a skill named after a temporary directory, because the CLI derives the slug from the folder name and the workflow had started staging into `mktemp -d`. The run reported success and every check passed -- all of them verifying correct things about the wrong destination. This release is the first with the publish path fully corrected: slug and name are passed explicitly, so identity no longer depends on where files sit on disk, and the response is checked against the expected slug so a mispublish is a red run rather than a silent one. version comes from the git tag rather than the CLI's \"next patch\" default, which had matched by coincidence and would have diverged at the first minor bump. the changelog is the annotated tag message, guarded on tag object type because a lightweight tag's contents fall back to the commit message. the package excludes openspec/ and .claude/, 69 files down to 31, and the staged tree is link-checked before upload so that trimming it cannot ship dead links. only release tags publish, and checkout runs on Node 24.",
      "href": "https://clawhub.ai/mosluce/line-oa-chat-send",
      "sourceUrl": "https://clawhub.ai/mosluce/line-oa-chat-send",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-07-29T08:06:26.333Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 11, 2026.

Sponsored

Ads related to line-oa-chat-send and adjacent AI workflows.