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 := false

View on GitHub (pinned to 251596fc0d)

Solutions

  1. Select a document from your own notebook (not the user guide notebook) and retry the share.
  2. If you need to share guide-like content, copy it into a personal notebook first so IsUserGuide returns false.
  3. 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

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


AI-assisted analysis of siyuan-note/siyuan@251596fc0d (2026-08-12). Data as JSON: /api/errors/3bf3d1532865e183. Report an issue: GitHub.