如何编写毛线助手的 Plan

目录

流程

  1. 请到 MaoXian Web Clipper 的设置页面,启用「MaoXian 助手」
  2. 使用任何编辑器编写 Plan, 再把其复制到 「MaoXian 助手」设置里的**自定义 Plan **里。
  3. 刷新目标网页,点击「裁剪」验证编写的动作有没有产生预期效果。

Plan 的结构解释

参数名 类型 是否必填 备注
name 字符串 必填 起标识作用,可随便填写,一般可以直接填写网站名
pattern 字符串、元组 必填 匹配的模式,只有网址和模式匹配,该 plan 才会被应用
excludePattern 字符串、元组 选填 用于充当 pattern 的黑名单
version 整型 必填 用于描述最后更新时间,格式为年月日,如:20190721
contributors 元组 选填 用于描述 plan 的作者和贡献者
disabled 波尔值 选填 用于表示 plan 的禁用状态
actions 元组 必填 用于描述要执行的动作
tags 元组 选填 用于标注网站属性,使这些 plan 更好管理
comment 字符串 选填 备注

pattern 参数的使用

pattern 参数描述了该 Plan 会应用到哪一类网址上,如果网站有多个域名且很难用匹配符进行匹配,则可以提供多个 Pattern。

例如:

{
  ...
  "pattern": [
    "https://a.com/article/*",
    "https://abcdefg.onion/article/*"
  ]
}

如果 pattern 所匹配的网址中有几个特殊项,则可以用 excludePattern 参数剔除。

目前支持的匹配符如下:


数字匹配符

专门用于匹配数字,常用于匹配网址路径中的数字部分,只能完整匹配,无法作为前缀或者后缀去使用。

用例:

模式 网址 匹配 备注
https://example.org/post/$d/$d/$d/$d https://example.org/post/2019/07/21/003 其中前三个 $d 分别匹配到 年,月,日。最后一个 $d 匹配到文章 ID,注意网址中的这四个部分全是数字。
https://example.org/article-$d https://example.org/article-001 无法匹配到 001 因为这不是完整匹配

若要匹配部分,如匹配开头或结尾,则需要使用单星匹配符。


单星匹配符

常用于匹配开头或结尾,相当于匹配零个或多个字符,也可匹配网址路径中的一个目录,但无法匹配多个目录。

用例:

模式 网址 匹配 备注
http*://example.org http://example.org 匹配到零个字符
http*://example.org https://example.org 匹配到 s
https://*.example.org https://www.example.org 匹配开头的子域名 www
https://*.example.org https://foo.bar.example.org 匹配开头的子域名 foo.bar
https://a.org/*/index.html https://a.org/blog/index.html 匹配到路径中的目录 blog
https://a.org/*/index.html https://a.org/blog/jake/index.html 无法匹配目录分隔符 /,即无法匹配多个目录

双星匹配符

一般使用双星匹配符,来匹配零个或零个以上的目录。

用例:

模式 网址 匹配 备注
https://a.org/blog/**/*/*/*/*/*.html https://a.org/blog/javascript/2017/01/05/awesome-article.html 中间用了四个 * 号来匹配分类和年月日,前面的 ** 匹配可能存在的子分类
https://example.org/blog/**/*/$d/$d/$d/*.html https://a.org/blog/javascript/2017/01/05/awesome-article.html 用了更严格的数字匹配符
https://example.org/blog/ https://a.org/blog/javascript/2017/01/05/awesome-article.html 注意:最后面的 /,匹配以该模式打头的网址,极宽松的模式

可以看到,对于同一个网址,可以使用不同的模式去匹配,严格程度不同,根据需求去选择即可。


匹配网址的查询参数部分(较少使用)

一般匹配,只是匹配网址的查询参数能满足 Pattern 的参数部分。网址的参数数量可以多,顺序也可以不一致。

用例:

模式 网址 匹配 备注
https://a.org/page?id=* https://a.org/page?id=123 匹配到参数值 123
https://a.org/page?id=* https://a.org/page?type=news&id=123 匹配到参数值123,即使有多个查询参数
https://a.org/page?type=news https://a.org/page?type=news&id=123 匹配到type=news,即使有多个查询参数

