line

$npx mdskill add vm0-ai/vm0-skills/line

Query LINE bot data and send messages via official API.

  • Retrieves bot info, user profiles, and follower lists instantly.
  • Depends on LINE API v2 and requires a valid Bearer token.
  • Executes requests when users mention LINE or messaging needs.
  • Returns structured JSON responses for programmatic integration.

SKILL.md

.github/skills/lineView on GitHub ↗
---
name: line
description: LINE API for messaging. Use when user mentions "LINE", "LINE message",
  "LINE bot", or asks about LINE platform.
---

## Troubleshooting

If requests fail, run `zero doctor check-connector --env-name LINE_TOKEN` or `zero doctor check-connector --url https://api.line.me/v2/bot/info --method GET`

## How to Use

All examples below assume you have `LINE_TOKEN` set. Authentication uses Bearer token in the Authorization header.

### Base URL

- `https://api.line.me`

### 1. Get Bot Info

Retrieve information about the bot associated with the channel access token.

```bash
curl -s "https://api.line.me/v2/bot/info" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 2. Get User Profile

Retrieve a user's display name, profile image, and status message. Replace `USER_ID` with the actual user ID.

```bash
curl -s "https://api.line.me/v2/bot/profile/USER_ID" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 3. Get Follower IDs

Retrieve a list of user IDs that have added the bot as a friend. Supports pagination with `start` parameter.

```bash
curl -s "https://api.line.me/v2/bot/followers/ids?limit=100" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

For pagination, use the `next` token from the response:

```bash
curl -s "https://api.line.me/v2/bot/followers/ids?limit=100&start=CONTINUATION_TOKEN" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 4. Send Push Message

Send a message to a specific user. Replace `USER_ID` with the target user ID.

Write to `/tmp/line_request.json`:

