Skip to content
CodingDiary
返回
用 Slash Command 扩展 Claude Code:从网页剪藏开始

用 Slash Command 扩展 Claude Code:从网页剪藏开始

导读

每次都手动抓网页喂给 Claude Code 做上下文?复制粘贴 HTML 一堆 CSS/JS 噪音,根本没法用。Slash Command 让你把这类重复工作流封装成 /xxx 命令,敲一下就跑。本文以网页剪藏为例,用 Firecrawl API 一键把网页转成干净的 Markdown——对比 AgentScope Java 文档页,curl 拿到的是十几个 link 标签,Firecrawl 直接给你结构化正文。一个是噪音,一个是信号。从 Frontmatter 配置到 API 调用到文件命名,全流程拆解,附反爬超时、积分消耗等踩坑指南。

写在前面

Claude Code 自带的能力已经很强,但总有些重复性的工作让人想偷懒。比如我经常需要把技术文档、博客文章抓下来喂给它做上下文——每次都手动复制粘贴,或者让它现场写爬虫,效率太低。

Slash Command 就是用来解决这类问题的。你可以把常用的工作流封装成一个命令,在 Claude Code 里敲 /xxx 就能执行。本文用「网页剪藏」做例子,手把手带你写一个实用的 Slash Command。

什么是 Slash Command

简单说,Slash Command 是你给 Claude Code 写的「快捷指令」。

它本质上是一个 Markdown 文件,放在项目的 .claude/commands/ 目录下。文件里写清楚这个命令要干什么、能用哪些工具、怎么执行。之后在 Claude Code 里输入 /文件名,它就会按你写的逻辑来。

举个例子:

  • /commit - 自动生成 commit message 并提交
  • /test - 跑测试并分析失败原因
  • /firecrawl - 把网页抓成 Markdown(今天要写的)

官方文档在这:Claude Code Slash Commands

解剖一个 Slash Command

一个 Slash Command 文件长这样:

---
allowed-tools: Bash, Write
description: 用 Firecrawl 抓取网页为 Markdown
argument-hint: <url> [output-dir]
---

# 命令标题

这里写命令的具体指令和执行逻辑...

Frontmatter 三要素

allowed-tools - 允许使用的工具列表

Claude Code 有很多内置工具(Bash、Read、Write、Edit、Grep 等)。这里指定这个命令能用哪些,相当于权限控制。

description - 命令描述

输入 / 时会显示的提示文字,帮你快速识别命令用途。

argument-hint - 参数提示

告诉用户这个命令需要什么参数。<> 表示必填,[] 表示可选。

正文部分

Frontmatter 下面就是正文,用 Markdown 写。这部分是给 Claude 看的指令,告诉它:

  1. 这个命令要完成什么目标
  2. 具体的执行步骤是什么
  3. 输出格式有什么要求

写得越清晰,Claude 越听话。

实战:做个网页剪藏工具

目标很简单:输入一个 URL,把网页内容抓下来存成 Markdown 文件。

为什么用 Firecrawl

直接 curl 一个网页,拿到的是一堆 HTML——CSS、JS、导航栏、广告全混在一起,没法直接用。写个 Playwright 脚本当然可以,但杀鸡用牛刀。

Firecrawl 专门干这个:你给它 URL,它还你干净的 Markdown。JS 渲染、反爬绕过、广告过滤、正文提取这些它都包了。

firecrawl.dev 注册,Dashboard 里拿 API Key。免费版每月 500 积分,1 积分抓 1 页,个人用够了。

拿到 Key 后配环境变量:

echo 'export FIRECRAWL_API_KEY="fc-xxx"' >> ~/.zshrc
source ~/.zshrc

配完之后记得重启 Claude Code,不然它读不到新的环境变量。

写 Slash Command

在项目根目录创建 .claude/commands/firecrawl.md

---
allowed-tools: Bash, Write
description: 用 Firecrawl 抓取网页为 Markdown
argument-hint: <url> [output-dir]
---

