| name | daum-trends-briefing |
| description | Fetch Daum real-time trend TOP10, add one-line context (top news title) + links, and print a 12-line briefing suitable for OpenClaw cron + Telegram announce. Use this skill whenever the user mentions Daum trends, ๋ค์ ์ค์๊ฐ ํธ๋ ๋, ์ค์๊ฐ ๊ฒ์์ด, ์ธ๊ธฐ ๊ฒ์์ด, trending keywords in Korea, or wants a quick Korean news briefing. Also trigger when the user asks for a periodic/scheduled trend summary or Telegram notification of Korean search trends. |
What this skill does
Creates a short briefing from Daum ๋ฉ์ธ ์ค์๊ฐ ํธ๋ ๋(REALTIME_TREND_TOP):
(ClawHub ๊ฒ์ฆ ์ ์ฑ
์ ๋ฐ์ด๋๋ฆฌ ํ์ผ(jpg/png ๋ฑ)์ ์คํฌ์ ํฌํจํ ์ ์์ด์, ์คํฌ๋ฆฐ์ท์ ์ธ๋ถ ๋งํฌ๋ก๋ง ์ฒจ๋ถํ์ธ์.)
์์ ์คํฌ๋ฆฐ์ท(์ธ๋ถ ๋งํฌ): https://github.com/user-attachments/assets/9aefc56b-6f52-4580-b4e5-585bd0e816da
- TOP10 keywords
- For each keyword: fetch Daum search page and extract one representative title (usually the first News result)
- Include links
- Print exactly 12 lines to stdout:
- Title line
2โ11) 10 trend lines
updatedAt: ...
Data sources
- Daum homepage: https://www.daum.net/
- Daum search (for each keyword):
https://search.daum.net/search?w=tot&DA=RT1&rtmaxcoll=AIO,NNS,DNS&q=<keyword>
Daum renders a large JSON blob inside the HTML. The real-time trend slot appears as a node with:
"uiType":"REALTIME_TREND_TOP"
contents.data.updatedAt
contents.data.keywords (array of { keyword, rank, ... })
Parsing approach (used in the script):
- Download the HTML.
- Find the first occurrence of
"uiType":"REALTIME_TREND_TOP".
- From that position, locate:
"updatedAt":"..."
"keywords":[ ... ]
- Extract the
keywords array substring by bracket matching, then JSON.parse it.
This avoids having to parse the full page-level JSON assignment.
How to fetch each keywordโs Daum search page & extract 1 title
For each keyword, request:
https://search.daum.net/search?w=tot&DA=RT1&rtmaxcoll=AIO,NNS,DNS&q=<encodeURIComponent(keyword)>
Extraction heuristic (used in the script):
- Prefer the first match of the News-like title pattern:
<strong class="tit-g ..."><a href="...">TITLE</a>
- Strip HTML tags (
<b>...</b> etc.) and decode basic HTML entities.
- If no title is found, fall back to
Daum ๊ฒ์ ๊ฒฐ๊ณผ.
Output format
Example (12 lines):
Daum ์ค์๊ฐ ํธ๋ ๋ TOP10
1. ํค์๋: โ๋ํ ์ ๋ชฉโ https://search.daum.net/search?...q=...
...
10. ํค์๋: โ๋ํ ์ ๋ชฉโ https://search.daum.net/search?...q=...
updatedAt: 2026-03-05T06:08:51.024+09:00
Script
- Entry point:
scripts/briefing.mjs
- Runs with Node.js built-ins only.
Run locally
node <path-to-this-skill>/scripts/briefing.mjs
Sanity check (should print 12 lines)
node <path-to-this-skill>/scripts/briefing.mjs | wc -l | tr -d ' '
OpenClaw cron job (08:00โ21:00 every hour, KST) + Telegram announce
OpenClaw cron jobs live in:
~/.openclaw/cron/jobs.json
In this OpenClaw setup, cron jobs typically run an agent turn. The agent can execute the Node script and then announce the stdout to Telegram.
Create a cron job with the CLI (recommended):
openclaw cron add \
--name "Daum ์ค์๊ฐ ํธ๋ ๋ ๋ธ๋ฆฌํ (๋งค์ ์ ๊ฐ KST)" \
--cron "0 8-21 * * *" \
--tz "Asia/Seoul" \
--agent main \
--announce --channel telegram --to "<YOUR_TELEGRAM_CHAT_ID>" \
--expect-final \
--message $'Run this command and announce its stdout as-is:\n\nnode <path-to-this-skill>/scripts/briefing.mjs'
Tip: replace <path-to-this-skill> with the actual skill directory path (e.g., ~/.openclaw/workspace/skills/daum-trends-briefing).