用思源笔记数据库搭建微信公众号文章管理之块引用自动替换为公众号文章链接

目前用思源笔记的数据库,管理自己的博客笔记,每发一个博客,就添加到这个数据库

PixPin20250625223942.png

发微信公众号用思源官方就提供的功能,直接可以复制图文到微信公众号上

PixPin20250625223318.png

在写公众号的过程中,遇到一个问题,我如果要引用之前公众号发布的文章该怎么办,

一个方法是直接去公众号后台搜索关键词,把文章一篇篇找出来,然后复制粘贴到正在写的笔记里

但是这种方式不优雅,要切换软件不说,我思源笔记的文章稿子引用的都是公众号的链接,不方便我直接查看我本地的笔记

所以我还是希望文章稿子引用的链接形式就是笔记块引用,我可以直接[[搜索或是在博客数据库里搜索文章来引用,在文章发布的时候就自动替换为外部链接


我之前写过一个思源笔记发布到公众号,自动处理公式、链接、列表的代码:[js] 思源笔记粘贴到微信公众号处理公式、链接、多级列表 - 链滴

目前思源官方已经采纳了公式处理、多级列表这部分的代码,所以这部分其实不需要再额外转化了

但是链接的部分还是有必要进行处理的,毕竟微信公众号文章里放的链接只能是公众号链接,其他链接会被转化为纯文本

为了对块引用进行自动处理,其实可以在导出设置里设置引用导出为锚文本块链

PixPin20250625222521.png

导出的时候只需要对块链进行处理即可,

思路如下:

如果遇到 siyuan://blocks 开头的链接,比如 href="siyuan://blocks/20250625153417-m7h4zcf",提取其 ID,如 20250625153417-m7h4zcf,搜索数据库的链接列,自动替换链接为微信公众号链接

获取博客数据库(avID 为 20230804021554-h0l44hz)的链接列(keyID 为 20250310104930-o0812vp)的微信公众号链接的代码如下

let res = await fetchSyncPost("/api/av/getAttributeViewKeys", { id: '20250625153417-m7h4zcf' // blockid }); const foundItem = res.data.find(item => item.avID === "20230804021554-h0l44hz"); // avid if (foundItem && foundItem.keyValues) { // 步骤2:在 keyValues 中查找特定 key.id 的项 const specificKey = foundItem.keyValues.find(kv => kv.key.id === "20250310104930-o0812vp"); // 链接列 console.log(specificKey); // 步骤3:获取 values 数组的第一个元素的 id if (specificKey && specificKey.values && specificKey.values.length > 0) { console.log(specificKey.values[0].mAsset); // 从 mAsset 数组中找到以 https://mp.weixin.qq.com 开头的链接 if (Array.isArray(specificKey.values[0].mAsset)) { const weixinLink = specificKey.values[0].mAsset.find(asset => asset.content && asset.content.startsWith('https://mp.weixin.qq.com') ); if (weixinLink) { console.log('找到微信公众号链接:', weixinLink.content); } else { console.log('未找到微信公众号链接'); } } } }

这样我发布的时候只需要点击转化按钮,就可以自动转化为外部公众号文章链接

PixPin20250625222850.png

就可以直接粘贴到公众号,进行发布了

PixPin20250625223058.png

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26256 引用 • 109144 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 我和 D 试了一下在 Windows 的 Chrome 浏览器和思源本体里“复制到公众号”是不需要内核将变量转换为实际值的,我准备把这个逻辑改掉,但还没有测试过 Mac 上是怎么样的。你用的是苹果设备吗?

    Pull Request #15110 · siyuan-note/siyuan

    image.png

    2 回复
  • Achuan-2

    我是 windows 设备,之前用思源本体复制到公众号是需要把变量转化为实际值的,否则样式会丢,之前也发过 issue 才让 D 加这个功能的,见 Use real theme style value replace var in preview mode · Issue #11458 · siyuan-note/siyuan

    至于如果现在直接粘贴就可以的话,我是不清楚原因的

  • Achuan-2

    我这边依然是需要转为实际值才能成功粘贴样式的,不建议改掉逻辑,既然能用就没必要删

    使用的是思源本体,复制到 edge 浏览器的微信公众号网页

    给引述块添加一个背景色和文字颜色

    PixPin20250625225741.png

    PixPin20250625230015.png

    粘贴到公众号没有背景色和颜色

    PixPin20250625225644.png

    而用固定颜色而非变量

    PixPin20250625225835.png

    则可以

    PixPin20250625225852.png

    1 回复
    2 操作
    Achuan-2 在 2025-06-25 23:17:02 更新了该回帖
    Achuan-2 在 2025-06-25 23:08:17 更新了该回帖
  • 我打包了修改后的最新版本:https://github.com/TCOTC/siyuan/releases/tag/v3.2.0-dev041

    我实际测试这个功能基本上没法正确转换变量,即使我修了一部分 BUG 也跟一部分主题不兼容,所以为了确保最好的效果,在 Chromium 内核的浏览器中就不转换变量了,浏览器在复制的时候会自动内联所有元素的实际样式。

    你把插件、代码片段之类的都关掉,装一下我打包的这个再试试看。

    p.s. 浏览器会自动处理:

    image.png

    1 回复
    目前这个打包版本是确实可以处理变量的
    Achuan-2
  • Achuan-2 1 评论 via Android

    公众号现在发布还有一个问题,是公众号正在灰度的编辑器会限制 blockquote 的字数少于 300 字,把 blockquote 当成纯粹引用来用了,觉得字数多了,就是不恰当引用,不知道后面微信官方会不会取消这个限制,一个解决方法是把 blockquote 改成 section

    另外思源笔记发布到知乎也有些问题,主要是是列表的问题以及多余空行问题,列表有子块会导致列表重新编号,导致有序列表的序号都变为 1,后面有时间打算看看能不能优化下,否则有序列表发知乎很痛苦

    JeffreyChen

推荐标签 标签

  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖
  • JWT

    JWT(JSON Web Token)是一种用于双方之间传递信息的简洁的、安全的表述性声明规范。JWT 作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以 JSON 的形式安全的传递信息。

    20 引用 • 15 回帖 • 26 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    188 引用 • 319 回帖 • 241 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 9 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 15 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 766 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 614 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    108 引用 • 153 回帖 • 2 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • PWL

    组织简介

    用爱发电 (Programming With Love) 是一个以开源精神为核心的民间开源爱好者技术组织,“用爱发电”象征开源与贡献精神,加入组织,代表你将遵守组织的“个人开源爱好者”的各项条款。申请加入:用爱发电组织邀请帖
    用爱发电组织官网:https://programmingwithlove.stackoverflow.wiki/

    用爱发电组织的核心驱动力:

    • 遵守开源守则,体现开源&贡献精神:以分享为目的,拒绝非法牟利。
    • 自我保护:使用适当的 License 保护自己的原创作品。
    • 尊重他人:不以各种理由、各种漏洞进行未经允许的抄袭、散播、洩露;以礼相待,尊重所有对社区做出贡献的开发者;通过他人的分享习得知识,要留下足迹,表示感谢。
    • 热爱编程、热爱学习:加入组织,热爱编程是首当其要的。我们欢迎热爱讨论、分享、提问的朋友,也同样欢迎默默成就的朋友。
    • 倾听:正确并恳切对待、处理问题与建议,及时修复开源项目的 Bug ,及时与反馈者沟通。不抬杠、不无视、不辱骂。
    • 平视:不诋毁、轻视、嘲讽其他开发者,主动提出建议、施以帮助,以和谐为本。只要他人肯努力,你也可能会被昔日小看的人所超越,所以请保持谦虚。
    • 乐观且活跃:你的努力决定了你的高度。不要放弃,多年后回头俯瞰,才会发现自己已经成就往日所仰望的水平。积极地将项目开源,帮助他人学习、改进,自己也会获得相应的提升、成就与成就感。
    1 引用 • 487 回帖 • 4 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 444 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖 • 1 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • GraphQL

    GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

    4 引用 • 3 回帖 • 9 关注
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖 • 1 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 51 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • CSS

    CSS(Cascading Style Sheet)“层叠样式表”是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。

    198 引用 • 543 回帖 • 1 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 443 关注
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖 • 2 关注
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 671 关注
  • RabbitMQ

    RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种语言客户端,如:Python、Ruby、.NET、Java、C、PHP、ActionScript 等。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

    49 引用 • 60 回帖 • 350 关注