# Firecrawl 网页抓取

将网页内容抓取为 Markdown 并保存。

## 参数

- `url`: 要抓取的网页地址(必填)
- `output-dir`: 保存目录(可选,默认当前目录)

## 执行步骤

1. 从 $ARGUMENTS 解析 URL 和输出目录
2. 调用 Firecrawl API 抓取网页
3. 从返回的 JSON 中提取标题和 Markdown 内容
4. 生成文件名:`日期-标题.md`
5. 保存文件并输出路径

## 执行

用 Bash 执行以下逻辑:

- URL 是第一个参数
- OUTPUT_DIR 是第二个参数,默认为 `.`
- 调用 `curl` 请求 Firecrawl API:
  - 端点:`https://api.firecrawl.dev/v1/scrape`
  - Header:`Authorization: Bearer $FIRECRAWL_API_KEY`
  - Body:`{"url": "<URL>", "formats": ["markdown"]}`
-`jq` 提取 `.data.metadata.title``.data.markdown`
- 文件名格式:`$(date +%Y-%m-%d)-<标题>.md`
- 标题处理:空格转 `-`,只保留字母数字和连字符

## 输出

保存成功后输出:`✓ 已保存: <文件路径>`

代码拆解

这个命令做的事情很直接:

  1. 解析参数 - $ARGUMENTS 是 Claude Code 传进来的用户输入
  2. 调 API - Firecrawl 的 /scrape 接口,POST 一个 JSON
  3. 提取内容 - 返回的 data.markdown 就是正文
  4. 存文件 - 按日期+标题命名,方便管理

跑起来

保存文件后,在 Claude Code 里试试:

# 抓取单个页面
/firecrawl https://java.agentscope.io/

# 指定输出目录
/firecrawl https://java.agentscope.io/ ./docs

第一次用可能会弹出权限确认,允许就行。

效果对比

AgentScope Java 文档页对比:

直接 curl

<!doctype html>
<html class="no-js" lang="en" data-content_root="../">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <link
      rel="stylesheet"
      type="text/css"
      href="../_static/styles/furo.css?v=7bdb33bb"
    />
    <link
      rel="stylesheet"
      type="text/css"
      href="../_static/togglebutton.css?v=9c3e77be"
    />
    <!-- 还有十几个 CSS/JS 链接... -->
  </head>
</html>

用 Firecrawl

# AgentScope Java

**Build Production-Ready AI Agents in Java**

## What is AgentScope Java?

AgentScope Java is an agent-oriented programming framework for building
LLM-powered applications. It provides everything you need to create
intelligent agents: ReAct reasoning, tool calling, memory management,
multi-agent collaboration, and more.

## Highlights

### Smart Agents, Full Control

AgentScope adopts the ReAct (Reasoning-Acting) paradigm, enabling agents
to autonomously plan and execute complex tasks...

一个是噪音,一个是信号。

踩坑记录

如果你调用 /scrape 返回空内容,多半是目标站反爬比较凶。试试在请求里加 "timeout": 30000 把超时调大。

积分消耗特别快?多半是用了 /crawl 抓整站。建议先用 /map(不消耗积分)探路,看看哪些页面值得抓,再针对性 /scrape

如果你拿到的 Markdown 格式很乱,多半是原站 HTML 结构太奇葩。这种情况只能自己后处理,写点正则清理一下。

最后

Slash Command 的核心思路就是把重复的工作流封装起来。网页剪藏只是个例子,你可以用同样的方式封装任何常用操作:代码生成、文档格式转换、API 调用等等。

这个版本只处理普通网页。微信公众号这类反爬比较凶的站,得上 Playwright 做降级,后面可能单独写一篇。


相关链接


CC BY-NC-SA 4.0

本文采用 CC BY-NC-SA 4.0 协议,转载请注明出处。

原文链接: https://xkcoding.com/2026-01-17-extend-claude-code-with-slash-command.html