open-index/open-npm huggingface dataset:
npm package: @liushoukai/rust-mcp-client
Description: MCP server for IP information lookup - Rust implementation
Author: liushoukai
Latest version: 0.1.7

# 🦀 Rust MCP Server - Tools

A Model Context Protocol (MCP) server implemented in Rust using the official rmcp SDK, providing a collection of utility tools.

## 🧰 Available Tools

### 🛠️ get_ip_info

Get the current machine's public IP information.

- ✅ IP address
- ✅ Geolocation (city, region, country)
- ✅ ISP information
- ✅ Timezone
- ✅ Latitude and longitude coordinates

### 🛠️ get_openrouter_models

Get the list of all models supported by the OpenRouter platform, returned in compact format: `model_id | name | date`.

### 🛠️ get_openrouter_model_detail

Get detailed information for a specific model by ID.

| Parameter | Type   | Description                          |
|-----------|--------|--------------------------------------|
| `id`      | string | Model ID, e.g. `openai/gpt-4o`      |

Returns name, description, context length, pricing, and the date the model was added to OpenRouter.

## 🚀 Quick Start

### ⚙️ Configure MCP Client

#### Claude Desktop Configuration

Edit the configuration file:
- ✅ macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- ✅ Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- ✅ Linux: `~/.config/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "tools": {
      "command": "npx",
      "args": ["-y", "@liushoukai/rust-mcp-client"]
    }
  }
}
```

### 🔄 Restart Claude Desktop

After configuration, completely quit and restart Claude Desktop.

## 🔍 Enable Verbose Logging

Add an `env` field to the configuration to view detailed runtime logs:

```json
{
  "mcpServers": {
    "tools": {
      "command": "npx",
      "args": ["-y", "@liushoukai/rust-mcp-client"],
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}
```
npm package: @liushuwang/element
Description: Vue3 components library
Author: wantliu
Latest version: 1.0.3

# v-element

This template should help get you started developing with Vue 3 in Vite.

## Recommended IDE Setup

[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).

## Type Support for `.vue` Imports in TS

TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.

If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:

1. Disable the built-in TypeScript Extension
    1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette
    2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.

## Customize configuration

