siyuan-note/siyuan · warning
Conf.Language(204)
Error message
Conf.Language(204)
What it means
Export2Liandi refuses to send documents that live inside the built-in user guide notebook. The kernel checks IsUserGuide(tree.Box) after loading the tree by block ID and returns a localized message (Conf.Language(204), 'The doc in the user guide does not support sharing to the community') because sending guide docs to the community was explicitly disabled (issue #8388).
Source
Thrown at kernel/model/export.go:422
return nil
})
return
}
func Export2Liandi(id string) (err error) {
if err = prepareExportBlockAssets(id, false); err != nil {
return
}
err = withExportReadLockByBlockID(id, func() error {
tree, loadErr := LoadTreeByBlockID(id)
if loadErr != nil {
logging.LogErrorf("load tree by block id [%s] failed: %s", id, loadErr)
return loadErr
}
if IsUserGuide(tree.Box) {
// Doc in the user guide no longer supports one-click sending to the community https://github.com/siyuan-note/siyuan/issues/8388
return errors.New(Conf.Language(204))
}
assets := getAssetsLinkDests(tree.Root, false)
embedAssets := getQueryEmbedNodesAssetsLinkDests(tree.Root)
assets = append(assets, embedAssets...)
assets = gulu.Str.RemoveDuplicatedElem(assets)
_, err = uploadAssets2Cloud(assets, bizTypeExport2Liandi, false)
if err != nil {
return err
}
msgId := util.PushMsg(Conf.Language(182), 15000)
defer util.PushClearMsg(msgId)
// 判断帖子是否已经存在,存在则使用更新接口
const liandiArticleIdAttrName = "custom-liandi-articleid"
const liandiArticleIdAttrNameOld = "custom-liandi-articleId" // 兼容旧属性名
foundArticle := falseView on GitHub (pinned to 8641553a1f)
Solutions
- Copy the content into a normal (non-user-guide) notebook and share that document instead
- Use a different export path (e.g. export Markdown/Docx) that does not restrict guide docs
Example fix
// before
kernel.Model.Export2Liandi("20240101120000-abc1234") // id inside user guide box
// after
kernel.Model.Export2Liandi("20240101120000-xyz5678") // id in a user-created notebook Defensive patterns
Strategy: validation
Validate before calling
const doc = await getBlockInfo(blockId);
if (doc.box === "20210808180117-czj9bvb") { // built-in user guide notebook id
throw new Error("Refusing to export: doc is in the user guide notebook");
} Try / catch
try {
await export2Liandi(blockId);
} catch (e) {
if (String(e.msg).includes("user guide")) showHint("Copy the doc to a normal notebook first");
} Prevention
- Check doc.box against the built-in guide notebook id before share/export calls
- Never present the Liandi share action on guide-notebook docs in plugin UI
When it happens
Trigger: Calling the kernel export/Liandi share API (Export2Liandi) with a block/document ID that resolves to a tree inside the user guide notebook ('SiYuan User Guide' box).
Common situations: Users open a doc from the built-in user guide and click 'send to Liandi/community'; scripts or plugins that pass a block ID copied from a guide page.
Understand the failure class
Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.
Related errors
- The doc in the user guide does not support sharing to the co
- result.Msg
- Please unlock the encrypted notebook first
- Please unlock the encrypted notebook first
- Currently available space is [%s], at least [%s] is required
AI-assisted analysis of siyuan-note/siyuan@8641553a1f (2026-09-11).
Data as JSON: /api/errors/820140c07aca1752.
Report an issue: GitHub.