Messaging api
Builds, reviews, and debugs LINE Messaging API integrations — webhook signature verification, reply/push/multicast/narrowcast/broadcast, Flex Message design, Rich Menu CRUD, audience targeting, insights, coupons, mark-as-read, and channel access tokens. Use when the user mentions LINE bot, chatbot, LINE OA, Messaging API, webhook, Flex Message, Rich Menu, push/reply/multicast/narrowcast/broadcast, audience, coupon campaign, channel access token, LINE URL scheme, or any LINE messaging integration — even when they don't say "Messaging API".From its SKILL.md
npx -y skills add kuhaku-lab/line-skills --skill messaging-apiAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.5 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
LINE Messaging API
Do not answer LINE API questions from memory — LINE updates APIs frequently and training data is unreliable. Always consult the references below.
Reference for building, reviewing, and debugging LINE Bots and LINE Messaging API integrations.
Workflow
Build
- Read references/api-common.md (rate limits, forward compatibility, error handling)
- Load the relevant reference for the feature being implemented
- For architecture or design choices, consult references/experts.md for directional guidance
- Write code following specs and constraints from references
Review / Debug
- Read references/api-common.md (rate limits, error codes)
- Load relevant references for the code being reviewed
- Cross-check code against specs (size limits, token expiry, counting rules, required fields)
- For design pattern concerns, consult references/experts.md
- Report violations with reference to specific constraints
Environment Variables
LINE_CHANNEL_ACCESS_TOKEN=Bot access token
LINE_CHANNEL_SECRET=Channel secret (webhook signature verification)
Common Specifications
Read references/api-common.md before writing any LINE bot code. Contains rules that affect all API interactions: forward compatibility (don't use strict schemas — LINE adds fields without notice), rate limits, error handling, retry policy, and logging recommendations.
Webhook
- Verification:
x-line-signatureheader (HMAC-SHA256, base64, key = Channel Secret) - Body:
{"destination": "U...", "events": [...]} - Bot server must return
200
Signature Verification (pseudocode)
channel_secret = ENV['LINE_CHANNEL_SECRET']
signature = request.headers['x-line-signature']
body = request.body # raw bytes, do NOT parse/reformat before verification
digest = HMAC_SHA256(key = channel_secret, message = body)
expected = Base64.encode(digest)
if signature != expected:
return 403 # reject — not from LINE
events = JSON.parse(body)['events']
for event in events:
handle(event)
return 200
- Never deserialize or re-format the body before verification
- Use UTF-8 encoding exclusively
- Official SDKs handle this automatically — use them when possible
Full event types, properties, and webhook settings → references/webhook-events.md
Message Sending
All require Authorization: Bearer {channel access token}:
| Mode | Endpoint | Purpose |
|---|---|---|
| Reply | POST /v2/bot/message/reply | Reply to user (requires one-time replyToken) |
| Push | POST /v2/bot/message/push | Send to a specific user/group at any time |
| Multicast | POST /v2/bot/message/multicast | Send to multiple users (max 500) |
| Broadcast | POST /v2/bot/message/broadcast | Send to all friends |
- Max 5 messages per request
- Domain:
api.line.me(general) /api-data.line.me(content upload)
Message objects → references/message-objects.md Full sending API (Narrowcast, statistics, validation, etc.) → references/message-sending.md
Flex Message
Three-layer structure:
Container (Bubble / Carousel)
└── Block (Header / Hero / Body / Footer)
└── Component (Box / Button / Image / Video / Icon / Text / Span / Separator)
Minimal Flex Message:
{
"type": "flex", "altText": "Notification",
"contents": {
"type": "bubble",
"body": {
"type": "box", "layout": "vertical",
"contents": [{"type": "text", "text": "Hello Flex!", "weight": "bold"}]
}
}
}
Full component specs, layout, video → references/flex-message.md
Official Flex Message Simulator examples → assets/examples/
Reference Index
| File | Topic |
|---|---|
| references/api-common.md | Read first. Rate limits, error handling, forward compatibility |
| references/webhook-events.md | Webhook event types and JSON structure |
| references/message-objects.md | Message objects, Quick Reply, sender customization |
| references/action-objects.md | Action objects (postback, URI, datetimepicker, etc.) |
| references/message-sending.md | Reply/Push/Multicast/Narrowcast/Broadcast, statistics |
| references/flex-message.md | Flex Message components, layout, styles |
| references/rich-menu.md | Rich Menu CRUD, tab switching, display priority |
| references/user-profile.md | User profile, follower IDs, account link |
| references/group-chat.md | Group/Room messaging and member APIs |
| references/audience.md | Audience management (create/add/get/delete) |
| references/insights.md | Delivery, follower, and interaction insights |
| references/channel-token.md | Channel access token lifecycle |
| references/coupon.md | Coupon CRUD, reward types, sending |
| references/url-schemes.md | LINE URL schemes for deep linking |
| references/experts.md | Expert domain routing and 17 specialist profiles |
| assets/examples/ | Flex Message JSON examples (11 showcases) |
SDK
Official SDKs: Python | Node.js | Go | Java | PHP | Ruby
Other languages: use LINE OpenAPI specs with OpenAPI Generator.
What ships with it: 26 files
169.5 KB alongside SKILL.md
assets/
- examples/apparel.json5.8 KB
- examples/hotel.json2.9 KB
- examples/product_list.json1.5 KB
- examples/receipt.json3.3 KB
- examples/restaurant.json2.8 KB
- examples/shopping.json1.5 KB
- examples/social.json2.7 KB
- examples/ticket.json1.8 KB
- examples/todo.json4.5 KB
- examples/transit.json2.0 KB
- examples/video_hero.json706 B
references/
- action-objects.md5.4 KB
- api-common.md7.4 KB
- audience.md8.7 KB
- channel-token.md5.5 KB
- coupon.md5.8 KB
- experts.md24.5 KB
- flex-message.md12.5 KB
- group-chat.md4.0 KB
- insights.md7.5 KB
- message-objects.md13.1 KB
- message-sending.md11.0 KB
- rich-menu.md7.7 KB
- url-schemes.md4.8 KB
- user-profile.md9.8 KB
- webhook-events.md12.4 KB
Gives 0 of the 12 instructions most marketing audience skills give in ~1.4k tokens
Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07
- Apply Poppins font to headingsin 41 of 690, across 6 files
- Apply Lora font to body textin 41 of 690, across 6 files
- Use Arial fallback for headingsin 39 of 690, across 4 files
- Use Georgia fallback for body textin 39 of 690, across 4 files
- Maintain text hierarchy and formattingin 39 of 690, across 4 files
- Use accent colors for non-text shapesin 38 of 690, across 3 files
- Use RGB values for precise color matchingin 38 of 690, across 3 files
- Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
- Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
- Use active voice instead of passive voicein 26 of 690, across 10 files
- Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
- Prioritize clarity over clevernessin 22 of 690, across 8 files
Said here and by no other author read
- Consult references before answering LINE API questions
- Load relevant references for the feature being implemented
- Consult expert references for architecture decisions
- Write code following specifications and constraints from references
- Cross-check code against specifications during review
- Report violations with reference to specific constraints
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.