跳到主要内容

微信公众号素材库复制图片链接

· 阅读需 3 分钟

简介

微信公众号管理后台素材库中的图片,复制图片链接比较麻烦,需要点击图片查看,然后鼠标右键复制图标地址,这里基于油猴插件(Tampermonkey)写一个js脚本,用于一键复制微信公众号素材库中的图片链接。

使用场景

写文章或者程序的时候,可能需要插入图片URL,通过该脚本可以很丝滑的复制微信公众号素材库中的图片链接。

效果示例

效果示例

安装脚本

油猴脚本(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优化

· 阅读需 5 分钟

简介

我这个博客是基于 Docusaurus 搭建的,有配置一些全局的 SEO 信息,也有提供 robots.txt,sitemap.xml 等。但是单页的 SEO 信息还是比较欠缺,所以借用 AI 来生成单页的 SEO 信息。

Front matter 规范

页面内容是使用 Markdown 编写的,所以 SEO 信息是按照 Front matter 规范来写。
Front matter是 Markdown 文件的元数据,使用YAML语法编写,Docusaurus 会读取这些元数据来生成 SEO 信息。
本页面AI生成的 Front matter 元数据示例如下:

Markdown 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 元数据可以参考链接。在本博客中,我主要填写titleslugdescriptionkeywords。 比如按照上面的 Front matter 元数据,生成的 SEO 信息如下:

html meta
<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 matterHTML Meta说明
titleog:titletitle 标签内容,显示在浏览器标签页上和搜索引擎结果页标题部分
slugurl自定义 url,生成语义化url,有助于搜索引擎理解页面主题
descriptiondescriptionmeta description 标签内容,显示在搜索引擎结果页描述部分
keywordskeywordsmeta keywords 标签内容,显示在搜索引擎结果页关键词部分
datearticle:published_time发布时间,有助于搜索引擎优先展示较新内容

(实践)优化产品经理栏目下的文档

大量文档批量处理

最近在产品经理栏目下添加了大量文档,文档数量太多,一个一个操作太麻烦了,借助AI编程工具批量处理:

  • Windsurf
  • Trae

AI 对话提示词

使用 TraeWindsurf 打开博客工程目录,然后打开AI对话框,输入以下提示词:

提示词
`docs/product-manager/ai-pm/`下面的所有`.md`文件按照 fornt matter 规范生成title、slug、description、keywords

根据对话框提示,选择接受对应的修改就行了。

图1 AI对话过程: 图片alt

图2 SEO 结果示例 文章页面链接图片alt

白嫖图床测试

· 阅读需 1 分钟

简介

白嫖图床测试

图床

MagicEden

一个NFT 平台,目前没有外链限制。

图片alt

SM.MS(smms.app)

有免费额度,需用smms.app绕过域名限制。

百度图片下载链接

利用接口转发绕过其他平台的图床显示

image src
https://image.baidu.com/search/down?thumburl=https://baidu.com&url=图片链接

示例:
下图原始地址为微信公众号图床地址。 微信公众号图床

微信公众号图床

在公众号和小程序里用很舒服,但是禁止外链。

示例:
微信公众号图床

参考

微信多开(苹果电脑)

· 阅读需 2 分钟

简介

在苹果电脑(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分析网站访问日志

· 阅读需 3 分钟

简介

我的服务器后台运维工具使用了宝塔面板,其中功能“日志 - 网站日志”记录了我博客的访问日志。

AI分析网站访问日志

把日志导出到本地,然后使用AI分析访问日志,AI帮我分析了下,结果如下:

🔍 访问行为分析

  1. 潜在恶意扫描行为 以下请求路径较为敏感,可能暗示有恶意扫描、漏洞探测或暴力破解尝试:

/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指纹探测

  1. 正常访客请求 /, /blog/rss.xml、/img/favicon.ico:为站点主页、RSS订阅、图标等常规请求

状态码 200,访问频繁,访问者为浏览器(如 iPhone、Mac、Windows 等 User-Agent)均为正常用户行为。

  1. 搜索引擎爬虫活动 日志中包含大量来自搜索引擎爬虫(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开发小笔记

· 阅读需 2 分钟

简介

记录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")

macOS使用DBeaver迁移数据库

· 阅读需 2 分钟

背景

最近换电脑,重新搭建工作环境,需要把以前电脑上本地数据库的数据给迁移过来。

过程

我用的是DBeaver数据库管理工具,本次操作是基于该工具进行。

整体思路:利用数据库管理工具导出旧数据库结构和数据的.sql文件,然后在新的数据库中导入。

步骤

1、导出

旧的数据库结构及数据为.sql文件

  • 右键点击源数据库,选择“工具 - 转储数据库”,显示弹窗
  • “弹窗 - 选择需要导出的对象”:根据提示选择需要导出的数据库、表(可全选),点击“下一步”
  • “弹窗 - 导出配置”:选择导出的路径(默认就行),点击“开始”,等待导出完成

2、导入

把旧的数据导入到新数据库

  • “DBeaver - 左侧 - localhost - 数据库”:右键新建数据库,数据库名称、字符集、排序规则和旧数据库保持一致
  • “DBeaver”打开.sql文件
  • “工具栏 - 数据源”选择:本地环境localhost
  • “工具栏 - 数据库”选择:本地环境localhost下刚才新建的数据库
  • 点击“sql编辑器 - 面板左侧 - 执行 SQL 脚本”,等待执行完成

macOS上搭建新的工作环境

· 阅读需 4 分钟

背景

之前的电脑是Intel芯片的MacBook Pro,最近新入手了Apple M芯片的MacBook Pro,需要迁移工作环境,过程比预期的麻烦点,记录下相关的事情。

这里的“麻烦”,主要是因为旧的电脑用的很多年了,很多本地环境搭建好了很习惯了,新电脑从零恢复到原有顺手的环境需要一个时间。

迁移方案

macOS 迁移助理

搜索过两个macOS之间迁移的方案,发现可以用苹果的“迁移助理”可以无缝迁移,但是根据网友的反馈似乎存在不可控的问题,所以放弃了。 另外,以前用“时间胶囊”进行系统重装恢复,踩了坑,白白浪费几个小时。

所以本次还是选择手动迁移。资料通过 SSD 硬盘转移,速度很快。工作软件和配置信息逐步迁移。

手动迁移

数据迁移

数据迁移比较简单,我用固态硬盘,复制粘贴,基本1~2小时内可以搞定所有,比时间胶囊快多了。

软件迁移 ✅

考虑到一些环境配置或软件配置的原因,新的系统创建的用户名也和旧的保持一致。另外,macOS版本及芯片不一样,所以软件根据实际需求慢慢下载安装最新版本。

根据我的实际需求,分为日常实用、产品、开发几个方面。

我的软件列表

以前电脑上安装了很多软件,这次只优先安装了实用频率最高的。

基础软件

开发工具

开发环境

macOS 配置

终端 - 代理

  • .zshrc 代理配置(别名):
.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"
  • 终端临时代理(退出失效):
.zshrc
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 别名配置:
.zshrc
# redis-server
alias redis="redis-server"

Rime 配置

squirrel.yaml
# 皮肤横排展示
style:
candidate_list_layout: linear # stacked | linear 皮肤横竖排显示是调整这个
default.yaml
# 候选词
menu:
page_size: 9 # 候选词个数

AI比腾讯云的工单更好用

· 阅读需 3 分钟

简介

最近写了一个小工具爬另一个网站的数据,在本地测试没问题,部署到腾讯上访问目标网站时提示连接异常java.net.ConnectException。借助 AI(Grok) 、腾讯云工单进行问题排查,最后还是靠 AI 解决问题。深切体会到腾讯云工单系统的落后与 AI 的良好体验。

问题排查过程

个人排查(AI - Grok)

  • 服务器第一次访问目标网站就失败,主观上排除 IP 拉黑的问题
  • 代码排查:因为同样的代码访问其他网站没问题,所以排除代码问题
  • 目标网站连接排查:按照 AI(Grok) 的指引进行ping、curl测试
  • 服务器网络配置检查
  • 服务器防火墙检查
  • DNS 检查
  • 网络连通性测试telnet、traceroute
  • 其他目标地址验证
  • 其他云连通性验证(腾讯云、华为云)

根据我自己及 AI(Grok) 的帮助排查了一轮,问题没有解决,也基本确定服务器配置没问题。然后提交腾讯云人工工单,并且附上了我的排查日志(命令及执行结果)。

腾讯云人工客服

  • 对话1:腾讯云人工工单并没有看日志,第一个回复是让我提交ping命令截图

(日志文件已包含该记录)

  • 对话2:反馈他那边没问题,让我换一个服务器试试

(我个人已测过,并有说明该情况。并提供防火墙配置日志)

总结:腾讯云的人工工单服务每次对话要等几分钟甚至10几分钟,他们内部也没有实用AI工具分析我的日志。排查的效率远比我自己的排查效率低。

最终结果

我问AI(Grok)如果IP被拉黑是否会存在该问题,得到可能答复后,我通过腾讯云集成的AI(deepseek)找到切换IP的功能,按照操作指引切换IP,问题解决。

这个服务器IP在我这里是第一次访问目标网站就被拦截,完全没想到老早之前就被拉黑了。

在整个问题解决的过程中,腾讯云人工工单给我的帮助是0 ,全是我自己靠 AI 搞定的。