动态 Memos 前端查看器(API访问) 
ymz316
3天前

最近几天对博客进行了调整:

    1. 将 plain 主题做了修改和简化生成了 sleek 主题。
    1. 将主题内的 memos 动态用 AI 适配并生产出可用于任意主题的 memos 插件 。
    1. 移除将主题内置的订阅,用 AI 生成出可用于任意主题的 FriendsRss 插件。
    1. 用 AI 生成出可用于任意主题的 Heatmap 热力图插件。

#typecho

总算用 AI 将博客友链订阅插件做出来了,tokens 耗费 7 块。原来通过 crontab 执行 CLI 命令 可以不占 FPM 进程,从而避免了因抓取feed 时造成博客访问卡顿的问题。

最近网站服务经常故障,看来得找个时间换一下系统了。

使用 Let's Encrypt 给自己的网站配置 ssl 免费证书,原来这么简单。

# 1. 安装 Certbot 及 Apache 插件
apt update
apt install certbot python3-certbot-apache

# 2. 运行自动配置命令(替换成你的域名)
certbot --apache -d yourdomain.com -d www.yourdomain.com

当出现 python 版本不兼容时,使用 snap 方法来保底

# 1. 先卸载当前的 certbot(通过 apt 安装的)
apt remove certbot python3-certbot-apache

# 2. 安装 snapd(如果没有的话)
apt update
apt install snapd

# 3. 确保 snapd 是最新版本
snap install core
snap refresh core

# 4. 通过 snap 安装 certbot
snap install --classic certbot

# 5. 创建软链接(让 certbot 命令可用)
ln -s /snap/bin/certbot /usr/bin/certbot

# 7. 现在可以正常使用了
certbot --apache -d webstatus.hollowman.cn

如果之前你配置过其他的ssl 免费证书,certbot 这个工具会自动找到配置文件并进行修改。

现在系统使用出现魔幻问题时,AI chat 实在不如 AI api。困扰我好久的两个问题在多个 chat AI 答复 100% 可行的笑话中离去,然后在 #ClaudeCode 中完美解决了。

#ClaudeCode 的 Superpowers 技能做了一个企业月报系统,看起来不错的样子。

激动的用 #ClaudeCode 给我 #typecho 框架的博客开发了一款文章热力图插件。

通过 #php 函数来获取 #Artalk 评论数,解决了 js 获取难以适配无限加载的问题,更具备了一定的自定义功能。

/**
 * 获取 Artalk 指定页面的评论数(0 则返回空字符串)
 * @param string $pageKey 页面唯一标识
 * @param string $server Artalk 服务地址
 * @param string $siteName 站点名称
 * @return string 评论数量(0返回空字符串)
 */
function getArtalkCommentCount($pageKey, $server = 'http://localhost:8082', $siteName = 'memos动态') {
    $apiUrl = rtrim($server, '/') . '/api/v2/stats/page_comment';
    $params = http_build_query([
        'page_keys' => $pageKey,
        'site_name' => $siteName
    ]);
    
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => $apiUrl . '?' . $params,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 5,
        CURLOPT_SSL_VERIFYPEER => false
    ]);
    
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCode !== 200 || !$response) {
        return '';  // 失败时返回空字符串
    }
    
    $data = json_decode($response, true);
    $count = $data['data'][$pageKey] ?? 0;
    
    // 如果为0则返回空字符串,否则返回数字
    return $count == 0 ? '' : (string)$count;
}