siyuan-note/siyuan · error
The doc in the user guide does not support sharing to the co
Error message
The doc in the user guide does not support sharing to the community
What it means
Returned by Export2Liandi when the target document belongs to one of SiYuan's built-in user guide notebooks (IsUserGuide(tree.Box) is true). The community-sharing feature (posting to liuyun.io / ld246.com) is intentionally disabled for guide docs to prevent cluttering the community with template content (issue #8388). The message comes from Conf.Language(204).
Source
Thrown at kernel/model/export.go:391
} else {
zipPath = "/export/csv/" + url.PathEscape(filepath.Base(absZipPath))
}
return nil
})
return
}
func Export2Liandi(id string) (err error) {
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 251596fc0d)
Solutions
- Select a document from your own notebook (not the user guide notebook) and retry the share.
- If you need to share guide-like content, copy it into a personal notebook first so IsUserGuide returns false.
- For automation, filter out guide notebooks before calling Export2Liandi.
Defensive patterns
Strategy: validation
Validate before calling
// Filter out user guide docs before calling Export2Liandi
tree, _ := model.LoadTreeByBlockID(id)
if tree != nil && model.IsUserGuide(tree.Box) {
return errors.New("cannot share user guide documents")
} Type guard
func isShareableDoc(id string) bool {
tree, _ := model.LoadTreeByBlockID(id)
return tree != nil && !model.IsUserGuide(tree.Box)
} Prevention
- Only enable the 'share to community' action on documents from user notebooks.
- For automation, filter out guide notebook IDs before calling Export2Liandi.
- Copy guide content to a personal notebook if sharing is needed.
When it happens
Trigger: Export2Liandi is called with a doc ID from the user guide notebook. The user selected a guide doc and clicked 'share to community'. A plugin or automation script attempted to publish a guide page.
Common situations: New user exploring the app tried to share a sample/guide document. Browser extension or API script targeted a guide doc by its well-known ID. User duplicated a guide doc into their own notebook but the box flag still marks it as a guide.
Related errors
- get liandi article info failed [sc=%d]
- send article to liandi failed [sc=%d]
- send article to liandi failed: <liandi server response messa
- export source [%s] is not a regular file
- --id is required
AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12).
Data as JSON: /api/errors/3bf3d1532865e183.
Report an issue: GitHub.