@clawhub-medz-44c4065a1d
Read public PANews website pages as Markdown. Use for homepage, article-page, and column-page reads.
--- name: panews-web-viewer description: Read public PANews website pages as Markdown. Use for homepage, article-page, and column-page reads. metadata: author: Seven Du version: "2026.03.25" --- This skill is for reading rendered PANews web pages as Markdown, including the homepage, article pages, and column pages. Use it when the user wants page content in a Markdown-friendly format with page metadata, rather than structured API fields or filtered search results. It is best suited for single-page retrieval from PANews URLs. The skill should preserve the rendered page structure and metadata, and it should not be used for broad crawling, creator workflows, or API-style data discovery. Read `www.panewslab.com` pages as Markdown via `Accept: text/markdown`. Responses include a YAML frontmatter block with page metadata (`title`, `description`, `image`). Runtime behavior: this skill performs direct HTTP GET requests to `https://www.panewslab.com` with `Accept: text/markdown` and returns the rendered Markdown response. It does not require local scripts, creator credentials, or broad site crawling. ## Common User Phrases - "Read this article as Markdown." - "Open this column page and give me the rendered content." ## When to Use - The user provides or implies a PANews web URL - The task is to read the rendered article page, homepage, or column page as Markdown - The caller wants the page content, not the underlying JSON API shape ## Do Not Use When - The task is structured search, rankings, or filtered API retrieval - The task requires creator authentication or write access - The user asks for JSON fields rather than page Markdown ## Supported Languages | Locale | Prefix | | ------------------- | ---------- | | Simplified Chinese | `/zh` | | Traditional Chinese | `/zh-hant` | | English | `/en` | | Japanese | `/ja` | | Korean | `/ko` | ## Standard Workflow ```text PANews Web Progress: - [ ] Step 1: Confirm this is a website-page task, not an API task - [ ] Step 2: Choose the locale prefix - [ ] Step 3: Fetch with Accept: text/markdown - [ ] Step 4: Preserve frontmatter metadata in the response ``` ## Standard Request Template ```text 1. Start from https://www.panewslab.com 2. Build a page URL using one of the supported locale prefixes: /zh, /zh-hant, /en, /ja, /ko 3. If the caller provides a PANews path without a locale prefix, prepend the prefix from `--lang`, or default to `/zh` 4. Send an HTTP GET request with: Accept: text/markdown 5. Return the Markdown body as-is, including YAML frontmatter metadata 6. If the response is 404, report the page as unavailable ``` ## Rules - Use a direct HTTP request with `Accept: text/markdown` - Always include the locale prefix in the URL - Route to `panews` if the user asks for structured search or filterable API data ## Examples ```text https://www.panewslab.com/en https://www.panewslab.com/en/ARTICLE_ID https://www.panewslab.com/zh-hant/columns/COLUMN_ID ``` ## Failure Handling - If the page returns `404`, report it as unavailable rather than trying to synthesize content from API endpoints - If the caller gives a path without a locale prefix, add the prefix from `--lang` or default to `zh` FILE:agents/openai.yaml interface: display_name: "PANews Web Viewer" short_description: "Read PANews homepage, article, and column pages as Markdown with page metadata" default_prompt: "Use $panews-web-viewer to read PANews homepage, article, and column pages as Markdown with page metadata through direct web requests, not structured API search results." policy: allow_implicit_invocation: true
Create and manage articles on the PANews platform. All operations require a valid user session. Triggers: write and publish new articles, view / edit / delet...
---
name: panews-creator
description: >
Create and manage articles on the PANews platform. All operations require a valid user session.
Triggers: write and publish new articles, view / edit / delete drafts, revise and resubmit rejected articles,
upload images, search tags, apply for a column, polish or review article content.
metadata:
author: Seven Du
version: "2026.03.25"
---
This is the PANews creator skill for contributors who need to write, edit, manage, and publish articles on the platform. Use it when the task involves authenticated creator workflows such as validating a session, managing drafts or submissions, uploading images, searching tags, applying for a column, or preparing an article for review.
It is best suited for real PANews publishing operations rather than generic writing help alone. The skill should guide the user through the platform workflow clearly and safely, especially when session validation, submission state, or destructive actions are involved.
**Session verification is required before any operation.**
If no session is available, guide the user to get `PA-User-Session` from browser DevTools -> Application -> Cookies.
On a 401 response, stop immediately and tell the user the session has expired and needs to be refreshed.
## Common User Phrases
- "Help me publish this article."
- "Upload this cover image and find tags for my draft."
## Capabilities
| Scenario | Trigger intent | Reference |
|----------|---------------|-----------|
| Publish a new article | I want to publish an article / help me submit | [workflow-publish](./references/workflow-publish.md) |
| Manage my articles | Status of my submissions / any rejections | [workflow-manage](./references/workflow-manage.md) |
| Revise and resubmit | Edit a draft / resubmit a rejected article | [workflow-revise](./references/workflow-revise.md) |
| Apply for a column | I don't have a column yet / want to start a column | [workflow-apply-column](./references/workflow-apply-column.md) |
| Upload an image | Upload this cover image / turn this local image into a usable asset URL | Use `upload-image` |
| Search tags | Find suitable tags / search PANews tags for this topic | Use `search-tags` |
| Polish an article | Help me improve this article / review it | [workflow-polish](./references/workflow-polish.md) |
## Language
`--lang` accepts standard locale strings (`zh`, `en`, `zh-TW`, `en-US`, `ja-JP`, etc.), automatically mapped to the nearest supported language; most read-style commands auto-detect the system locale if omitted.
For `create-article`, `--lang` indicates the **article content language** and is required. Pass the language the article is actually written in; this command does not auto-detect the locale.
## General principles
- On 401, stop immediately and prompt the user to refresh the session
- Require explicit confirmation before any delete operation
- Do not modify the user's article content or opinions unprompted
## Execution guards
- Use more freedom for low-risk tasks such as polishing copy, suggesting improvements, or helping the user prepare content before submission.
- Use strict procedure for high-risk creator actions:
- Before any create, update, delete, submit, or column-application action, validate that a usable `PA-User-Session` is available.
- On any 401 response, stop immediately and ask the user to refresh the session before continuing.
- Before deletion, obtain explicit user confirmation for the exact target article.
- When updating an article, change only the fields the user asked to modify.
- Before moving an article to `PENDING`, make sure the user intends to submit it for review now.
- Treat image upload and tag search as support steps for PANews publishing workflows, not as unrelated generic utilities.
## Scripts
- `scripts/cli.mjs`: unified entrypoint for PANews creator commands
```bash
node {Skills Directory}/panews-creator/scripts/cli.mjs <command> [options]
```
When unsure about parameters, check with `--help` first:
```bash
node {Skills Directory}/panews-creator/scripts/cli.mjs --help
node {Skills Directory}/panews-creator/scripts/cli.mjs <command> --help
```
Available commands:
```text
validate-session Validate session and list owned columns
list-articles List articles in a column
create-article Create an article in a column
update-article Update a DRAFT or REJECTED article
delete-article Delete a DRAFT or REJECTED article
upload-image Upload a local image and return CDN URL
search-tags Search tags by keyword
apply-column Submit a column application
```
FILE:agents/openai.yaml
interface:
display_name: "PANews Creator"
short_description: "Write, manage, and publish PANews articles with authenticated creator tools"
default_prompt: "Use $panews-creator to write, manage, and publish PANews articles with authenticated creator tools, including session validation, drafts, submissions, image uploads, tag search, column applications, and article creation or updates."
policy:
allow_implicit_invocation: true
FILE:references/workflow-revise.md
# Revise and Resubmit
**Trigger**: The user wants to revise a draft or rejected article and submit it again.
## Steps
### 1. Identify the target article
If the user has not specified the article:
```bash
node cli.mjs list-articles --column-id <id> --status DRAFT --take 20 --session <token>
node cli.mjs list-articles --column-id <id> --status REJECTED --take 20 --session <token>
```
List the results and let the user choose.
### 2. Update the article
Update the relevant fields based on the user's requested changes:
```bash
node cli.mjs update-article \
--column-id <id> \
--article-id <id> \
--title "<new title>" \
--desc "<new summary>" \
--content-file <new-content.html> \
--session <token>
```
Pass only the fields that need to change.
### 3. Submit for review
Ask whether the user wants to submit it for review immediately:
```bash
node cli.mjs update-article \
--column-id <id> \
--article-id <id> \
--status PENDING \
--session <token>
```
FILE:references/workflow-apply-column.md
# Apply for a Column
**Trigger**: The user does not have a column yet, or explicitly asks to apply for a new one.
## Steps
### 1. Tell the user what they need to prepare
- Column name (short and clearly positioned)
- Column description (100 to 200 words describing the content focus and publishing plan)
- Column cover image (upload it first if it is a local file)
- Related links (personal homepage, social media, optional but recommended)
### 2. Upload the cover image if it is local
```bash
export PA_USER_SESSION="<token>"
node cli.mjs upload-image <file-path>
```
Security note: do not pass session tokens on the command line, because they may be exposed in shell history or process lists. Prefer environment variables or a secure credential store.
### 3. Submit the application
```bash
node cli.mjs apply-column \
--name "<column name>" \
--desc "<column description>" \
--picture <cover-url> \
--links "https://twitter.com/xxx,https://..."
```
Use `export`, `direnv`, or a secret manager to provide `PA_USER_SESSION` without hardcoding it into commands.
### 4. Report the result
Explain that the application has been submitted. Review usually takes a few business days, and publishing can begin after approval.
FILE:references/workflow-publish.md
# Publish a New Article
**Trigger**: User wants to publish an article to PANews.
## Steps
### 0. (Optional) Pre-publish research
If the panews skill is installed, search for similar articles before publishing to help the user find a differentiated angle:
```bash
node {panews}/scripts/cli.mjs search-articles "<article topic>" --take 3
```
Skip this step if panews is not installed.
### 1. Verify identity and confirm column
```bash
node cli.mjs validate-session --session <token>
```
From the result, pick the column:
- Only 1 column → use it by default, inform the user
- Multiple columns → list them for the user to choose
- No column → explain that one must be applied for first; see [workflow-apply-column](./workflow-apply-column.md)
### 2. Collect article info
Confirm the following fields with the user (skip if already provided):
| Field | Required | Notes |
|-------|----------|-------|
| Title | Yes | Recommended under 20 characters |
| Summary | Yes | 50–100 characters |
| Body | Yes | Path to a Markdown file |
| Cover image | Recommended | Upload local images first, or provide a CDN URL |
| Tags | No | Up to 5 tag IDs |
| Language | No | Default: zh |
Do not generate body content on behalf of the user. If they only have a topic, ask whether the body is already written.
### 3. Handle cover image (if local file)
```bash
node cli.mjs upload-image <file-path> --session <token>
```
Use the returned URL as the `--cover` value.
### 4. Handle tags (optional)
```bash
node cli.mjs search-tags "<keyword>"
```
Show results for the user to select tag IDs. Unlike write operations, this tag lookup does not require a session token.
### 5. Create article (save as draft first)
```bash
node cli.mjs create-article \
--column-id <id> \
--title "<title>" \
--desc "<summary>" \
--content-file <file.md> \
--lang <lang> \
--cover <url> \
--tags <id1,id2> \
--status DRAFT \
--session <token>
```
### 6. Confirm and submit
Show a summary (title, summary, tags, column), then ask:
- Submit for review now → call `create-article --status PENDING`, or `update-article --status PENDING`
- Save as draft → done, inform the user of the article ID
FILE:references/workflow-polish.md
# Polish an Article
**Trigger**: User wants to improve article quality. Common phrases: "Check this for me", "Polish this", "Are there any issues with this article".
This workflow calls no CLI commands — it is purely Claude's text processing capability.
## Steps
### 1. Get the article content
The user can provide Markdown, HTML, or plain text.
### 2. Review by dimension (flag only issues)
- **Accuracy**: any obvious factual errors or vague claims
- **Structure**: is the logic clear, do paragraphs flow
- **Title vs. content**: does the title accurately reflect the content
- **Summary**: does it help readers quickly decide if the article is worth reading
- **Language**: any awkward sentences, ambiguity, or overly stiff expressions
### 3. Output format
- Start with an overall assessment (1–2 sentences)
- List specific suggestions by dimension, noting location (which paragraph or sentence)
- Where rewriting is needed, provide a before/after comparison
### 4. Ask about next steps
Would you like me to rewrite it for you, or will you adjust it yourself? If ready to publish, transition naturally to [workflow-publish](./workflow-publish.md).
## Principles
- Respect the author's perspective and style — only fix expression issues, not positions
- Do not proactively suggest cutting core content
- Do not invent new arguments or data on behalf of the user
FILE:references/workflow-manage.md
# Manage My Articles
**Trigger**: User wants to check submission status or see their articles.
## Steps
### 1. Fetch all articles
```bash
node cli.mjs list-articles --column-id <id> --take 50 --session <token>
```
### 2. Group output by status
| Status | Meaning | Available actions |
|--------|---------|------------------|
| DRAFT | Draft, not yet submitted | Edit, submit for review, delete |
| PENDING | Under review | View only |
| PUBLISHED | Published | View only |
| REJECTED | Rejected | Edit and resubmit |
### 3. Proactively prompt
If there are REJECTED articles:
"You have X rejected article(s). Would you like me to help revise and resubmit?" → see [workflow-revise](./workflow-revise.md)
Entry point for reading PANews cryptocurrency / blockchain news and market narratives. Triggers: today's headlines, breaking news, trending rankings, article...
---
name: panews
description: >
Entry point for reading PANews cryptocurrency / blockchain news and market narratives.
Triggers: today's headlines, breaking news, trending rankings, article search,
reading specific articles, browsing columns / series / community topics,
industry events & conferences, event calendar, platform hot searches and editorial picks.
metadata:
author: Seven Du
version: "2026.03.25"
---
This is the core PANews reading skill for users who want to follow cryptocurrency and blockchain news through PANews coverage. Use it for market-moving headlines, project and token updates, rankings, deep dives, topics, columns, series, events, and editorial picks.
It is best suited for structured news discovery and explanation. The skill should help users understand what is happening, why it matters, and where to keep reading, while staying accessible to readers who may not be technical.
## Common User Phrases
- "What are the biggest crypto stories today?"
- "Can you find coverage about Bitcoin, Solana, or this project?"
## Capabilities
| Scenario | Trigger intent | Reference |
|----------|---------------|-----------|
| Today's briefing | What's the big news today? What's happening in crypto? | [workflow-today-briefing](./references/workflow-today-briefing.md) |
| Search | Search for XX / find reports about XX | [workflow-search](./references/workflow-search.md) |
| Deep dive | What's going on with Bitcoin / a project / an event lately? | [workflow-topic-research](./references/workflow-topic-research.md) |
| Read an article | User provides an article URL or ID | [workflow-read-article](./references/workflow-read-article.md) |
| Discover trending | What is everyone talking about right now? | [workflow-trending](./references/workflow-trending.md) |
| Latest news | Breaking news / what just happened | [workflow-latest-news](./references/workflow-latest-news.md) |
| Browse columns | What columns are there / this author's column | [workflow-columns](./references/workflow-columns.md) |
| Browse series | Any series coverage on XX | [workflow-series](./references/workflow-series.md) |
| Browse topics | What do people think about XX / what's the community discussing | [workflow-topics](./references/workflow-topics.md) |
| Events | Any recent summits / hackathons / activities | [workflow-events](./references/workflow-events.md) |
| Event calendar | Important events this month / project schedule | [workflow-calendar](./references/workflow-calendar.md) |
| Platform picks | What is the editor recommending / what are the hot searches | [workflow-hooks](./references/workflow-hooks.md) |
## General principles
- Do not predict price movements or give investment advice
- Content strictly from PANews - do not add information PANews has not reported
- For publishing content, use the panews-creator skill
## Execution guidance
- Use judgment for open-ended discovery tasks such as briefings, topic research, and trend summaries. Multiple valid paths are acceptable if the result stays grounded in PANews coverage.
- Be more specific for fragile tasks:
- If the user provides an article URL or ID, resolve the article directly instead of broadening into generic search.
- If the task is rankings, events, calendar items, or platform picks, use the most direct matching workflow instead of combining unrelated workflows first.
- If PANews coverage is weak or missing, say so directly rather than filling gaps with outside knowledge.
## Language
All CLI commands support `--lang`, accepting standard locale strings (e.g. `zh`, `en`, `zh-TW`, `en-US`, `ja-JP`), automatically mapped to the nearest supported language. If omitted, the system locale is auto-detected. Match `--lang` to the user's question language.
## Scripts
- `scripts/cli.mjs`: unified entrypoint for PANews reader commands
```bash
node {Skills Directory}/panews/scripts/cli.mjs <command> [options]
```
When unsure about parameters, check with `--help` first:
```bash
node {Skills Directory}/panews/scripts/cli.mjs --help
node {Skills Directory}/panews/scripts/cli.mjs <command> --help
```
Available commands:
```text
list-articles List latest articles by type
get-daily-must-reads Get daily must-read articles
get-rankings Get article hot rankings (daily: 24h hot | weekly: 7-day search trending)
search-articles Search articles by keyword
get-article Get full article content by ID
list-columns List or search PANews columns
get-column Get column details and recent articles
list-series List or search PANews series
get-series Get series details and articles
list-topics List or search PANews topics
get-topic Get topic details and latest comments
list-events List PANews events / activities
list-calendar-events List PANews calendar events
get-hooks Fetch PANews hooks / injection-point data by category
```
FILE:agents/openai.yaml
interface:
display_name: "PANews"
short_description: "Structured PANews cryptocurrency and blockchain news discovery across articles, rankings, topics, columns, series, events, and calendars"
default_prompt: "Use $panews for structured PANews cryptocurrency and blockchain news discovery, including briefings, article search, rankings, topics, columns, series, events, calendars, and editorial picks."
policy:
allow_implicit_invocation: true
FILE:references/workflow-topic-research.md
# Deep Topic Research
**Trigger**: The user mentions a specific topic, project name, token, or event.
Common prompts include "What's new with Bitcoin?", "What progress has Ethereum made lately?", or "Help me understand project XX."
## Steps
### 1. Search for related articles first by relevance
```bash
node cli.mjs search-articles "<user keyword>" --mode hit --take 5 --lang <lang>
```
### 2. Evaluate relevance
Review the returned titles and summaries:
- Highly relevant (the title or summary is directly about the topic) -> continue
- Empty or weakly relevant results -> tell the user directly and stop
### 3. Fetch the full text of the 2 to 3 most relevant articles
```bash
node cli.mjs get-article <id> --lang <lang>
```
### 4. Synthesize the output
- **Background**: what this topic is, in one short paragraph
- **Latest developments**: what has happened recently
- **Different viewpoints**: list disagreements or multiple perspectives when relevant
- **Further reading**: article titles plus links, up to 3 items
Link format: `https://www.panewslab.com/<lang>/<id>`
## Notes
- Do not invent information that PANews has not reported.
- If the user asks for price predictions, say that you do not make those judgments, but you can provide relevant news background.
FILE:references/workflow-latest-news.md
# Latest News
**Trigger**: User wants to quickly scan the latest updates, for example:
- "Latest news", "What's in the news recently", "What just happened"
- "Show me today's news" (no specific topic)
Difference from "Today's briefing":
- Today's briefing → synthesized analysis with narrative, helps user understand context
- Latest news → direct list, quick scan, user decides what they're interested in
## Steps
Pick type based on user intent:
- "news" / "today's news" / unspecified → `node cli.mjs list-articles --type NEWS`
- "in-depth" / "analysis" → `node cli.mjs list-articles --type NORMAL`
```bash
node cli.mjs list-articles --type NEWS --take 10 --lang <lang>
```
## Output
Present as a concise list, one item per line:
```
• [time] Title
• [time] Title
...
```
No summaries, no analysis. If the user is interested in an item they will follow up naturally —
use [workflow-read-article](./workflow-read-article.md) or [workflow-topic-research](./workflow-topic-research.md) to go deeper.
FILE:references/workflow-series.md
# Browse Series
**Trigger**: User wants to explore a long-running topic or a series of reports.
Common phrases: "Does PANews have a series on Layer2", "What series are there", "What is this series about".
## Steps
### 1. Search or list series
```bash
node cli.mjs list-series --search "<keyword>" --take 10 --lang <lang>
```
Omitting `--search` lists all series ordered by latest post time.
### 2. Get a series' articles
```bash
node cli.mjs get-series <seriesId> --take 10 --lang <lang>
```
Returns the series intro and article list (newest first).
### 3. Deep dive into an article
Get the article ID from the previous step and go to [workflow-read-article](./workflow-read-article.md).
## Notes
- A series is an editor-curated set of reports with a clear thematic thread
- Difference from "deep dive": deep dive is keyword search; a series is pre-organized editorial content
FILE:references/workflow-events.md
# Events
**Trigger**: User wants to find crypto industry events — summits, hackathons, roadshows, online or offline.
Common phrases: "Any upcoming events", "Any summits in Singapore", "Are there any hackathons", "Any free events".
## Steps
### 1. List or search events
```bash
node cli.mjs list-events [--search "<keyword>"] [--category <type>] [--country <code>] [--online true|false] [--paid false] [--take 15] --lang <lang>
```
**Event categories (`--category`)**:
| Value | Meaning |
|-------|---------|
| SUMMIT | Summit |
| TECH_SEMINAR | Tech seminar |
| LECTURE_SALON | Lecture / salon |
| COCKTAIL_SOCIAL | Social / networking |
| ROADSHOW | Roadshow |
| HACKATHON | Hackathon |
| EXHIBITION | Exhibition |
| COMPETITION | Competition |
| OTHER | Other |
**Country / region codes (`--country`)**: AE CA CH CN DE FR GB JP KR SG TH TR US VN OTHER
### 2. View event details
The event list already contains full information (location, time, online/offline, paid/free, price, link, topic tags).
For more information, direct the user to the `url` field.
## Output requirements
- Include time, location, and type for each event
- Indicate if it's free (`isPaid=false`) or online (`isOnline=true`)
- Show price information if available
- Do not evaluate the quality or value of events
FILE:references/workflow-trending.md
# Discover Trending
**Trigger**: User wants to know what people are focusing on right now, no specific topic.
Common phrases: "What is everyone talking about", "What has the highest buzz lately".
## Steps
### 1. Get 7-day search trending articles
```bash
node cli.mjs get-rankings --type weekly --take 5 --lang <lang>
```
### 2. Get 24-hour hot rankings
```bash
node cli.mjs get-rankings --type daily --take 5 --lang <lang>
```
### 3. Output
- **Most searched this week**: top 3 articles, title + one sentence on why they're getting attention
- **Most read today**: 3 articles, title + one-sentence summary
To deep dive into a trending topic, use [workflow-topic-research](./workflow-topic-research.md).
FILE:references/workflow-hooks.md
# Platform Hooks
**Purpose**: Fetch PANews editorial configurations — hot search keywords, recommended columns/series, homepage tabs, carousels, quick menus, etc.
These represent the platform's curated picks for the current period, reflecting the editorial team's recommended focus areas.
## Available categories
| `category` value | Content |
|-----------------|---------|
| `search-keywords` | Hot search keywords (`payload.hot=true` means trending) |
| `ai-search-issues` | AI-recommended exploration questions |
| `carousel` | Homepage carousel (may include linked article ID) |
| `column-recommend` | Recommended column (payload is columnId) |
| `series-recommend` | Recommended series (payload is seriesId) |
| `website-recommended-topic` | Recommended topic (payload is topicId) |
| `website-series-card` | Series card (payload is seriesId) |
| `homepage-tab` | Homepage tab navigation |
| `website-quick-menu` | Website quick menu |
| `app-quick-menu` | App quick menu |
| `columns-group-recommend` | Column group recommendation |
## Fetching hooks
```bash
node cli.mjs get-hooks --category <category> [--take 20] [--lang <lang>]
```
Multiple categories can be comma-separated:
```bash
node cli.mjs get-hooks --category "search-keywords,ai-search-issues" --lang <lang>
```
## Typical usage
### Get hot search keywords
```bash
node cli.mjs get-hooks --category search-keywords --lang <lang>
```
Returns `text` (keyword) and `payload.hot` (whether it's trending).
Use as search suggestions or to guide users toward popular topics.
### Get recommended columns
```bash
node cli.mjs get-hooks --category column-recommend --lang <lang>
```
Payload is a `columnId` — call `get-column <columnId>` to fetch column details.
### Get AI-recommended questions
```bash
node cli.mjs get-hooks --category ai-search-issues --lang <lang>
```
Returns editorially preset exploratory questions to guide users into deeper topics.
## Notes
- All hooks are time-bounded editorial configs; `onlyValid=true` already filters out expired entries
- When payload contains an ID (columnId, seriesId, topicId), call the corresponding command to get details
FILE:references/workflow-today-briefing.md
# Today's Briefing
**Trigger**: The user wants to know what happened today or recently without naming a specific topic.
Common prompts include "What happened today?", "What's going on in crypto lately?", or "Summarize today's top news."
Difference from "browse latest news":
- Today's briefing -> synthesized analysis with narrative and context
- Browse latest news -> direct listing for fast scanning
## Steps
### 1. Fetch today's must-reads
```bash
node cli.mjs get-daily-must-reads --lang <lang>
```
### 2. Fetch the 24-hour trending articles
```bash
node cli.mjs get-rankings --type daily --take 10 --lang <lang>
```
### 3. Consolidate the results
Combine both sources, remove duplicates, and decide which 3 to 5 items matter most.
### 4. Write the briefing
Use this structure:
- First line: summarize today's market mood in one sentence (calm / active / volatile)
- 3 to 5 news items: title plus one sentence on why it matters
- Final line: "Source: PANews. Updated at [time]."
## Output Requirements
- Keep it within 400 words.
- When a technical term first appears, add a short explanation in parentheses.
- Do not show raw JSON or article IDs.
FILE:references/workflow-search.md
# Search
**Trigger**: User wants to search for a keyword, project, event, or topic.
Common phrases: "Search for Bitcoin ETF articles", "Any reports on XX", "Find news about XX".
Difference from other scenarios:
- Search → user actively inputs keywords, finds matching content
- Deep dive ([workflow-topic-research](./workflow-topic-research.md)) → user wants a comprehensive understanding of a topic from multiple sources
- Today's briefing → focused on current day's latest content
## Steps
### 1. (Optional) Get hot search keywords for inspiration
When the user has no clear keyword or wants to discover trending topics:
```bash
node cli.mjs get-hooks --category search-keywords --lang <lang>
```
Present the hot keywords for the user to choose from.
### 2. Execute the search
```bash
node cli.mjs search-articles "<keyword>" [--mode SMART|EXACT] [--take 10] --lang <lang>
```
**Search modes**:
- `SMART` (default) — semantic search, good for natural language descriptions
- `EXACT` — exact match, good for proper nouns and project names
### 3. Deep dive into an article
Get the article ID from the search results and go to [workflow-read-article](./workflow-read-article.md).
## Output requirements
- Include title, summary, and publish time with each result
- If results are sparse or irrelevant, suggest trying different keywords or switching modes
- Do not add information beyond the search results
FILE:references/workflow-topics.md
# Browse Topics
**Trigger**: User wants to explore or join a discussion topic, see what people think.
Common phrases: "What topics are being discussed on PANews", "What do people think about the Bitcoin halving".
Difference between topic and series:
- Topic → community discussion, comments, votes, focused on opinion exchange
- Series → editor-curated set of articles, focused on in-depth reporting
## Steps
### 1. Search or list topics
```bash
node cli.mjs list-topics --search "<keyword>" --take 10 --lang <lang>
```
### 2. Get a topic's details and comments
```bash
node cli.mjs get-topic <topicId> --lang <lang>
```
Returns the topic description and the latest 10 community comments.
## Output requirements
- Briefly introduce the topic background
- Summarize the main viewpoints from comments (do not dump all raw text — synthesize)
- If there are clear opposing camps, highlight the core arguments on each side
FILE:references/workflow-columns.md
# Browse Columns
**Trigger**: User needs to explore a column or browse articles from a column.
Common phrases: "What columns does PANews have", "Any columns about DeFi", "What has this column written about".
## Steps
### 1. Search or list columns
```bash
node cli.mjs list-columns --search "<keyword>" --take 10 --lang <lang>
```
Omitting `--search` lists all columns ordered by latest post time.
### 2. Get a column's details and articles
```bash
node cli.mjs get-column <columnId> --take 10 --lang <lang>
```
Returns column info (author, post count, follower count) and a list of recent articles.
### 3. Read a specific article
Get the article ID from the previous step, then go to [workflow-read-article](./workflow-read-article.md).
## Output requirements
- Briefly introduce the column's focus and author background
- When listing recent articles, add a short note to help the user decide if they're interested
FILE:references/workflow-calendar.md
# Event Calendar
**Trigger**: User wants to check upcoming important events in the crypto space — project milestones, policy dates, macroeconomic schedules, etc.
Common phrases: "Any important events coming up", "What's happening this month", "Any scheduled dates for XX".
Difference between event calendar and events:
- Event calendar → editor-compiled event nodes: project launches, policy milestones, macro data releases, etc.
- Events → industry event registrations: summits, hackathons, roadshows
## Steps
### 1. List calendar events
```bash
node cli.mjs list-calendar-events [--search "<keyword>"] [--start-from <YYYY-MM-DD>] [--order asc|desc] [--take 20] --lang <lang>
```
Default order is ascending by `startAt` (nearest events first), ideal for browsing upcoming items.
For past events, pass `--order desc`.
### 2. Filter a specific date range
```bash
node cli.mjs list-calendar-events --start-from 2025-01-01 --order asc --take 20 --lang <lang>
```
## Output requirements
- Order by date for a clear timeline view
- Include date, title, and category for each event
- If an article or activity is linked, include its title
- Include external links where available
FILE:references/workflow-read-article.md
# Understand an Article
**Trigger**: The user provides a PANews article link or article ID.
## Identify the Article ID
PANews article URLs typically follow this format: `https://www.panewslab.com/{lang}/{id}`
Examples:
- `https://www.panewslab.com/zh/abc123def`
- `https://panewslab.com/en/abc123def`
- `https://www.panewslab.com/abc123def` (without a language prefix)
Extraction rule: use the last path segment of the URL as the article ID. Ignore the language prefix (`zh`, `en`, `ja`, etc.).
If the user provides a raw ID instead of a URL, use it directly.
## Steps
### 1. Fetch the full article
```bash
node cli.mjs get-article <articleId> --lang <lang>
```
### 2. Output structure
- **Core takeaway**: one sentence
- **Main points**: 3 to 5 bullets
- **Key data**: if the article includes numbers or data, explain what they mean instead of just repeating them
- **Why it matters**: what new information or perspective the article provides