严格匹配, 表示网址的查询参数必须和 Pattern 的参数部分严格一致,数量不能多,不能少,但顺序可以不一致。 严格匹配需要在 Pattern 的参数部分的最前方加上 “!”。

用例:

模式 网址 匹配 备注
https://a.org/page?!foo=111&bar=222 https://a.org/page?foo=111&bar=222 完美匹配
https://a.org/page?!foo=111&bar=222 https://a.org/page?bar=222&foo=111 即使顺序不同也匹配
https://a.org/page?!foo=111&bar=222 https://a.org/page?foo=111 查询参数的数量少了 bar
https://a.org/page?!foo=111&bar=222 https://a.org/page?foo=111&bar=222&baz=333 查询参数的数量多了 baz

excludePattern 参数的使用

该参数用于作为 pattern 参数的黑名单,也可提供多个。用法请参考 pattern 参数

disabled 参数的使用

disabled 参数用于表明该 plan 是否已禁用了。常用于「全局 plan」,或者是禁用某个「公开 plan」。比如你订阅的公开的 plan 列表里,有一个 plan 你不想使用。则可以把那个 plan 复制进 「自定义 plan」列表里,然后把它设为 "disabled": true ,就会把它禁用掉。

actions 参数的使用

action 的结构

actions 参数用于描述要执行的动作,结构如下

{
  "name": "example.org",
  "pattern": "https://example.org/post/*/*.html",
  "actions": [
    {"hide": ".ad"},
    {"hide": ".comment", "tag": "md-only"},
    {"pick": "article"}
  ]
}

上面这个 Plan,定义了三个 action,可以看出 action 的结构为 {$actionName: $actionValue, [tag]}

关于 tag(标签) 的说明

可以把每个标签看成开关,通过组合这些开关,来控制每个动作是否需要执行。

tagStatus 参数

tagStatus 参数,用于表示标签的激活状态,其值是一个字符串。

tagStatus 用标签的名字表示其是激活,若要表示不激活,可以在标签名字前加上英文感叹号!“,多个状态之间用英文逗号,“ 隔开。

例如: rm-comments, !rm-nav-links 这个 tagStatus 表示 rm-comments 标签的状态是激活的,rm-nav-links 标签的状态是不激活。

扩展内置的 tagStatus 的值

即,默认情况下:

设置默认的 tagStatus 参数

你可以在 设置 > 助手 页面设置默认的 tagStatus,设置后,默认的裁剪动作,都会使用它。

用户明选的 tagStatus 参数

目前可通过 用户命令 在开始裁剪时候,传入 tagStatus 参数。利用它提供与默认裁剪动作不同的方案。

各种情况下 tagStatus 的值

内置的值 设置的默认值(优先级低) 用户明选的值(优先级高) 最终使用的值 备注
!disabled, html-only tagA, !tagB !disabled, html-only, tagA, !tagB -
!disabled, html-only tagX, !tagY !disabled, html-only, tagX, !tagY -
!disabled, md-only tagA, !tagB tagX, !tagY !disabled, md-only, tagX, !tagY 这里默认值直接被忽略

用于修改网页状态的动作

动作名字 类型 备注
show 选择器 用于显示隐藏的「块状节点」,可提供多个选择器,详情请看下文
hide 选择器 用于选择「要剔除的节点」,可提供多个选择器,详情请看下文
hideSibling 选择器 用于选择「要剔除的节点」,可提供多个选择器,详情请看下文
hideExcept 选择器 用于选择「要剔除的节点」,选择方式为反选,详情请看下文
chAttr 对象 用于修改节点的属性值,提供了多种修改属性的方式,详情请看下文
exec 对象 用于执行用户脚本(即用户自己编写或下载到的脚本)
参数名 类型 备注
formula 对象 用于标注公式
pick 或 select 选择器 用于选择「要裁剪的节点」,可提供多个选择器,详情请看下文
confirm 选择器 用于选择「要裁剪的节点」,并确认,可提供多个选择器,详情请看下文
clip 选择器 用于选择「要裁剪的节点」,并立即开始裁剪,可提供多个选择器,详情请看下文
form 对象 用于预设置表单的输入值,详情见下文
config 对象 用于重写某些配置项,详情见下文