```json
{
  "to": "USER_ID",
  "messages": [
    {
      "type": "text",
      "text": "Hello from the LINE bot!"
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/message/push" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 5. Send Reply Message

Reply to a user event using a reply token received from a webhook event. Reply tokens expire after a short time.

Write to `/tmp/line_request.json`:

```json
{
  "replyToken": "REPLY_TOKEN",
  "messages": [
    {
      "type": "text",
      "text": "Thanks for your message!"
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/message/reply" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 6. Send Multicast Message

Send the same message to multiple users at once (up to 500 user IDs).

Write to `/tmp/line_request.json`:

```json
{
  "to": ["USER_ID_1", "USER_ID_2", "USER_ID_3"],
  "messages": [
    {
      "type": "text",
      "text": "This is a multicast message!"
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/message/multicast" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 7. Send Broadcast Message

Send a message to all users who have added the bot as a friend.

Write to `/tmp/line_request.json`:

```json
{
  "messages": [
    {
      "type": "text",
      "text": "This broadcast goes to all followers!"
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/message/broadcast" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 8. Check Message Quota

Get the monthly message quota for the LINE Official Account.

```bash
curl -s "https://api.line.me/v2/bot/message/quota" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

Check how many messages have been sent this month:

```bash
curl -s "https://api.line.me/v2/bot/message/quota/consumption" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 9. Send Image Message

Send an image to a user.

Write to `/tmp/line_request.json`:

```json
{
  "to": "USER_ID",
  "messages": [
    {
      "type": "image",
      "originalContentUrl": "https://example.com/image.jpg",
      "previewImageUrl": "https://example.com/image_preview.jpg"
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/message/push" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 10. Send Template Message (Buttons)

Send a button template message with actions.

Write to `/tmp/line_request.json`:

```json
{
  "to": "USER_ID",
  "messages": [
    {
      "type": "template",
      "altText": "Button template",
      "template": {
        "type": "buttons",
        "title": "Menu",
        "text": "Please select an option",
        "actions": [
          {
            "type": "message",
            "label": "Option 1",
            "text": "option1"
          },
          {
            "type": "uri",
            "label": "Visit Website",
            "uri": "https://example.com"
          }
        ]
      }
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/message/push" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 11. Get Webhook Endpoint

Retrieve the current webhook URL configuration.

```bash
curl -s "https://api.line.me/v2/bot/channel/webhook/endpoint" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 12. Set Webhook Endpoint

Configure the webhook URL where LINE sends events.

```bash
curl -s -X PUT "https://api.line.me/v2/bot/channel/webhook/endpoint" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d '{"endpoint":"https://example.com/webhook"}' | jq .
```

### 13. Test Webhook

Test the webhook endpoint connectivity.

```bash
curl -s -X POST "https://api.line.me/v2/bot/channel/webhook/test" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d '{"endpoint":"https://example.com/webhook"}' | jq .
```

### 14. List Rich Menus

Get all rich menus created for the bot.

```bash
curl -s "https://api.line.me/v2/bot/richmenu/list" --header "Authorization: Bearer $LINE_TOKEN" | jq '.richmenus[] | {richMenuId, name, size}'
```

### 15. Create Rich Menu

Create a new rich menu.

Write to `/tmp/line_request.json`:

```json
{
  "size": {
    "width": 2500,
    "height": 1686
  },
  "selected": false,
  "name": "Main Menu",
  "chatBarText": "Menu",
  "areas": [
    {
      "bounds": {
        "x": 0,
        "y": 0,
        "width": 1250,
        "height": 1686
      },
      "action": {
        "type": "message",
        "text": "Left button tapped"
      }
    },
    {
      "bounds": {
        "x": 1250,
        "y": 0,
        "width": 1250,
        "height": 1686
      },
      "action": {
        "type": "message",
        "text": "Right button tapped"
      }
    }
  ]
}
```

Then run:

```bash
curl -s -X POST "https://api.line.me/v2/bot/richmenu" --header "Content-Type: application/json" --header "Authorization: Bearer $LINE_TOKEN" -d @/tmp/line_request.json | jq .
```

### 16. Delete Rich Menu

Delete a rich menu by ID.

```bash
curl -s -X DELETE "https://api.line.me/v2/bot/richmenu/RICH_MENU_ID" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 17. Get Message Delivery Statistics

Get the number of messages delivered on a specific date (format: `yyyyMMdd`).

```bash
curl -s "https://api.line.me/v2/bot/insight/message/delivery?date=20260301" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 18. Get Follower Demographics

Retrieve demographic data about followers (gender, age, area distribution).

```bash
curl -s "https://api.line.me/v2/bot/insight/demographic" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 19. Get Group Summary

Retrieve information about a group chat the bot is a member of.

```bash
curl -s "https://api.line.me/v2/bot/group/GROUP_ID/summary" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

### 20. Get Group Member Profile

Retrieve the profile of a specific member in a group chat.

```bash
curl -s "https://api.line.me/v2/bot/group/GROUP_ID/member/USER_ID" --header "Authorization: Bearer $LINE_TOKEN" | jq .
```

## Message Types

LINE supports multiple message types in the `messages` array:

| Type | Description |
|------|-------------|
| `text` | Plain text message |
| `image` | Image with original and preview URLs |
| `video` | Video with original and preview URLs |
| `audio` | Audio file with duration |
| `location` | Location with title, address, and coordinates |
| `sticker` | LINE sticker with package and sticker IDs |
| `template` | Interactive template (buttons, confirm, carousel) |
| `flex` | Flexible layout message using Flex Message JSON |

## Guidelines

1. **Message limits**: Push messages count toward your monthly quota. Free plans have limited push messages. Reply messages are free
2. **Reply tokens**: Reply tokens from webhook events expire quickly. Process and reply promptly
3. **Multicast limit**: Multicast supports up to 500 user IDs per request
4. **Rich menu images**: After creating a rich menu, upload an image separately using the content upload endpoint
5. **User IDs**: User IDs are channel-specific. The same user has different IDs across different channels
6. **Message objects**: Each request can contain up to 5 message objects in the `messages` array
7. **HTTPS required**: All image, video, and audio URLs must use HTTPS
8. **Webhook verification**: LINE sends a signature in the `x-line-signature` header for webhook verification using HMAC-SHA256

More from vm0-ai/vm0-skills

SkillDescription
account-reconciliationPerform account reconciliations comparing general ledger balances against subledgers, bank statements, or external records. Use for bank reconciliation, GL-to-subledger reconciliation, intercompany reconciliation, balance sheet reconciliation, reconciling item analysis, outstanding item aging, or clearing open items.
agentphoneBuild AI phone agents with AgentPhone API. Use when the user wants to make phone calls, send/receive SMS, manage phone numbers, create voice agents, set up webhooks, or check usage — anything related to telephony, phone numbers, or voice AI.
ahrefsAhrefs SEO API for backlink and keyword analysis. Use when user mentions
amplitudeAmplitude product analytics API. Use when user mentions "Amplitude",
analysis-qaQuality-check a data analysis before sharing — verify joins, aggregations, denominators, time ranges, and metric definitions. Detect pitfalls like survivorship bias, average-of-averages, join explosion, timezone mismatches, incomplete periods, and selection bias. Includes documentation templates for reproducible analyses.
anthropic-managed-agentsAnthropic Managed Agents API for programmatically creating, running, and streaming AI agents on Anthropic's cloud infrastructure. Use when the user mentions "Managed Agents", "Anthropic agent sessions", or needs to create/run/stream an Anthropic agent with tool use (bash, git, web), attach GitHub repositories, or inject secrets via Vault. Do NOT use for standard Claude Messages API — use the Claude API skill instead.
apifyApify web scraping platform. Use when user mentions "scrape website",
asanaAsana API for tasks and projects. Use when user mentions "Asana", "asana.com",
atlassianAtlassian API for Confluence and Jira. Use when user mentions "Confluence
attioAttio REST API for AI-native CRM operations — manage companies, people, deals, and custom objects, plus notes, tasks, lists, and comments. Use when the user mentions "Attio", "CRM record", "create company", "add person", "list entry", "CRM note", or "CRM task".