siyuan-note/siyuan · warning

The doc in the user guide does not support sharing to the…

Error message

The doc in the user guide does not support sharing to the community

What it means

Export2Liandi refuses to share documents that live in the built-in user-guide notebook, returning localized message 204 ('The doc in the user guide does not support sharing to the community'). Sharing guide content to the community endpoint was intentionally disabled (issue #8388).

Solutions

  1. Copy the content into a personal notebook and share it from there
  2. Client-side: filter out the user-guide notebook before offering the share action
  3. Scripts: skip boxes for which IsUserGuide returns true
Defensive patterns

Strategy: validation

Validate before calling

if model.IsUserGuide(boxID) {
    // hide or disable the share-to-community action for guide docs
}

Try / catch

if err := model.Export2Liandi(id); err != nil {
    if err.Error() == model.Conf.Language(204) {
        // guide doc: inform user to copy content to a personal notebook
    }
}

Prevention

When it happens

Trigger: Invoking export/share-to-liandi on any doc whose box passes IsUserGuide(tree.Box), i.e. the SiYuan user guide notebook.

Common situations: User browses the built-in user guide and tries the share-to-community action; scripts that iterate all notebooks hit the guide notebook.

Related errors


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

Appendix: 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 afa823b6b4)