选择器

选择器的格式

选择器有两种:CSS 选择器 和 xPath 选择器。是一个字符串,格式为 $type||$q

变量 说明
$type 选择器的类型 C 代表 CSS, X 代表 xPath
$q 选择器 CSS 选择器 或 xPath 选择器

其中 $type|| 部分可省略,省略后的部分表示的是 CSS 选择器,大部分情况下我们都会用 CSS 选择器,除非一些很难用 CSS 选择器表示的,才会使用到 xPath 选择器。

下面我们来看一个例子(注: 本页面给出的例子都是 JSON 格式)

{
  "name": "example.org",
  "version": 20190831,
  "pattern": "https://www.example.org/article/*",
  "actions": [
    {"hide": [
      "div.status-bar",
      "div.comment",
      "X||//span[text()='更多请关注']"
    ]},
    {"pick": "article"}
  ]
}

show 动作的使用

show 动作是用于显示「隐藏的块状节点」的,属性的值也是选择器(可填写多个),show 比较特殊,它只可用于块状节点(即display 的值为 block)。它会将节点的 display 样式设置成 block 来让这个节点显示出来. 它相对于后文会提到的 chAttr 动作比较简单,如果要操作的节点都为块状节点,则使用 show 会比较方便,否则,请考虑使用 chAttr 动作(具体查看 chAttr 的例4)

hide 动作的使用

hide 动作是用来剔除你不想裁剪的节点的,所有选择器找到的节点都会被隐藏掉(MaoXian 不会裁剪隐藏的节点)。

hideSibling 动作的使用

hideSibling 动作是用来剔除你不想裁剪的节点的,它比 hide 动作特殊的地方在于, 所有选择器找到的节点必须具有一个特征:找到的节点在父节点的子节点中有且只有一个。找到的节点的兄弟姊妹节点都会被隐藏掉。 (MaoXian 不会裁剪隐藏的节点)。

hideExcept 动作的使用

hideExcept 动作是使用「反选」的方式来选择要剔除的节点。它的值是一个 Object。有两个必须指定的属性:insideexcept

假如有一个网页,它有如下结构:

<div class="post">
  <div class="xxxxx">广告内容</div>
  <div class="post-header"><h1>文章标题</h1></div>
  <div class="post-content">文章内容</div>
  <div class="xxxxx">更多推荐</div>
</div>

且其中的「广告内容」和「更多推荐」的 class 属性的值是随机生成的,其位置随机出现。这个时候可以通过 hideExcept 参数来反选它们,如:

{
  ...
  "actions": [
    {"hideExcept": {"inside": ".post", "except": [".post-header", ".post-content"]}}
  ]
}

该 Plan 会把 “.post” 选中到的节点内部的子节点进行隐藏,除了 “.post-header” 和 “.post-content” 指定的节点。(MaoXian 不会裁剪隐藏的节点)。

chAttr 动作的使用

chAttr 动作可以用来改变元素的属性的值。其值为一个 Object。

其中 pick 参数为必填,用于找到要操作的元素。而修改动作相关的其他参数,则比较特殊,支持两种结构。

如下:

当只需要对一个属性做修改,则用下面结构(注:所有参数位于同一级):

{
  ...
  "actions": [
    {
      "chAttr": {"pick": "_", "attr": "_", "type": "_", ...}
    }
  ]
}

当需要对多个属性做修改,则使用下面结构(注:和修改动作相关的参数,被 action 这个参数包住):

{
  ...
  "actions": [
    {
      "chAttr": {"pick": "_", "action": [ {"attr": "_", "type": "_", ...} ]}
    }
  ]
}

下面我们用一些常见的例子来说明 chAttr 的用法。


