微信公众号素材库复制图片链接
简介
微信公众号管理后台素材库中的图片,复制图片链接比较麻烦,需要点击图片查看,然后鼠标右键复制图标地址,这里基于油猴插件(Tampermonkey)写一个js脚本,用于一键复制微信公众号素材库中的图片链接。
使用场景
写文章或者程序的时候,可能需要插入图片URL,通过该脚本可以很丝滑的复制微信公众号素材库中的图片链接。
效果示例
安装脚本
- 在线安装:https://greasyfork.org/zh-CN/scripts/538956
- 本地安装:复制下面的脚本内容,然后在油猴插件中新建脚本,将脚本内容粘贴进去,然后保存即可
油猴脚本(Tampermonkey)
// ==UserScript==
// @name 微信素材库复制图片链接
// @namespace http://tampermonkey.net/
// @version 1.2
// @description 在微信公众号素材库页面,添加“复制链接”按钮,点击后复制图片URL到剪贴板
// @author Grok
// @match https://mp.weixin.qq.com/cgi-bin/appmsg*
// @match https://mp.weixin.qq.com/cgi-bin/filepage*
// @require https://code.jquery.com/jquery-3.6.0.min.js
// @grant GM_setClipboard
// ==/UserScript==
(function() {
'use strict';
// 确保jQuery无冲突
const $ = window.jQuery.noConflict(true);
// 动态创建按钮和Toptips样式
const style = `
.weui-desktop-icon-btnxx {
width: 36px;
height: 36px;
border-radius: 18px;
cursor: pointer;
font-size: 12px;
border: none;
color: #07C160;
}
.weui-desktop-icon-btnxx:hover {
color: #07C160;
background: #07C16040;
}
.weui-toptips {
position: fixed;
top: 0;
left: 50%;
transform: translateX(-50%);
padding: 8px 16px;
background: #07C16020;
color: #07C160;
font-size: 14px;
border-radius: 4px;
z-index: 9999;
display: none;
}
`;
$('<style>').text(style).appendTo('head');
// 创建Toptips提示函数
function showToptips(message) {
const $toptips = $('<div class="weui-toptips"></div>').text(message);
$toptips.appendTo('body').fadeIn(200);
setTimeout(() => {
$toptips.fadeOut(200, () => {
$toptips.remove();
});
}, 2000); // 2秒后自动消失
}
// 查找所有素材库图片项
$('.weui-desktop-img-picker__item').each(function() {
const $item = $(this);
const $tooltipWrp = $item.find('.weui-desktop-tooltip__wrp.weui-desktop-link').first();
// 在指定的weui-desktop-tooltip__wrp前插入新按钮
const $newButton = $(`
<div class="weui-desktop-tooltip__wrp weui-desktop-link" style="right: 94px;">
<button href="javascript:;" target="_blank" class="weui-desktop-icon-btnxx">URL</button>
</div>
`);
$newButton.insertBefore($tooltipWrp);
// 点击按钮获取<i>标签的style中的URL
$newButton.find('button').on('click', function() {
const $img = $item.find('i.weui-desktop-img-picker__img-thumb').first();
const style = $img.attr('style');
if (!style) {
showToptips('未找到图片URL');
return;
}
// 使用正则提取background-image中的URL
const urlMatch = style.match(/url\(["']?(.*?)["']?\)/);
if (!urlMatch || !urlMatch[1]) {
showToptips('未找到有效的图片URL');
return;
}
let imgUrl = urlMatch[1];
// 如果URL缺少协议头,补全为https
if (imgUrl.startsWith('//')) {
imgUrl = 'https:' + imgUrl;
}
// 复制URL到剪贴板
GM_setClipboard(imgUrl);
showToptips('图片URL已复制到剪贴板');
});
});
})();
用AI做博客文档SEO优化
简介
我这个博客是基于 Docusaurus 搭建的,有配置一些全局的 SEO 信息,也有提供 robots.txt,sitemap.xml 等。但是单页的 SEO 信息还是比较欠缺,所以借用 AI 来生成单页的 SEO 信息。
Front matter 规范
页面内容是使用 Markdown 编写的,所以 SEO 信息是按照 Front matter 规范来写。
Front matter
是 Markdown 文件的元数据,使用YAML
语法编写,Docusaurus 会读取这些元数据来生成 SEO 信息。
本页面AI生成的 Front matter 元数据示例如下:
---
title: 用AI做博客文档SEO优化
slug: /blog/ai-optimization-blog-seo
description: 学习如何使用AI工具自动为Docusaurus博客生成SEO元数据,包括description和keywords,提升博客在搜索引擎中的可见性和排名。
date: 2025-06-06
keywords:
- AI SEO优化
- 博客SEO
- Docusaurus SEO
- 自动生成元数据
- 技术博客优化
- 内容优化
- 搜索引擎优化
- 元数据自动生成
- 文档SEO
- 博客推广
---
不同的软件支持的 Front matter 元数据有所不同,Docusaurus 的 Front matter 元数据可以参考链接。在本博客中,我主要填写title
、slug
、description
、keywords
。
比如按照上面的 Front matter 元数据,生成的 SEO 信息如下:
<meta property="og:url" content="https://imuchen.com/blog/blog/ai-optimization-blog-seo" data-rh="true">
<meta property="og:title" content="用AI做博客文档SEO优化 | muchen的秘密基地 嗷呜~" data-rh="true">
<meta name="description" content="学习如何使用AI工具自动为Docusaurus博客生成SEO元数据,包括description和keywords,提升博客在搜索引擎中的可见性和排名。" data-rh="true">
<meta property="og:description" content="学习如何使用AI工具自动为Docusaurus博客生成SEO元数据,包括description和keywords,提升博客在搜索引擎中的可见性和排名。" data-rh="true">
<meta name="keywords" content="AI SEO优化,博客SEO,Docusaurus SEO,自动生成元数据,技术博客优化,内容优化,搜索引擎优化,元数据自动生成,文档SEO,博客推广" data-rh="true">
<meta property="article:published_time" content="2025-06-06T00:00:00.000Z" data-rh="true">
Front matter 字段对应关系:
Front matter | HTML Meta | 说明 |
---|---|---|
title | og:title | title 标签内容,显示在浏览器标签页上和搜索引擎结果页标题部分 |
slug | url | 自定义 url,生成语义化url,有助于搜索引擎理解页面主题 |
description | description | meta description 标签内容,显示在搜索引擎结果页描述部分 |
keywords | keywords | meta keywords 标签内容,显示在搜索引擎结果页关键词部分 |
date | article:published_time | 发布时间,有助于搜索引擎优先展示较新内容 |
(实践)优化产品经理栏目下的文档
大量文档批量处理
最近在产品经理栏目下添加了大量文档,文档数量太多,一个一个操作太麻烦了,借助AI编程工具批量处理:
- Windsurf
- Trae
AI 对话提示词
使用 Trae
或 Windsurf
打开博客工程目录,然后打开AI对话框,输入以下提示词:
对`docs/product-manager/ai-pm/`下面的所有`.md`文件按照 fornt matter 规范生成title、slug、description、keywords
根据对话框提示,选择接受对应的修改就行了。
图1 AI对话过程:
图2 SEO 结果示例 文章页面链接:
白嫖图床测试
微信多开(苹果电脑)
简介
在苹果电脑(macOS)上通过重新签名微信.app(WeChat)
,实现微信分身多开。
微信多开步骤
复制微信app
sudo cp -R /Applications/WeChat.app /Applications/WeChat2.app
修改Bundle Id
sudo /usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier com.tencent.xinWeChat2" /Applications/WeChat2.app/Contents/Info.plist
重新签名
sudo codesign --force --deep --sign - /Applications/WeChat2.app
启动程序
nohup /Applications/WeChat2.app/Contents/MacOS/WeChat >/dev/null 2>&1 &
制作快捷启动方式
1、方式1:固定在dock(程序坞)
栏
打开应用,右键应用图标 - 选项 - 在程序坞中保留
2、方式2:Launchpad(启动台)
快捷图标
如果在Launchpad(启动台)
没显示图标,可以使用automator(自动操作).app
制作快捷启动方式。步骤如下:
- 打开
automator(自动操作).app
- 左上角 - 文件 - 新建 - 应用程序
- 资源库 - 运行Shell脚本(拉到最下面)- 双击
- 输入框内容填写
nohup /Applications/WeChat2.app/Contents/MacOS/WeChat >/dev/null 2>&1 &
- 保存,填写名称、位置(应用程序)
更改应用图标
1、进入“应用程序” 2、右键微信程序 - 显示简介 3、把新图标拖动到顶部小图标上
使用AI分析网站访问日志
简介
我的服务器后台运维工具使用了宝塔面板,其中功能“日志 - 网站日志”记录了我博客的访问日志。
AI分析网站访问日志
把日志导出到本地,然后使用AI分析访问日志,AI帮我分析了下,结果如下:
🔍 访问行为分析
- 潜在恶意扫描行为 以下请求路径较为敏感,可能暗示有恶意扫描、漏洞探测或暴力破解尝试:
/resetpw.php、/xmlrpc.php、/archivarix.cms.php、/tinyfilemanager.php:常见被攻击路径
/sftp-config.json、/.vscode/sftp.json:攻击者可能在寻找开发配置文件
多次请求 /webuploader/server/preview.php:试图探测后台文件上传接口
来自 IP 51.91.249.11 的连续 WordPress 路径探测(wlwmanifest.xml, xmlrpc.php 等):这是典型的WordPress指纹探测
- 正常访客请求 /, /blog/rss.xml、/img/favicon.ico:为站点主页、RSS订阅、图标等常规请求
状态码 200,访问频繁,访问者为浏览器(如 iPhone、Mac、Windows 等 User-Agent)均为正常用户行为。
- 搜索引擎爬虫活动 日志中包含大量来自搜索引擎爬虫(bot)的访问:
Baiduspider:百度蜘蛛
Googlebot:谷歌爬虫
bingbot:Bing爬虫
AhrefsBot、Bytespider、GPTBot、OAI-SearchBot:SEO工具和AI相关爬虫
这些请求主要访问页面、文档、标签、robots.txt 和 sitemap 文件,目的是为内容收录。
⚠️ 问题与建议 ❗安全风险 多个恶意IP尝试访问敏感或不存在路径,说明网站存在被扫描和攻击的风险,建议:
配置 Web 应用防火墙(WAF)
禁止访问无效脚本路径(如 /resetpw.php)
限制频繁请求同一资源的 IP
安装 Fail2Ban 等工具防止暴力破解
🧭 SEO优化 robots.txt 请求大量为 404,说明你网站没有设置 robots 文件。
建议创建 /robots.txt 文件,引导搜索引擎正确爬取
示例内容:
txt 复制 编辑 User-agent: * Disallow: Sitemap: https://yourdomain.com/sitemap.xml 🌐 用户设备统计(大致) 访问设备以 iPhone设备 和 Windows 桌面 为主
浏览器类型主要为:
Chrome(多版本)
Safari(尤其在 iOS)
Firefox(少量)
📊 总结(简洁版) 类别 说明 正常访问 多为首页、RSS订阅、图片资源等访问 恶意扫描 针对 /xmlrpc.php、/webuploader 等路径频繁请求 搜索引擎爬虫 Baidu、Google、Bing、Ahrefs、GPTBot等广泛爬取网站内容 安全建议 增加防火墙、设置robots.txt、限制敏感路径访问
R开发小笔记
简介
记录R
开发过程中的一些小笔记
安装指定版本依赖包
背景:项目工程迁移到新环境的时候,需要执行install.packages
重新安装包,这时候默认是安装新版本的依赖包,然后导致现有代码可能出现不兼容的情况。
解决:安装原项目工程的指定版本依赖包
- 前往
CRAN
查看依赖包的历史版本 - 在
R
工程里安装指定版本 - 安装脚本如下:
# 安装并加载 devtools
install.packages("devtools")
library(devtools)
# 安装指定版本的包,例如 dplyr 的 1.0.0 版本
install_version("dplyr", version = "1.0.0")
⚠️ 注意:需要确保指定的版本存在于 CRAN 存档中。
验证安装的版本:
# 输出依赖包的版本号
packageVersion("dplyr")
第一次使用AI编程
xxx 略
macOS使用DBeaver迁移数据库
背景
最近换电脑,重新搭建工作环境,需要把以前电脑上本地数据库的数据给迁移过来。
过程
我用的是DBeaver数据库管理工具,本次操作是基于该工具进行。
整体思路:利用数据库管理工具导出旧数据库结构和数据的.sql
文件,然后在新的数据库中导入。
步骤
1、导出
旧的数据库结构及数据为
.sql
文件
- 右键点击源数据库,选择“工具 - 转储数据库”,显示弹窗
- “弹窗 - 选择需要导出的对象”:根据提示选择需要导出的数据库、表(可全选),点击“下一步”
- “弹窗 - 导出配置”:选择导出的路径(默认就行),点击“开始”,等待导出完成
2、导入
把旧的数据导入到新数据库
- “DBeaver - 左侧 - localhost - 数据库”:右键新建数据库,数据库名称、字符集、排序规则和旧数据库保持一致
- “DBeaver”打开
.sql
文件 - “工具栏 - 数据源”选择:本地环境
localhost
- “工具栏 - 数据库”选择:本地环境
localhost
下刚才新建的数据库 - 点击“sql编辑器 - 面板左侧 - 执行 SQL 脚本”,等待执行完成
macOS上搭建新的工作环境
背景
之前的电脑是Intel芯片的MacBook Pro,最近新入手了Apple M芯片的MacBook Pro,需要迁移工作环境,过程比预期的麻烦点,记录下相关的事情。
这里的“麻烦”,主要是因为旧的电脑用的很多年了,很多本地环境搭建好了很习惯了,新电脑从零恢复到原有顺手的环境需要一个时间。
迁移方案
macOS 迁移助理
搜索过两个macOS之间迁移的方案,发现可以用苹果的“迁移助理”可以无缝迁移,但是根据网友的反馈似乎存在不可控的问题,所以放弃了。 另外,以前用“时间胶囊”进行系统重装恢复,踩了坑,白白浪费几个小时。
所以本次还是选择手动迁移。资料通过 SSD 硬盘转移,速度很快。工作软件和配置信息逐步迁移。
手动迁移
数据迁移
数据迁移比较简单,我用固态硬盘,复制粘贴,基本1~2小时内可以搞定所有,比时间胶囊快多了。
软件迁移 ✅
考虑到一些环境配置或软件配置的原因,新的系统创建的用户名也和旧的保持一致。另外,macOS版本及芯片不一样,所以软件根据实际需求慢慢下载安装最新版本。
根据我的实际需求,分为日常实用、产品、开发几个方面。
我的软件列表
以前电脑上安装了很多软件,这次只优先安装了实用频率最高的。
基础软件
- ClashVerge
- Chrome
- Snipase(截图)
- Skim(PDF)
- Typora v0.11.18(MarkDown)
- Pandoc(md to doc 转换插件)
- Pandoc word 模板
- WPS Office
- 微信
- Keka(压缩解压)
- Axure RP 9
- Axure Library (antd)
- ToDesk(远程协助)
- RustDesk(远程协助)
- File Zilla(FTP)
- Obsidian(MarkDown / 知识库)
- draw.io(流程图)
- Rime 输入法(鼠须管)
- Rime 配置:雾凇拼音
- Easydict 翻译软件
- 文颜 MarkDown文章排版工具
- ice(隐藏菜单栏图标)
开发工具
- VS Code
- DBeaver(数据库管理)
- Sourcetree
- RStudio(R开发)
- IntelliJ IDEA
- Trace - 国际版(AI编程)
- Windsurf(AI编程)
- apifox(API调试)
- 微信开发者工具
开发环境
macOS 配置
终端 - 代理
.zshrc
代理配置(别名):
alias proxy="
export https_proxy=http://127.0.0.1:7897;
export http_proxy=http://127.0.0.1:7897;
export all_proxy=socks5://127.0.0.1:7897;"
alias unproxy="
unset https_proxy;
unset http_proxy;
unset all_proxy"
- 终端临时代理(退出失效):
export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897
Homebrew
Apple M芯片安装Homebrew需额外添加到环境变量:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
终端 - Redis别名
.zshrc
redis 别名配置:
# redis-server
alias redis="redis-server"
Rime 配置
# 皮肤横排展示
style:
candidate_list_layout: linear # stacked | linear 皮肤横竖排显示是调整这个
# 候选词
menu:
page_size: 9 # 候选词个数