See [Vite Configuration Reference](https://vitejs.dev/config/).

## Project Setup

```sh
npm install
```

### Compile and Hot-Reload for Development

```sh
npm run dev
```

### Type-Check, Compile and Minify for Production

```sh
npm run build
```

### Lint with [ESLint](https://eslint.org/)

```sh
npm run lint
```
npm package: @liustack/coverpress
Description: CLI tool to generate platform cover images from HTML presets
Author: Leon Liu
Latest version: 0.2.0

# CoverPress

面向 AI Agent 的封面图生成 CLI，可将本地 HTML 按预设尺寸输出为高质量 PNG 图片。

## 特性

- 仅预设模式生成封面（不支持自定义尺寸）
- 仅支持本地 HTML（不支持远程 URL）
- 内置 8 种平台封面预设
- 基于 Playwright + Chromium 的稳定渲染
- 使用 `#container` 作为截图区域，输出更可控

## 安装

```bash
npm install -g @liustack/coverpress
npx playwright install chromium
```

或使用 `npx`：

```bash
npx @liustack/coverpress [options]
```

也可以作为 **Agent Skill** 安装 — 在任何支持 Agent Skill 的 AI 编程工具（Claude Code、Codex、OpenCode、Cursor、Antigravity 等）中输入：

```
帮我安装这个 skill：https://github.com/liustack/coverpress
```

或使用 `skills` CLI 直接安装：

```bash
npx skills add https://github.com/liustack/coverpress --skill coverpress
```

## 用法

```bash
# 生成 OG 卡片
coverpress -i card.html -o og.png --preset og

# 生成信息图
coverpress -i stats.html -o infographic.png --preset infographic
```

## 预设尺寸

| 预设 | 尺寸 | 示例 |
|------|------|------|
| `og` | 1200x630 | ![og](examples/og.png) |
| `twitter` | 1200x675 | ![twitter](examples/cinema-twitter-presets.png) |
| `banner` | 1600x900 | ![banner](examples/banner-vogue.png) |
| `youtube` | 1280x720 | ![youtube](examples/youtube.png) |
| `wechat` | 900x383 | ![wechat](examples/wechat.png) |
| `infographic` | 1080x1350 | ![infographic](examples/infographic-skill.png) |
| `poster` | 1200x1500 | ![poster](examples/poster.png) |
| `xiaohongshu` | 1080x1440 | ![xiaohongshu](examples/xiaohongshu.png) |

## 更多样例

**电影主题**

![cinema-twitter-pain](examples/cinema-twitter-pain.png)
![cinema-infographic-presets](examples/cinema-infographic-presets.png)
![cinema-infographic-skill](examples/cinema-infographic-skill.png)

**时尚主题**

![fashion-twitter-how](examples/fashion-twitter-how.png)
![fashion-twitter-pain](examples/fashion-twitter-pain.png)
![fashion-infographic-skill](examples/fashion-infographic-skill.png)
![fashion-xhs-main](examples/fashion-xhs-main.png)
![fashion-xhs-tutorial](examples/fashion-xhs-tutorial.png)

**其他风格**

![banner](examples/banner.png)
![twitter-pain](examples/twitter-pain.png)
![xhs-cover-film](examples/xhs-cover-film.png)
![xiaohongshu-cover](examples/xiaohongshu-cover.png)

## 参数

- `-i, --input <path>` 输入 HTML 路径
- `-o, --output <path>` 输出 PNG 路径
- `-p, --preset <name>` 预设名称（**必填**）
- `--scale <number>` 设备缩放（默认 `2`）
- `--wait-until <state>` `load | domcontentloaded | networkidle`
- `--timeout <ms>` 超时时间（毫秒）
- `--safe` 禁用外部网络请求和 JavaScript 执行

> PNG 渲染要求 HTML 中存在 `#container` 元素，否则会失败。

## AI Agent Skill

- [coverpress/SKILL.md](skills/coverpress/SKILL.md)

## License

MIT
npm package: @liustack/infopress
Description: CLI tool to generate infographics, visual reports, and dashboards from HTML
Author: Leon Liu
Latest version: 2.0.1

# InfoPress

从 HTML 生成单页可视化报告、仪表盘和信息图 — 基于 Playwright + Chromium。

## 特性

- HTML → PNG 截图管线
- 自定义视口尺寸（`--width`、`--height`）
- 高 DPI 输出，支持最高 4 倍缩放（`--scale`）
- 仅支持本地 HTML 文件输入（`.html`）
- 基于 Playwright + Chromium 的稳定渲染引擎

## 安装

```bash
npm install -g @liustack/infopress
npx playwright install chromium
```

或使用 `npx`：

```bash
npx @liustack/infopress [options]
```

## 用法

```bash
# 生成信息图（默认 1200×630 @2x）
infopress -i report.html -o report.png

# 自定义尺寸的长信息图
infopress -i report.html -o report.png -w 1080 -h 1920

# 高 DPI 海报
infopress -i poster.html -o poster.png -w 1200 -h 1500 --scale 3
```

## HTML 要求

HTML 中必须包含 `<div id="container">` — InfoPress 会根据该元素的边界框裁剪截图。

```html
<body>
  <div id="container">
    <!-- 你的内容 -->
  </div>
</body>
```

## 参数

- `-i, --input <path>` 输入 HTML 路径
- `-o, --output <path>` 输出 PNG 路径
- `-w, --width <pixels>` 视口宽度（默认: 1200）
- `-h, --height <pixels>` 视口高度（默认: 630）
- `--scale <number>` 设备缩放因子，1-4（默认: 2）
- `--wait-until <state>` `load | domcontentloaded | networkidle`
- `--timeout <ms>` 超时时间（毫秒）
- `--safe` 禁用外部网络请求和 JavaScript 执行

## AI Agent Skill

- [infopress/SKILL.md](skills/infopress/SKILL.md)

## License

MIT
npm package: @liustack/markpress
Description: CLI tool to render local Markdown files into PDF
Author: Leon Liu
Latest version: 1.1.0

# MarkPress

面向 AI Agent 的 PDF 渲染 CLI，可将本地 Markdown 文件输出为高质量 PDF。

## 特性

- 专注 PDF 输出（仅 `markpress`）
- 仅支持本地 Markdown 文件输入（`.md`）
- 内置 Markdown 模板：`default`、`github`、`magazine`
- 支持 Mermaid 代码块渲染
- 基于 Playwright + Chromium 的稳定打印引擎

## 安装

```bash
npm install -g @liustack/markpress
npx playwright install chromium
```

或使用 `npx`：

```bash
npx @liustack/markpress [options]
```

## 用法

```bash
# Markdown 转 PDF
markpress -i document.md -o output.pdf --template default
```

## 模板

- `default` - 简洁风格
- `github` - GitHub 风格
- `magazine` - 杂志排版

## 参数

- `-i, --input <path>` 输入 Markdown 路径
- `-o, --output <path>` 输出 PDF 路径
- `-t, --template <name>` Markdown 模板（默认 `default`）
- `--wait-until <state>` `load | domcontentloaded | networkidle`
- `--timeout <ms>` 超时时间（毫秒）
- `--safe` 禁用外部网络请求和 JavaScript 执行

## AI Agent Skill

- [markpress/SKILL.md](skills/markpress/SKILL.md)

## License

MIT
npm package: @liustack/mdpress
Description: CLI for AI agents to convert Markdown into WeChat MP-ready HTML with inline styles, base64 images, and tag sanitization
Author: Leon Liu
Latest version: 0.2.1

# mdpress

面向 AI Agent 的 Markdown 转换 CLI，可将 Markdown 输出为编辑器可粘贴的 HTML：

- **微信公众号模式**：内联样式、base64 图片、语法高亮、标签清洗
- **X/Twitter Articles 模式**：语义化子集 HTML、图片占位文本、仅保留 HTTPS 链接

## 特性

- 输出微信公众号编辑器兼容的 HTML
- 输出 X/Twitter Articles 编辑器兼容的 HTML
- 所有样式内联（无外部 CSS 或 `<style>` 标签）
- 本地图片经 sharp 压缩后嵌入为 base64（单张 ≤ 2MB）
- 默认极简主题语法高亮（内联色值）
- Mermaid 流程图渲染为 PNG（通过 Playwright，可选）
- 外部链接自动转为脚注，文末附 References
- 基于白名单的标签清洗（`div` → `section`，危险标签移除）
- 支持 GFM（表格、删除线、任务列表 ☑/☐）
- 默认极简风格样式

## 安装

```bash
npm install -g @liustack/mdpress
```

或使用 `npx`：

```bash
npx @liustack/mdpress [options]
```

也可以作为 **Agent Skill** 安装 — 在任何支持 Agent Skill 的 AI 编程工具（Claude Code、Codex、OpenCode、Cursor、Antigravity 等）中输入：

```
帮我安装这个 skill：https://github.com/liustack/mdpress
```

或使用 `skills` CLI 直接安装：

```bash
npx skills add https://github.com/liustack/mdpress --skill mdpress
```

## 用法

```bash
# 将 Markdown 转换为公众号可用的 HTML
mdpress -i article.md -o output.html

# 将 Markdown 转换为 X/Twitter Articles 可粘贴的 HTML
mdpress -i article.md -o output.html --target x
```

输出为 JSON 格式：

```json
{
  "input": "/path/to/article.md",
  "output": "/path/to/output.html",
  "size": 12345
}
```

## 处理流程

mdpress 使用 unified（remark + rehype）管线，依次执行 6 个转换：

1. **标签清洗** — 基于白名单过滤标签，`div` → `section`，checkbox → Unicode ☑/☐，移除 `id` 和事件处理器
2. **Mermaid 渲染** — mermaid 代码块通过 Playwright 渲染为 PNG（极简风格主题，可选，需安装 `mermaid` + `playwright`）
3. **图片 base64** — 本地图片经 sharp 压缩（PNG/GIF/SVG/JPEG），嵌入为 data URI（≤ 2MB）
4. **代码高亮** — 基于 highlight.js 的语法高亮，配合空白保护（`\n` → `<br>`，空格 → NBSP）
5. **链接脚注** — 外部链接替换为文本 + `<sup>[N]</sup>`，文末追加 References 区域；保留 `mp.weixin.qq.com` 链接
6. **样式内联** — 默认极简风格按标签注入样式，hljs 类名转为内联色值，移除所有 `className`

输出的 HTML 可直接粘贴到微信公众号编辑器中使用。

## 参数

- `-i, --input <path>` — 输入 Markdown 文件路径（必填）
- `-o, --output <path>` — 输出 HTML 文件路径（必填）
- `-t, --target <target>` — 渲染目标：`wechat`（默认）或 `x`（支持别名 `twitter`）
- `-c, --copy` — 将渲染后的 HTML 复制到系统剪贴板（富文本）

## X/Twitter Articles 模式

使用 `--target x`（或 `--target twitter`）生成适配 X Articles 编辑器的极简语义化 HTML。

- 保留：`h2`、`p`、`strong/b`、`em/i`、`s/del`、`a`、`blockquote`、`ul/ol/li`、`br`
- 移除不支持的结构标签与样式属性
- 所有 Markdown 图片转换为占位文本（`[Image: ...]`）
- 仅 `https://` 链接保留为真实 `<a href="...">`
- 协议相对链接（`//...`）会转换为 `https://...`
- 其他链接（`http`、`mailto`、`tel`、`file`、相对路径、锚点）降级为纯文本

## AI Agent Skill

- [mdpress/SKILL.md](skills/mdpress/SKILL.md)

## License

MIT
npm package: @liustack/modlens
Description: CLI tool to provide visual understanding for non-vision LLMs
Author: Leon Liu
Latest version: 0.1.0

# ModLens

面向 AI Agent 的视觉外挂 CLI，用于把图片来源（本地路径或远程 URL）转成结构化文本证据，补齐纯文本 LLM 的“看图”能力。

## 特性

- 面向“无视觉能力模型”场景（文本模型 + 外挂视觉）
- 支持本地图片路径与远程图片 URL
- 基于 Gemini CLI 非交互调用（`gemini -p`）
- 输出结构化 JSON（OCR + 布局 + 语义 + 视觉线索）
- 适合作为 Agent Skill 工具被 Claude Code / Codex 等调用

## 安装

```bash
npm install -g @liustack/modlens
```

需要先安装并认证 Gemini CLI：

```bash
npm install -g @google/gemini-cli
gemini
```

或直接用 `npx`：

```bash
npx @liustack/modlens [options]
```

## 用法

```bash
# 标准输出 JSON
modlens -i screenshot.png

# 落盘到文件
modlens -i screenshot.png -o lens.json

# 指定模型和额外解析要求
modlens -i screenshot.png -m gemini-2.5-flash --prompt "重点提取表格结构"
```

## 参数

- `-i, --input <path>` 输入图片路径（必填）
- `-o, --output <path>` 可选输出 JSON 路径
- `-m, --model <name>` Gemini 模型名
- `--prompt <text>` 额外解析约束
- `--timeout <ms>` 超时毫秒（默认 `180000`）
- `--gemini-bin <path>` Gemini 可执行路径（默认 `gemini`）

## Agent Skill

- [modlens/SKILL.md](skills/modlens/SKILL.md)

## 说明

- `modlens` 只做视觉解析。
- `modsearch` / `modfetch` 是其他独立项目，不在本仓库实现。

## 免责声明

本项目仅供**个人学习与实验**使用，请勿用于商业用途。

## License

MIT
npm package: @liustack/modsearch
Description: Provider-extensible CLI search bridge for LLM agent workflows
Author: Leon Liu
Latest version: 0.1.0

# ModSearch

面向 AI Agent 的搜索外挂 CLI，用于把查询词转换成结构化网页搜索证据，补齐 LLM 工作流中的搜索能力缺口。

## 特性

- 面向 Agent 场景，提供稳定可复用的外部搜索上下文
- Provider 可扩展架构（v1 默认提供 `gemini-cli`）
- 输出结构化 JSON（`summary`、`items`、`uncertainty`）
- 适合作为 Agent Skill 工具被 Claude Code / Codex 等调用
- 单一职责：只做搜索，不做视觉解析、不做页面抓取

## 安装

```bash
npm install -g @liustack/modsearch
```

或直接用 `npx`：

```bash
npx @liustack/modsearch [options]
```

如果使用默认 provider，请先安装并认证 Gemini CLI：

```bash
npm install -g @google/gemini-cli
gemini
```

## 用法

```bash
# 标准输出 JSON
modsearch -q "OpenAI latest news"

# 落盘到文件
modsearch -q "OpenAI latest news" -o search.json

# 指定 provider、模型和结果数量
modsearch -q "TypeScript 5.9 release notes" -p gemini-cli -m gemini-2.5-flash --max-results 6
```

## 参数

- `-q, --query <text>` 查询词（必填）
- `-o, --output <path>` 可选输出 JSON 路径
- `-p, --provider <name>` 搜索 provider 名称（默认 `gemini-cli`）
- `-m, --model <name>` 模型名（provider 相关）
- `--prompt <text>` 额外搜索约束
- `--max-results <n>` 最大结果条数（默认 `8`）
- `--timeout <ms>` 超时毫秒（默认 `180000`）
- `--provider-bin <path>` provider 可执行路径
- `--workdir <path>` provider 命令运行目录

## Provider 机制

ModSearch 从设计上支持 provider 扩展。  
`gemini-cli` 只是 v1 的默认底层搜索引擎，后续可以接入任何具备搜索能力的模型或服务商。

## Agent Skill

- [modsearch/SKILL.md](skills/modsearch/SKILL.md)

## 说明

- `modsearch` 只做搜索能力。
- `modlens` / `modfetch` 是其他独立项目，不在本仓库实现。

## 免责声明

本项目仅供个人学习与实验使用，请勿用于商业用途。

## License

MIT
npm package: @liustack/pagepress
Description: CLI tool to generate one-page visual reports, dashboards, and infographics from HTML
Author: Leon Liu
Latest version: 2.0.0

# PagePress

从 HTML 生成单页可视化报告、仪表盘和信息图 — 基于 Playwright + Chromium。

## 特性

- HTML → PNG 截图管线
- 自定义视口尺寸（`--width`、`--height`）
- 高 DPI 输出，支持最高 4 倍缩放（`--scale`）
- 仅支持本地 HTML 文件输入（`.html`）
- 基于 Playwright + Chromium 的稳定渲染引擎

## 安装

```bash
npm install -g @liustack/pagepress
npx playwright install chromium
```

或使用 `npx`：

```bash
npx @liustack/pagepress [options]
```

## 用法

```bash
# 生成信息图（默认 1200×630 @2x）
pagepress -i report.html -o report.png

# 自定义尺寸的长信息图
pagepress -i report.html -o report.png -w 1080 -h 1920

# 高 DPI 海报
pagepress -i poster.html -o poster.png -w 1200 -h 1500 --scale 3
```

## HTML 要求

HTML 中必须包含 `<div id="container">` — PagePress 会根据该元素的边界框裁剪截图。

```html
<body>
  <div id="container">
    <!-- 你的内容 -->
  </div>
</body>
```

## 参数

- `-i, --input <path>` 输入 HTML 路径
- `-o, --output <path>` 输出 PNG 路径
- `-w, --width <pixels>` 视口宽度（默认: 1200）
- `-h, --height <pixels>` 视口高度（默认: 630）
- `--scale <number>` 设备缩放因子，1-4（默认: 2）
- `--wait-until <state>` `load | domcontentloaded | networkidle`
- `--timeout <ms>` 超时时间（毫秒）
- `--safe` 禁用外部网络请求和 JavaScript 执行

## AI Agent Skill

- [pagepress/SKILL.md](skills/pagepress/SKILL.md)

## License

MIT
npm package: @liustack/webpress
Description: CLI tool to render local HTML files into PNG images
Author: Leon Liu
Latest version: 0.1.1

# WebPress

面向 AI Agent 的 HTML 渲染 CLI，可将本地 HTML 文件输出为高质量 PNG 图片。

## 特性

- 专注 PNG 输出（仅 `webpress`）
- 仅支持本地 HTML（不支持远程 URL）
- 内置 8 种图片预设
- 基于 Playwright + Chromium 的稳定渲染
- 使用 `#container` 作为截图区域，输出更可控

## 安装

```bash
npm install -g @liustack/webpress
npx playwright install chromium
```

或使用 `npx`：

```bash
npx @liustack/webpress [options]
```

## 用法

```bash
# 生成 OG 卡片
webpress -i card.html -o og.png --preset og

# 生成信息图
webpress -i stats.html -o infographic.png --preset infographic
```

## 预设尺寸

| 预设 | 尺寸 | 示例 |
|------|------|------|
| `og` | 1200x630 | ![og](examples/shot-og.png) |
| `twitter` | 1200x675 | ![twitter](examples/shot-twitter.png) |
| `banner` | 1600x900 | ![banner](examples/shot-banner.png) |
| `youtube` | 1280x720 | ![youtube](examples/shot-youtube.png) |
| `wechat` | 900x383 | ![wechat](examples/shot-wechat.png) |
| `infographic` | 1080x1350 | ![infographic](examples/shot-infographic.png) |
| `poster` | 1200x1500 | ![poster](examples/shot-poster.png) |
| `xiaohongshu` | 1080x1440 | ![xiaohongshu](examples/shot-xiaohongshu.png) |

## 参数

- `-i, --input <path>` 输入 HTML 路径
- `-o, --output <path>` 输出 PNG 路径
- `-p, --preset <name>` 预设名称（默认 `og`）
- `--width <number>` 自定义宽度
- `--height <number>` 自定义高度
- `--scale <number>` 设备缩放（默认 `2`）
- `--wait-until <state>` `load | domcontentloaded | networkidle`
- `--timeout <ms>` 超时时间（毫秒）
- `--safe` 禁用外部网络请求和 JavaScript 执行

> PNG 渲染要求 HTML 中存在 `#container` 元素，否则会失败。

## AI Agent Skill

- [webpress/SKILL.md](skills/webpress/SKILL.md)

## License

MIT
npm package: @liustack/wxpress
Description: CLI for AI agents to convert Markdown into WeChat MP-ready HTML with inline styles, base64 images, and tag sanitization
Author: Leon Liu
Latest version: 1.0.0

# wxpress

面向 AI Agent 的 Markdown 转换 CLI，可将 Markdown 输出为编辑器可粘贴的 HTML：

- **微信公众号模式**：内联样式、base64 图片、语法高亮、标签清洗
- **X/Twitter Articles 模式**：语义化子集 HTML、图片占位文本、仅保留 HTTPS 链接

## 特性

- 输出微信公众号编辑器兼容的 HTML
- 输出 X/Twitter Articles 编辑器兼容的 HTML
- 所有样式内联（无外部 CSS 或 `<style>` 标签）
- 本地图片经 sharp 压缩后嵌入为 base64（单张 ≤ 2MB）
- 默认极简主题语法高亮（内联色值）
- Mermaid 流程图渲染为 PNG（通过 Playwright，可选）
- 外部链接自动转为脚注，文末附 References
- 基于白名单的标签清洗（`div` → `section`，危险标签移除）
- 支持 GFM（表格、删除线、任务列表 ☑/☐）
- 默认极简风格样式

## 安装

```bash
npm install -g @liustack/wxpress
```

或使用 `npx`：

```bash
npx @liustack/wxpress [options]
```

也可以作为 **Agent Skill** 安装 — 在任何支持 Agent Skill 的 AI 编程工具（Claude Code、Codex、OpenCode、Cursor、Antigravity 等）中输入：

```
帮我安装这个 skill：liustack/wxpress
```

或使用 `skills` CLI 直接安装：

```bash
npx skills add liustack/wxpress --skill wxpress
```

## 用法

```bash
# 将 Markdown 转换为公众号可用的 HTML
wxpress -i article.md -o output.html

# 将 Markdown 转换为 X/Twitter Articles 可粘贴的 HTML
wxpress -i article.md -o output.html --target x
```

输出为 JSON 格式：

```json
{
  "input": "/path/to/article.md",
  "output": "/path/to/output.html",
  "size": 12345
}
```

## 处理流程

wxpress 使用 unified（remark + rehype）管线，依次执行 6 个转换：

1. **标签清洗** — 基于白名单过滤标签，`div` → `section`，checkbox → Unicode ☑/☐，移除 `id` 和事件处理器
2. **Mermaid 渲染** — mermaid 代码块通过 Playwright 渲染为 PNG（极简风格主题，可选，需安装 `mermaid` + `playwright`）
3. **图片 base64** — 本地图片经 sharp 压缩（PNG/GIF/SVG/JPEG），嵌入为 data URI（≤ 2MB）
4. **代码高亮** — 基于 highlight.js 的语法高亮，配合空白保护（`\n` → `<br>`，空格 → NBSP）
5. **链接脚注** — 外部链接替换为文本 + `<sup>[N]</sup>`，文末追加 References 区域；保留 `mp.weixin.qq.com` 链接
6. **样式内联** — 默认极简风格按标签注入样式，hljs 类名转为内联色值，移除所有 `className`

输出的 HTML 可直接粘贴到微信公众号编辑器中使用。

## 参数

- `-i, --input <path>` — 输入 Markdown 文件路径（必填）
- `-o, --output <path>` — 输出 HTML 文件路径（必填）
- `-t, --target <target>` — 渲染目标：`wechat`（默认）或 `x`（支持别名 `twitter`）
- `-c, --copy` — 将渲染后的 HTML 复制到系统剪贴板（富文本）

## X/Twitter Articles 模式

使用 `--target x`（或 `--target twitter`）生成适配 X Articles 编辑器的极简语义化 HTML。

- 保留：`h2`、`p`、`strong/b`、`em/i`、`s/del`、`a`、`blockquote`、`ul/ol/li`、`br`
- 移除不支持的结构标签与样式属性
- 所有 Markdown 图片转换为占位文本（`[Image: ...]`）
- 仅 `https://` 链接保留为真实 `<a href="...">`
- 协议相对链接（`//...`）会转换为 `https://...`
- 其他链接（`http`、`mailto`、`tel`、`file`、相对路径、锚点）降级为纯文本

## AI Agent Skill

- [wxpress/SKILL.md](skills/wxpress/SKILL.md)

## License

MIT