例1.1: 假设有一个网页,显示的是低质量的图,这些图的 src 属性是一个有规律的地址,比如: https://www.example.org/images/awesome-pic-small.jpg ,而某些操作后,可能就变为 https://www.example.org/images/awesome-pic-big.jpg 。我们希望裁剪的是后者,而非前者,可以用下面这个 Plan 来实现:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "replace.last-match",
      "subStr": "small",
      "newStr": "big"
    }
  }]
}

上面 Plan 中的 chAttr 值的各个参数解读如下:

还有一种和这个类似的修改动作,它的 type 为 replace.all ,作用是替换所有找到的匹配,较少使用。 replace.all 也支持有多个替换项(即:subStrnewStr 都可以是数组)。替换规则为:如果 newStr 有和 subStr 对应的项,则使用对应的项,否则使用 newStr 的第一项。

例如: subStr 为 ["xm", "xxm"],newStr 为 ["xl", "xxl"] 两个值一一对应,则会使用对应项。即 xm 会由 xl 替换, xxm 会由 xxl 替换。

例如: subStr 为 ["xm", "xxm"],newStr 为 ["xxl"] ,其中 xxm 没有对应的替换值,则会使用第一项。即 xxm 也会由 xxl 替换。

专门用于修改 URL 的修改动作

比如上方的例1.1,也可以用下方的 Plan 来实现:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "url.file.set-name-suffix",
      "sep": "-",
      "suffix": "big",
      "whiteList": ["small", "big"]
    }
  }]
}

这个修改动作,会对 src 属性指定的 url 的文件名部分,设置后缀(在扩展名前面)。其中:

如果要移除文件名后缀,则使用下方 Plan :

{
  ...
  "actions": [{

    "chAttr": {
      "type": "url.file.rm-name-suffix",
      "attr": "src",
      "pick": "img",
      "sep": "-",
      "whiteList": ["small", "md"]
    }
  }]
}

参数比前一个 Plan 少了 suffix。其中:

例1.2:有些网站会在文件的扩展名后面加上后缀来区分不同的文件质量。如:

<img src="assets/name.jpg!sm">

则可使用下方 Plan 进行设置:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "url.file.set-ext-suffix",
      "sep": "!",
      "suffix": "lg"
    }
  }]
}

若要移除,则使用:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "url.file.rm-ext-suffix",
      "sep": "!"
    }
  }]
}

注意: MaoXian 助手对于扩展名后缀的操作很粗暴。须确保 url 文件名中含有的分隔符确实为扩展名和后缀的分隔符,不然会出问题。

例1.3:有些网站还会把版本信息放在 url 的查询参数中,如:

<img src="http://a.org/name.jpg?size=sm&from=google">

遇到这种,可使用下方 Plan:

{
  ...
  "actions": [{

    "chAttr": {
      "type": "url.search.edit",
      "pick": "img",
      "attr": "src",
      "change": {"size": "lg"},
      "delete": ["from"]
    }
  }]
}

其中:

上面这个 plan 应用后, src 属性的值为: “http://a.org/name.jpg?size=lg”


例2: 假设有一个网页,显示的是低质量的图,它的高质量图片地址,放在了 img 标签的另一个属性上。图片的 html 如下:

<img src="/image/pic-abc.jpg" hq-src="/image/pic-bdf.jpg" />

我们要裁剪的是 hq-src 指定的那张图片,使用下面这个 Plan 实现:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "assign.from.self-attr",
      "tAttr": "hq-src"
    }
  }]
}

例3.1: 假设有一个网页,显示的是低质量的图,并且这些图片本身是一个链接,可以通过点击图片查看原图, 图片的 html 如下:

<a href="/image/awesome-pic-bdf.jpg" >
  <img src="/image/pic-abc.jpg" />
</a>

我们要裁剪的是 a 标签 href 指定的那张图片,使用下面这个 Plan 实现:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "assign.from.parent-attr",
      "tAttr": "href"
    }
  }]
}

