目前用思源笔记的数据库,管理自己的博客笔记,每发一个博客,就添加到这个数据库
发微信公众号用思源官方就提供的功能,直接可以复制图文到微信公众号上
在写公众号的过程中,遇到一个问题,我如果要引用之前公众号发布的文章该怎么办,
一个方法是直接去公众号后台搜索关键词,把文章一篇篇找出来,然后复制粘贴到正在写的笔记里
但是这种方式不优雅,要切换软件不说,我思源笔记的文章稿子引用的都是公众号的链接,不方便我直接查看我本地的笔记
所以我还是希望文章稿子引用的链接形式就是笔记块引用,我可以直接[[搜索或是在博客数据库里搜索文章来引用,在文章发布的时候就自动替换为外部链接
我之前写过一个思源笔记发布到公众号,自动处理公式、链接、列表的代码:[js] 思源笔记粘贴到微信公众号处理公式、链接、多级列表 - 链滴
目前思源官方已经采纳了公式处理、多级列表这部分的代码,所以这部分其实不需要再额外转化了
但是链接的部分还是有必要进行处理的,毕竟微信公众号文章里放的链接只能是公众号链接,其他链接会被转化为纯文本
为了对块引用进行自动处理,其实可以在导出设置里设置引用导出为锚文本块链
导出的时候只需要对块链进行处理即可,
思路如下:
如果遇到 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('未找到微信公众号链接');
}
}
}
}
这样我发布的时候只需要点击转化按钮,就可以自动转化为外部公众号文章链接
就可以直接粘贴到公众号,进行发布了
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于