例3.2: 假如和 例3.1 类似,但是原图的链接不在父节点,而是在祖先节点,HTML 如下:

<a href="/image/awesome-pic-bdf.jpg" >
  <div class="wrapper">
    <img src="/image/pic-abc.jpg" />
  <div>
</a>

我们要裁剪的是 a 标签 href 指定的那张图片,使用下面这个 Plan 实现:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": "img",
      "attr": "src",
      "type": "assign.from.ancestor-attr",
      "tElem": ["a"],
      "tAttr": "href"
    }
  }]
}

注意 tElem 的值比较特殊,如下:

还有一种 和 assign.from.ancestor-attr 相似的类型为: assign.from.ancestor.child-attr , 此种类型也需要提供 tElem ,且需要提供两个选择器。拿到的目标节点为祖先节点的后代节点。


例4: 除了上面这几种动作, chAttr 还对 class 属性的修改做了支持。请看下方 Plan:

{
  ...
  "actions": [{

    "chAttr": {
      "pick": ".section",
      "attr": "class",
      "type": "split2list.remove",
      "value": "folded",
      "sep": " "
    }
  }]
}

还有一种修改动作, 跟该例子类似,它的类型为 split2list.add,该类型表明要往属性里面添加一项。

一般可以使用这两种动作,对网页折叠部分进行控制,使其达到我们想要的状态。这种方式不像上文的 show 参数那样粗暴地对 display 进行操控。


例5: 这种可能不常见,即直接修改属性的值

{
  ...
  "actions": [{

    "chAttr": {
      "pick": ".formula",
      "attr": "type",
      "type": "assign.from.value",
      "value": "image/svg",
    }
  }]
}

上面的例子会把 “type” 属性的值设置为 “image/svg”。

exec 动作的使用

该动作用于执行用户脚本,用户可自己编写一些脚本,通常用于对网页做一些复杂的修改,然后使用该动作,指定要执行的脚本。

例子:

{
  ...
  "actioins": [{
    "exec": {
      "script": "loadLazyImg",
      "args": ["article"],
      "when": "selecting",
      "once": true
    }
  }]
}

上例中

三个触发时机:

事件 触发顺序 备注
actived 正序 当扩展进入裁剪流程时,该事件就会触发
selecting 正序 当裁剪流程进入到筐选要裁剪的区域时,该事件就会触发
idle 逆序 当裁剪完成或取消时,该事件触发,通常可在此时做一些收尾的动作(比如:撤销对网页的更改)。

触发顺序是指,当同一事件上,已经定义了多个动作时(如:A, B, C)。这些动作的触发顺序。

用户脚本

毛线用户脚本的格式很简单,就是在普通脚本最前面,定义了一些元信息。其中 @name@version@author@description 是必填的元信息,如下例子:

//===ScriptMetas==>
// @name     loadLazyImg
// @version  1.0.0
// @author   Me
// @description Load these lazy images without the need to scroll the whole page
//<==ScriptMetas===


function loadLazyImg(containerSelector) {
  const container = document.querySelector(containerSelector);
  if (container) {
    // load lazy images inside container
  }
}

function main() {
  // 用户在『毛线助手』传入的参数,可通过 args 变量获得。
  // 假设调用的 Plan ,是上方 exec 的那个例子,此处 args 的值为: ["article"]。
  loadLazyImg(...args);
}

main();

你可以通过 设置 > 用户脚本 页面,把你编写的用户脚本,同步到 MaoXian 扩展里,同步完后,就可以在『MaoXian 助手』里使用。

formula 动作的使用

该动作用于创建一个叫做 <mx-inline-formula><mx-block-formula> 的标签来标记公式,并把原标签标记为忽略。

例如:

某个网页渲染数学公式的时候,为了兼容所有浏览器,使用了图片的形式,同时又保存其 Latex 公式,如下:

<img src="formula.png" data-formula="x^2+y^2">

我们在裁剪成 Markdown 格式时,完全没有必要保存这个图片,只需要保存这个 data-formula 属性的公式即可。

使用下方 Plan:

{
  ...
  "actions": [
    {
      "formula": {"pick": "img", "attr": "data-formula"},
      "tag": "md-only"
    }
  ]
}

若该 <img> 标签是『块状公式』(独占一行), 应用该 Plan 后的 HTML 如下:

<mx-block-formula value="x^2+y^2"></mx-block-formula>
<img src="formula.png" data-formula="x^2+y^2" data-mx-ignore="1">

若该 <img> 标签是『行内公式』(和其他文字在同一行), 应用该 Plan 后的 HTML 如下:

<mx-inline-formula value="x^2+y^2"></mx-inline-formula>
<img src="formula.png" data-formula="x^2+y^2" data-mx-ignore="1">

可以看到原来的 <img> 标签被标记了 data-mx-ignore 属性,标记后 MaoXian 会忽略该标签。

在没有 block 参数的时候,formula 动作会自动根据选中元素的样式,决定是『块状公式』还是『行内公式』。 你也可以通过 block 参数直接指定。

比如下方 plan 直接指定了『块状公式』

{
  ...
  "actions": [
    {
      "formula": {"pick": "img", "attr": "data-formula", block: true},
      "tag": "md-only"
    }
  ]
}

pick 或 select 动作的使用

该动作选中要裁剪的节点。找到第一个匹配的节点就停止查找,如果你填写了多个选择器,则会按照选择器的顺序依次查找,也是找到第一个即停止。

注:该动作在『全局 Plan 』中无效

confirm 动作的使用

该动作选中要裁剪的节点,并进行确认,执行完,会到填写表单那一步。找到第一个匹配的节点就停止查找,如果你填写了多个选择器,则会按照选择器的顺序依次查找,也是找到第一个即停止。

注:该动作在『全局 Plan 』中无效

clip 动作的使用

该动作选中要裁剪的节点,并立即自动进行裁剪。找到第一个匹配的节点就停止查找,如果你填写了多个选择器,则会按照选择器的顺序依次查找,也是找到第一个即停止。

注:该动作在『全局 Plan 』中无效

form 动作的使用

用于预设置表单的输入值,MaoXian 会在显示表单的时候,自动帮你输入这些预设的值,都为选填。

注:该动作在『全局 Plan 』中无效

详情如下:

名字 类型 说明 默认值
title 选择器 用于选中包含标题的元素
category 字符串 对应表单的目录(多级目录用 / 隔开) 取决于你的设置(见扩展设置页面)
tagstr 字符串 对应表单的标签(多个标签用 ,空格 隔开)

主要应用场景:

例子:

请注意 title 的值是一个选择器,此例选中 main h1 对应的标题来作为『保存表单』的标题。

{
  ...
  "actions": [{

    "form": {
      "title": "main h1",
      "category": "news/read-later",
      "tagstr": "international,freedom-news"
    }
  }]
}

config 动作的使用

重写某些配置项,并且重写的这个动作只在这个 Plan 的作用范围内有效。

注:该动作在『全局 Plan 』中无效

当前允许重写的配置项如下,所有可配置项均为选填。注: 其中的默认值指的是 MaoXian 扩展提供的默认值,该值只作为参考,实际上使用的是你自己配置页面上的值。

存储相关

可在扩展的 扩展 > 设置页面 > 存储设置 一节找到可使用的变量及其说明。

名字 说明 类型 默认值
clippingHandler 处理程序 String Browser
saveFormat 保存格式 String html
rootFolder 根目录 String mx-wc
defaultCategory 默认分类 String default
clippingFolderName 裁剪目录 String $YYYY-$MM-$DD-$TIME-INTSEC
mainFileFolder 主文件的存储目录 String $CLIPPING-PATH
mainFileName 主文件的文件名 String index.$FORMAT
saveInfoFile 是否保存元信息文件 Boolean true
infoFileFolder 元信息文件的存储目录 String $CLIPPING-PATH
infoFileName 元信息文件的文件名 String index.json
saveTitleFile 是否保存标题文件 Boolean true
titleFileFolder 标题文件的存储目录 String $CLIPPINT-PATH
titleFileName 标题文件的文件名 String a-title_$TITLE
frameFileFolder 内嵌的网页文件的存储目录 String $CLIPPING-PATH/frames
frameFileName 内嵌的网页文件的文件名 String $TIME-INTSEC-$MD5URL.frame.html
assetFolder 资源文件的存储目录 String $CLIPPING-PATH/assets
assetFileName 资源文件的文件名 String $TIME-INTSEC-$MD5URL$EXT

备注

Markdown 文档相关

请参考 扩展 > 设置 > Markdown 的说明文字进行配置。

名字 说明 类型 默认值 可选值
markdownTemplate Markdown 模板 String \n{{content}}\n  
markdownOptionHeadingStyle 标题格式 String atx setextatx
markdownOptionHr 水平分割线 String * * * * * *- - - 等等
markdownOptionBulletListMarker 子弹列表的行头符 String * *+-
markdownOptionCodeBlockStyle 代码块格式 String fenced indentedfenced
markdownOptionFence 代码块分隔符 String ``` ```~~~
markdownOptionEmDelimiter 强调(斜体)分隔符 String _ _*
markdownOptionStrongDelimiter 加重(粗体)分隔符 String ** **__
markdownOptionLinkStyle 链接格式 String inlined inlinedreferenced
markdownOptionFormulaBlockWrapper 块状公式的格式 String padSameLine sameLine, padSameLIne, multipleLinemathCodeBlock

备注

HTML 文档相关

请参考 扩展 > 设置 > HTML 的说明文字进行配置。

名字 说明 类型 默认值 可选值
htmlSaveClippingInformation 追加裁剪信息到内容尾部 Boolean false falsetrue
htmlCustomBodyBgCssEnabled 允许自定义 body 标签的 CSS 背景颜色 Boolean false falsetrue
htmlCustomBodyBgCssValue body 标签的 CSS 背景颜色 String #000000 查看 background-color (CSS)
htmlCompressCss 压缩样式(CSS) Boolean false falsetrue
htmlCaptureImage 图片 String saveAll saveAllsaveCurrent
htmlCaptureAudio 声音 String remove saveAllsaveCurrentremove
htmlCaptureVideo 影片 String remove saveAllsaveCurrentremove
htmlCaptureApplet Applets String remove saveAllremove
htmlCaptureEmbed Embeds String saveImage saveAllsaveImageremovefilter
htmlCaptureObject Objects String saveImage saveAllsaveImageremovefilter
htmlCaptureIcon 网站图标 String remove saveAllsaveFaviconremove
htmlCaptureCssRules 样式规则 String saveUserd saveAllsaveUserd
htmlCaptureWebFont Web 字体 String remove saveAllremovefilterList
htmlCaptureCssImage 样式图片 String remove saveAllremove
htmlEmbedFilter Embeds 过滤器 String <images> -
htmlObjectFilter Objects 过滤器 String <images> -
htmlWebFontFilterList Web 字体过滤器组 String woff2|woff|otf|ttf -

Web 请求相关

请参考 扩展 > 设置 > 高级设置 的说明文字进行配置。

名字 说明 类型 默认值 可选值
requestTimeout 超时(秒) Integer 300 5 ~ 86400
requestMaxTries 最大尝试次数 Integer 3 大于1的整数
requestReferrerPolicy Referrer 请求头策略 String strict-origin-when-cross-origin no-referrerno-referrer-when-downgrade, originorigin-when-cross-originsame-origin, strict-origin, strict-origin-when-cross-origin, unsafeUrl
requestCache 控制如何利用浏览器缓存 String default default, no-store, reload, no-cache, force-cache
requestCredentials 授权信息(cookie) String same-origin same-origin, omit

备注

关于 requestReferrerPolicy, requestCache, requestCredentials 的具体作用效果,请查看 该文档

tags 参数的使用

虽然 Plan 的 tags 属性是非必须的,但还是建议你为 Plan 打上标签,以便后期,我们能更好地管理他们。


首页