mirror of
https://github.com/Wcowin/Mkdocs-Wcowin.git
synced 2025-07-20 17:06:34 +00:00
Compare commits
8 Commits
08e8327c7b
...
19a99d9e30
Author | SHA1 | Date | |
---|---|---|---|
19a99d9e30 | |||
b71afb6257 | |||
27fa014569 | |||
7d33dcf50d | |||
c32ed1ac9f | |||
8e6f69e268 | |||
dd23049a5f | |||
1ab86a517f |
@ -1 +1 @@
|
||||
{"cache_date": "2025-06-03", "page_authors": {}}
|
||||
{"cache_date": "2025-06-04", "page_authors": {}}
|
10
.github/workflows/ci.yml
vendored
10
.github/workflows/ci.yml
vendored
@ -35,5 +35,15 @@ jobs:
|
||||
# - run: pip install mkdocs-rss-plugin
|
||||
- run: pip install mkdocs-material
|
||||
- run: pip install --upgrade --force-reinstall mkdocs-material
|
||||
- run: pip install requests
|
||||
- run: mkdocs gh-deploy --force
|
||||
env:
|
||||
# AI摘要配置
|
||||
AI_SUMMARY_CI_ENABLED: true # CI环境启用AI摘要
|
||||
AI_SUMMARY_LOCAL_ENABLED: false # 本地环境禁用AI摘要
|
||||
AI_SUMMARY_CI_ONLY_CACHE: false # CI环境允许生成新摘要
|
||||
AI_SUMMARY_CI_FALLBACK: true # CI环境启用备用摘要
|
||||
# API密钥(取消注释以启用真实AI服务)
|
||||
DEEPSEEK_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }}
|
||||
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
||||
|
||||
|
@ -241,7 +241,7 @@ status: new
|
||||
!!! pied-piper1 "About me"
|
||||
- [x] Hey, I'm [Wcowin](https://wcowin.work/VitePress/){target=“_blank”}~
|
||||
- [x] 咖啡重度爱好者
|
||||
- [x] 热爱(xiā)折腾技术/Math,目前的研究领域是[密码学](../blog/Cryptography/index.md)
|
||||
- [x] 热爱(xiā)折腾技术/Math,目前的研究领域是[密码学](https://wcowin.work/blog/Cryptography/)
|
||||
- [x] 读书明志可识春秋;诗词爱好者;喜欢村上春树;擅长羽毛球
|
||||
- [x] 清醒,知趣,明得失,知进退
|
||||
|
||||
|
456
docs/blog/websitebeauty/MkDocs-AI-Hooks.md
Normal file
456
docs/blog/websitebeauty/MkDocs-AI-Hooks.md
Normal file
@ -0,0 +1,456 @@
|
||||
---
|
||||
title: MkDocs文档AI摘要
|
||||
tags:
|
||||
- Mkdocs
|
||||
status: new
|
||||
---
|
||||
|
||||
# MkDocs AI Hooks
|
||||
|
||||
仓库地址:https://github.com/Wcowin/mkdocs-ai-hooks
|
||||
|
||||
<p align="center">
|
||||
<img src="https://img.shields.io/badge/MkDocs-Hooks-526CFE?style=for-the-badge&logo=MaterialForMkDocs&logoColor=white" alt="MkDocs Hooks">
|
||||
<img src="https://img.shields.io/badge/AI_Powered-DeepSeek-FF6B35?style=for-the-badge&logo=openai&logoColor=white" alt="AI Powered">
|
||||
<img src="https://img.shields.io/badge/Python-3.7+-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python 3.7+">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="/">中文</a> | <a href="https://github.com/Wcowin/mkdocs-ai-hooks/blob/main/README-en.md">English</a>
|
||||
</p>
|
||||
|
||||
🚀 **您的MkDocs文档首选智能摘要!**
|
||||
这个项目利用MkDocs hooks,为您的技术文档和博客添加AI驱动的摘要生成和智能阅读统计功能。
|
||||

|
||||

|
||||
|
||||
网站效果预览:https://wcowin.work/Mkdocs-Wcowin/blog/Mkdocs/mkfirst/
|
||||
|
||||
## ✨ 功能特性
|
||||
|
||||
### AI智能摘要
|
||||
- **自动生成文章摘要**:使用DeepSeek API生成高质量的80-120字摘要
|
||||
- **多语言支持**:支持中文、英文等多种语言
|
||||
- **多API服务支持**:支持OpenAI、Claude等多种AI服务
|
||||
- **智能内容清理**:自动过滤YAML、HTML、代码块等格式内容
|
||||
- **备用摘要机制**:API失败时提供基于规则的智能摘要
|
||||
- **高效缓存系统**:避免重复API调用,7天智能过期
|
||||
- **灵活配置**:支持文件夹级别和页面级别的精确控制
|
||||
|
||||
### 智能阅读统计(可选)
|
||||
- **精准中文字符统计**:专门优化的中文内容识别
|
||||
- **智能代码检测**:识别多种编程语言和命令行代码
|
||||
- **阅读时间估算**:基于中文阅读习惯的400字/分钟计算
|
||||
- **美观信息展示**:使用MkDocs Material风格的信息框
|
||||
|
||||
### 智能化特性
|
||||
- **自动语言识别**:支持30+编程语言和标记语言
|
||||
- **内容类型检测**:区分代码、配置、命令行等不同内容
|
||||
- **缓存优化**:LRU缓存提升性能
|
||||
- **错误处理**:完善的异常处理和日志记录
|
||||
|
||||
## 📦 安装
|
||||
|
||||
### 方法1
|
||||
直接下载(推荐)
|
||||
在releases页面下载,解压后将以下文件放入您的MkDocs项目的docs/overrides/hooks中:
|
||||
https://github.com/Wcowin/mkdocs-ai-hooks/releases
|
||||
|
||||
|
||||
或者下载上方hooks目录下的两个Python文件:
|
||||
|
||||
- `ai_summary.py`:AI摘要生成器
|
||||
|
||||
- `reading_time.py`:阅读时间统计器
|
||||
|
||||
```bash
|
||||
# 放置到您的项目目录
|
||||
mkdir -p docs/overrides/hooks/
|
||||
mv ai_summary.py docs/overrides/hooks/
|
||||
mv reading_time.py docs/overrides/hooks/
|
||||
```
|
||||
放置的位置如下:
|
||||

|
||||
|
||||
在 `mkdocs.yml` 中theme下添加custom_dir:
|
||||
```yaml
|
||||
# 可选:Material主题配置
|
||||
theme:
|
||||
name: material
|
||||
custom_dir: docs/overrides #一定要有!一定要有!
|
||||
features:
|
||||
- content.code.copy
|
||||
- content.code.select
|
||||
```
|
||||
|
||||
### 方法2
|
||||
|
||||
使用Git克隆
|
||||
```bash
|
||||
git clone https://github.com/Wcowin/mkdocs-ai-hooks.git
|
||||
cd mkdocs-ai-hooks
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 依赖安装
|
||||
```bash
|
||||
pip install requirements.txt
|
||||
```
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. 配置MkDocs
|
||||
先执行一次`mkdocs build`,生成缓存文件
|
||||
```bash
|
||||
mkdocs build
|
||||
```
|
||||
在 `mkdocs.yml` 中添加hooks,theme下添加custom_dir:
|
||||
```yaml
|
||||
hooks:
|
||||
- docs/overrides/hooks/ai_summary.py # 添加AI摘要hook
|
||||
- docs/overrides/hooks/reading_time.py # 添加统计阅读时间hook
|
||||
|
||||
# 可选:Material主题配置
|
||||
theme:
|
||||
name: material
|
||||
custom_dir: docs/overrides #一定要有!!
|
||||
features:
|
||||
- content.code.copy
|
||||
- content.code.select
|
||||
```
|
||||
|
||||
### 2. 在ai_summary.py中配置需要AI摘要的目录
|
||||
```python
|
||||
# 📂 可自定义的文件夹配置
|
||||
self.enabled_folders = [
|
||||
'blog/', # blog文件夹
|
||||
'develop/', # develop文件夹
|
||||
# 在这里添加您想要启用AI摘要的文件夹
|
||||
]
|
||||
|
||||
# 📋 排除的文件和文件夹
|
||||
self.exclude_patterns = [
|
||||
'waline.md', 'link.md', '404.md', 'tag.md', 'tags.md',
|
||||
'/about/', '/search/', '/sitemap', 'index.md', # 根目录index.md
|
||||
]
|
||||
|
||||
# 📋 排除的特定文件
|
||||
self.exclude_files = [
|
||||
'blog/index.md',
|
||||
'blog/indexblog.md',
|
||||
'docs/index.md',
|
||||
'develop/index.md',
|
||||
]
|
||||
```
|
||||
|
||||
### 3. 在ai_summary.py中设置DeepSeek API(默认是OpenAI)
|
||||
```python
|
||||
# 在ai_summary.py中修改API配置
|
||||
'deepseek': {
|
||||
'url': 'https://api.deepseek.com/v1/chat/completions',
|
||||
'model': 'deepseek-chat',
|
||||
'api_key': os.getenv('DEEPSEEK_API_KEY', 'your-azure-api-key'),
|
||||
'max_tokens': 150,
|
||||
'temperature': 0.3
|
||||
},
|
||||
```
|
||||
|
||||
### 4. 运行MkDocs
|
||||
第一次运行时,可能需要等待一段时间,因为系统会自动生成摘要。后续运行时,系统会使用缓存数据,加快生成速度。
|
||||
```bash
|
||||
#依次运行命令
|
||||
mkdocs build
|
||||
mkdocs serve
|
||||
```
|
||||
终端输出如下:
|
||||

|
||||
|
||||
## 📖 使用指南
|
||||
|
||||
### AI摘要配置
|
||||
|
||||
#### 文件夹级别控制
|
||||
```python
|
||||
# 启用特定文件夹
|
||||
configure_ai_summary(['blog/', 'docs/', 'tutorials/'])
|
||||
|
||||
# 全局启用(除排除项)
|
||||
configure_ai_summary([''])
|
||||
```
|
||||
|
||||
#### 页面级别控制(推荐)
|
||||
在Markdown文件的YAML front matter中:
|
||||
|
||||
```yaml
|
||||
---
|
||||
title: 文章标题
|
||||
ai_summary: true # 启用AI摘要
|
||||
---
|
||||
```
|
||||

|
||||
```yaml
|
||||
---
|
||||
title: 文章标题
|
||||
ai_summary: false # 禁用AI摘要
|
||||
description: 手动摘要 # 可选
|
||||
---
|
||||
```
|
||||
|
||||
### 阅读时间配置
|
||||
|
||||
#### 排除特定页面
|
||||
```python
|
||||
# 在页面的YAML front matter中
|
||||
---
|
||||
title: 页面标题
|
||||
hide_reading_time: true # 隐藏阅读时间
|
||||
---
|
||||
```
|
||||
|
||||
## 🎨 显示效果
|
||||
|
||||
### AI摘要显示
|
||||
```markdown
|
||||
!!! info "🤖 AI智能摘要"
|
||||
本文详细介绍了MkDocs hooks的开发和使用方法,涵盖AI摘要生成、阅读时间统计等功能实现。通过DeepSeek API集成和智能缓存机制,为技术文档提供自动化的内容增强服务。
|
||||
|
||||
# 您的文章标题
|
||||
文章内容...
|
||||
```
|
||||
|
||||
### 阅读信息显示
|
||||
```markdown
|
||||
!!! info "📖 阅读信息"
|
||||
阅读时间:**3** 分钟 | 中文字符:**1247** | 有效代码行数:**45**
|
||||
|
||||
# 您的文章标题
|
||||
文章内容...
|
||||
```
|
||||
|
||||
**实际效果:**
|
||||

|
||||
|
||||
### API花费
|
||||
一次大约0.03-0.05元(中大型文档)
|
||||
可以说相当经济实惠了!
|
||||
|
||||
#### 免费openai额度获取
|
||||
|
||||
推荐使用:[chatanywhere](https://github.com/chatanywhere/GPT_API_free?tab=readme-ov-file#%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8 )
|
||||
|
||||
申请好后得到sk-开头的密钥,在ai_summary.py的多AI服务配置部分替换为以下内容:
|
||||
|
||||
```python
|
||||
'openai': {
|
||||
'url': 'https://api.chatanywhere.tech/v1/chat/completions',
|
||||
'model': 'gpt-3.5-turbo', # 或 'gpt-4', 'gpt-4-turbo'
|
||||
'api_key': os.getenv('OPENAI_API_KEY', 'your_openai_api_key'),
|
||||
'max_tokens': 150,
|
||||
'temperature': 0.3
|
||||
},
|
||||
```
|
||||
|
||||
```python
|
||||
# 默认使用的AI服务
|
||||
self.default_service = 'openai'
|
||||
```
|
||||
|
||||
|
||||
但是我这里也推荐使用[DeepSeek](https://platform.deepseek.com/usage) API,额度充足且性能优秀。
|
||||
|
||||
## ⚙️ 高级配置
|
||||
|
||||
### 自定义API服务
|
||||
```python
|
||||
# 支持其他AI服务
|
||||
self.api_config = {
|
||||
'url': 'https://your-api-endpoint.com/v1/chat/completions',
|
||||
'model': 'your-model',
|
||||
'headers': {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'Bearer YOUR_API_KEY'
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 自定义提示词
|
||||
```python
|
||||
# 修改AI摘要的提示词
|
||||
def generate_ai_summary(self, content, page_title=""):
|
||||
prompt = f"""您的自定义提示词...
|
||||
|
||||
文章标题:{page_title}
|
||||
文章内容:{content[:2500]}
|
||||
"""
|
||||
```
|
||||
|
||||
### 缓存配置
|
||||
```python
|
||||
# 修改缓存过期时间(天数)
|
||||
cache_time = datetime.fromisoformat(cache_data.get('timestamp', '1970-01-01'))
|
||||
if (datetime.now() - cache_time).days < 30: # 改为30天
|
||||
return cache_data
|
||||
```
|
||||
注意注意注意!!!
|
||||
切换api服务后,要删除site/.ai_cache这个缓存文件,才可以重新生成摘要!!!**(这个问题已经解决了,切换api服务后,会自动删除缓存文件,无需手动删除)**
|
||||
|
||||
<!-- ## 🔧 自定义开发
|
||||
|
||||
### 扩展AI服务支持
|
||||
```python
|
||||
class AISummaryGenerator:
|
||||
def add_ai_service(self, service_name, config):
|
||||
"""添加新的AI服务支持"""
|
||||
self.ai_services[service_name] = config
|
||||
|
||||
def generate_summary_with_service(self, content, service_name):
|
||||
"""使用指定服务生成摘要"""
|
||||
# 您的实现
|
||||
pass
|
||||
``` -->
|
||||
|
||||
### 自定义摘要格式
|
||||
```python
|
||||
def format_summary(self, summary, ai_service):
|
||||
"""自定义摘要显示格式"""
|
||||
return f'''!!! note "✨ 自定义摘要"
|
||||
{summary}
|
||||
|
||||
*由 {ai_service} 生成*
|
||||
'''
|
||||
```
|
||||
|
||||
## 🌍 多语言支持
|
||||
|
||||
### 英文内容优化(Todo)
|
||||
```python
|
||||
# 阅读时间计算(英文:200词/分钟)
|
||||
def calculate_english_reading_time(word_count):
|
||||
return max(1, round(word_count / 200))
|
||||
```
|
||||
|
||||
### 其他语言扩展(Todo)
|
||||
```python
|
||||
# 支持日文、韩文等
|
||||
JAPANESE_CHARS_PATTERN = re.compile(r'[\u3040-\u309F\u30A0-\u30FF]')
|
||||
KOREAN_CHARS_PATTERN = re.compile(r'[\uAC00-\uD7AF]')
|
||||
```
|
||||
|
||||
## 📊 性能优化
|
||||
|
||||
- **LRU缓存**:函数级别缓存提升性能
|
||||
- **正则预编译**:提高文本处理速度
|
||||
- **智能过滤**:减少不必要的API调用
|
||||
- **异步支持**:可扩展为异步处理(TODO)
|
||||
|
||||
## 🤝 贡献指南
|
||||
|
||||
我们欢迎各种形式的贡献!
|
||||
|
||||
1. **Fork** 这个仓库
|
||||
2. 创建您的特性分支
|
||||
3. 提交您的更改
|
||||
4. 推送到分支
|
||||
5. 打开一个 **Pull Request**
|
||||
|
||||
### 开发环境设置
|
||||
```bash
|
||||
# 克隆仓库
|
||||
git clone https://github.com/Wcowin/mkdocs-ai-hooks.git
|
||||
cd mkdocs-ai-hooks
|
||||
|
||||
# 安装依赖
|
||||
pip install -r requirements.txt
|
||||
|
||||
```
|
||||
|
||||
## 📝 更新日志
|
||||
|
||||
### v1.0.0 (2025-06-03)
|
||||
- ✨ 初始发布
|
||||
- 🤖 AI智能摘要功能
|
||||
- 📖 阅读时间统计功能
|
||||
- 💾 智能缓存系统
|
||||
- 🎯 灵活配置选项
|
||||
|
||||
### 计划功能
|
||||
- [x] 多AI服务支持(OpenAI、Claude等)
|
||||
- [x] 自动选择最佳API
|
||||
- [ ] API密钥安全处理(重要)
|
||||
- [ ] 批量处理模式
|
||||
- [ ] 统计数据导出
|
||||
- [ ] Web界面配置
|
||||
|
||||
## 🐛 问题反馈
|
||||
|
||||
如果您遇到任何问题,请在 [Issues](https://github.com/Wcowin/mkdocs-ai-hooks/issues) 中提交。
|
||||
|
||||
提交问题时请包含:
|
||||
- MkDocs版本
|
||||
- Python版本
|
||||
- 错误信息
|
||||
- 复现步骤
|
||||
|
||||
## 📄 许可证
|
||||
|
||||
本项目采用 [MIT License](LICENSE) 开源协议。
|
||||
|
||||
## 🙏 致谢
|
||||
|
||||
- [MkDocs](https://www.mkdocs.org/) - 静态站点生成器
|
||||
- [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) - 优秀的主题
|
||||
- [DeepSeek](https://deepseek.com/) - AI API服务
|
||||
- 所有贡献者和使用者
|
||||
|
||||
# Connect with me
|
||||
|
||||
<center>
|
||||
|
||||
**Telegram**
|
||||
|
||||
<p align="center">
|
||||
<a href="https://t.me/wecowin" target="_blank">
|
||||
<img src="https://pica.zhimg.com/80/v2-d5876bc0c8c756ecbba8ff410ed29c14_1440w.webp" alt="个人名片" style="border-radius: 10px;" width="50%">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
**Wechat**
|
||||
<!--  -->
|
||||
<p align="center">
|
||||
<img src="https://pic3.zhimg.com/80/v2-5ef3dde831c9d0a41fe35fabb0cb8784_1440w.webp" style="border-radius: 10px;" width="50%">
|
||||
</p>
|
||||
|
||||
</center>
|
||||
|
||||
|
||||
## Star History
|
||||
|
||||
[](https://www.star-history.com/#Wcowin/mkdocs-ai-hooks&Date)
|
||||
|
||||
|
||||
## 请作者喝杯咖啡
|
||||
|
||||
<p align="center">
|
||||
<a href="https://s1.imagehub.cc/images/2025/05/11/36eb33bf18f9041667267605b6b99bd0.jpeg" target="_blank">
|
||||
<center>
|
||||
<img src="https://s1.imagehub.cc/images/2025/05/11/36eb33bf18f9041667267605b6b99bd0.jpeg" style="width: 450px; height: auto; border-radius: 25px;" >
|
||||
</center>
|
||||
</a>
|
||||
</center>
|
||||
|
||||
<p align="center">
|
||||
如果这个项目对您有帮助,请给它一个 ⭐ Star!
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/Wcowin/mkdocs-ai-hooks/stargazers">
|
||||
<img src="https://img.shields.io/github/stars/Wcowin/mkdocs-ai-hooks?style=social" alt="Stars">
|
||||
</a>
|
||||
<a href="https://github.com/Wcowin/mkdocs-ai-hooks/network/members">
|
||||
<img src="https://img.shields.io/github/forks/Wcowin/mkdocs-ai-hooks?style=social" alt="Forks">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
📝 本项目致力于让MkDocs文档更加智能化和用户友好。如有建议或想法,欢迎交流!
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
397
docs/overrides/hooks/test.py
Normal file
397
docs/overrides/hooks/test.py
Normal file
@ -0,0 +1,397 @@
|
||||
# 备份智能摘要代码
|
||||
import re
|
||||
import json
|
||||
import hashlib
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from datetime import datetime
|
||||
from functools import lru_cache
|
||||
|
||||
class AISummaryGenerator:
|
||||
def __init__(self):
|
||||
self.cache_dir = Path("site/.ai_cache")
|
||||
self.cache_dir.mkdir(exist_ok=True)
|
||||
|
||||
# DeepSeek API配置
|
||||
self.api_config = {
|
||||
'url': 'https://api.deepseek.com/v1/chat/completions',
|
||||
'model': 'deepseek-chat',
|
||||
'headers': {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'Bearer sk-'
|
||||
}
|
||||
}
|
||||
|
||||
# 📂 可自定义的文件夹配置
|
||||
self.enabled_folders = [
|
||||
'blog/', # blog文件夹
|
||||
'develop/', # develop文件夹
|
||||
# 'about/', # about文件夹
|
||||
# 在这里添加您想要启用AI摘要的文件夹
|
||||
]
|
||||
|
||||
# 📋 排除的文件和文件夹
|
||||
self.exclude_patterns = [
|
||||
'liuyanban.md', 'link.md', '404.md', 'tag.md', 'tags.md',
|
||||
'/about/', '/search/', '/sitemap', 'index.md', # 根目录index.md
|
||||
]
|
||||
|
||||
# 📋 排除的特定文件
|
||||
self.exclude_files = [
|
||||
'blog/index.md',
|
||||
'blog/indexblog.md',
|
||||
'docs/index.md',
|
||||
'develop/index.md',
|
||||
]
|
||||
|
||||
def configure_folders(self, folders=None, exclude_patterns=None, exclude_files=None):
|
||||
"""
|
||||
配置启用AI摘要的文件夹
|
||||
|
||||
Args:
|
||||
folders: 启用AI摘要的文件夹列表
|
||||
exclude_patterns: 排除的模式列表
|
||||
exclude_files: 排除的特定文件列表
|
||||
"""
|
||||
if folders is not None:
|
||||
self.enabled_folders = folders
|
||||
if exclude_patterns is not None:
|
||||
self.exclude_patterns = exclude_patterns
|
||||
if exclude_files is not None:
|
||||
self.exclude_files = exclude_files
|
||||
|
||||
def get_content_hash(self, content):
|
||||
"""生成内容hash用于缓存"""
|
||||
return hashlib.md5(content.encode('utf-8')).hexdigest()
|
||||
|
||||
def get_cached_summary(self, content_hash):
|
||||
"""获取缓存的摘要"""
|
||||
cache_file = self.cache_dir / f"{content_hash}.json"
|
||||
if cache_file.exists():
|
||||
try:
|
||||
with open(cache_file, 'r', encoding='utf-8') as f:
|
||||
cache_data = json.load(f)
|
||||
# 检查缓存是否过期(7天)
|
||||
cache_time = datetime.fromisoformat(cache_data.get('timestamp', '1970-01-01'))
|
||||
if (datetime.now() - cache_time).days < 7:
|
||||
return cache_data
|
||||
except:
|
||||
pass
|
||||
return None
|
||||
|
||||
def save_summary_cache(self, content_hash, summary_data):
|
||||
"""保存摘要到缓存"""
|
||||
cache_file = self.cache_dir / f"{content_hash}.json"
|
||||
try:
|
||||
summary_data['timestamp'] = datetime.now().isoformat()
|
||||
with open(cache_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(summary_data, f, ensure_ascii=False, indent=2)
|
||||
except Exception as e:
|
||||
print(f"保存摘要缓存失败: {e}")
|
||||
|
||||
def clean_content_for_ai(self, markdown):
|
||||
"""清理内容,提取主要文本用于AI处理"""
|
||||
content = markdown
|
||||
|
||||
# 移除YAML front matter
|
||||
content = re.sub(r'^---.*?---\s*', '', content, flags=re.DOTALL)
|
||||
|
||||
# 移除已存在的阅读信息块和AI摘要块
|
||||
content = re.sub(r'!!! info "📖 阅读信息".*?(?=\n\n|\n#|\Z)', '', content, flags=re.DOTALL)
|
||||
content = re.sub(r'!!! info "🤖 AI智能摘要".*?(?=\n\n|\n#|\Z)', '', content, flags=re.DOTALL)
|
||||
content = re.sub(r'!!! tip "📝 自动摘要".*?(?=\n\n|\n#|\Z)', '', content, flags=re.DOTALL)
|
||||
|
||||
# 移除HTML标签
|
||||
content = re.sub(r'<[^>]+>', '', content)
|
||||
|
||||
# 移除图片,保留alt文本作为内容提示
|
||||
content = re.sub(r'!\[([^\]]*)\]\([^)]+\)', r'[图片:\1]', content)
|
||||
|
||||
# 移除链接,保留文本
|
||||
content = re.sub(r'\[([^\]]+)\]\([^)]+\)', r'\1', content)
|
||||
|
||||
# 移除代码块,但保留关键信息
|
||||
content = re.sub(r'```(\w+)?\n(.*?)\n```', r'[代码示例]', content, flags=re.DOTALL)
|
||||
|
||||
# 移除行内代码
|
||||
content = re.sub(r'`[^`]+`', '[代码]', content)
|
||||
|
||||
# 移除表格格式但保留内容
|
||||
content = re.sub(r'\|[^\n]+\|', '', content)
|
||||
content = re.sub(r'^[-|:\s]+$', '', content, flags=re.MULTILINE)
|
||||
|
||||
# 清理格式符号
|
||||
content = re.sub(r'\*\*([^*]+)\*\*', r'\1', content) # 粗体
|
||||
content = re.sub(r'\*([^*]+)\*', r'\1', content) # 斜体
|
||||
content = re.sub(r'^#+\s*', '', content, flags=re.MULTILINE) # 标题符号
|
||||
|
||||
# 移除多余的空行和空格
|
||||
content = re.sub(r'\n\s*\n', '\n\n', content)
|
||||
content = re.sub(r'^[ \t]+', '', content, flags=re.MULTILINE)
|
||||
content = content.strip()
|
||||
|
||||
return content
|
||||
|
||||
def generate_ai_summary(self, content, page_title=""):
|
||||
"""使用DeepSeek生成摘要"""
|
||||
# 优化的提示词
|
||||
prompt = f"""请为以下技术文章生成一个高质量的摘要,要求:
|
||||
|
||||
1. **长度控制**:严格控制在80-120字以内
|
||||
2. **内容要求**:
|
||||
- 准确概括文章的核心主题和关键要点
|
||||
- 突出技术特点、应用场景或解决的问题
|
||||
- 使用专业但易懂的语言
|
||||
- 避免重复文章标题的内容
|
||||
3. **格式要求**:
|
||||
- 直接返回摘要内容,无需任何前缀或后缀
|
||||
- 使用简洁的陈述句
|
||||
- 可以适当使用技术术语
|
||||
|
||||
文章标题:{page_title}
|
||||
|
||||
文章内容:
|
||||
{content[:2500]}
|
||||
|
||||
请生成摘要:"""
|
||||
|
||||
try:
|
||||
payload = {
|
||||
"model": self.api_config['model'],
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "你是一个专业的技术文档摘要专家,擅长提取文章核心要点并生成简洁准确的摘要。"
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": prompt
|
||||
}
|
||||
],
|
||||
"max_tokens": 150,
|
||||
"temperature": 0.3, # 降低随机性,提高准确性
|
||||
"top_p": 0.9
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
self.api_config['url'],
|
||||
headers=self.api_config['headers'],
|
||||
json=payload,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
if response.status_code == 200:
|
||||
result = response.json()
|
||||
summary = result['choices'][0]['message']['content'].strip()
|
||||
|
||||
# 清理可能的格式问题
|
||||
summary = re.sub(r'^["""''`]+|["""''`]+$', '', summary)
|
||||
summary = re.sub(r'^\s*摘要[::]\s*', '', summary)
|
||||
summary = re.sub(r'^\s*总结[::]\s*', '', summary)
|
||||
|
||||
return summary
|
||||
else:
|
||||
print(f"DeepSeek API请求失败: {response.status_code} - {response.text}")
|
||||
return None
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"DeepSeek API请求异常: {e}")
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"AI摘要生成异常: {e}")
|
||||
return None
|
||||
|
||||
def generate_fallback_summary(self, content, page_title=""):
|
||||
"""生成备用摘要(基于规则的智能摘要)"""
|
||||
# 移除格式符号
|
||||
clean_text = re.sub(r'^#+\s*', '', content, flags=re.MULTILINE)
|
||||
clean_text = re.sub(r'\*\*([^*]+)\*\*', r'\1', clean_text)
|
||||
clean_text = re.sub(r'\*([^*]+)\*', r'\1', clean_text)
|
||||
|
||||
# 分割成句子
|
||||
sentences = re.split(r'[\u3002\uff01\uff1f.!?]', clean_text)
|
||||
sentences = [s.strip() for s in sentences if len(s.strip()) > 15]
|
||||
|
||||
# 优先选择包含关键词的句子
|
||||
key_indicators = [
|
||||
'介绍', '讲解', '说明', '分析', '探讨', '研究', '实现', '应用',
|
||||
'方法', '技术', '算法', '原理', '概念', '特点', '优势', '解决',
|
||||
'教程', '指南', '配置', '安装', '部署', '开发', '设计', '构建'
|
||||
]
|
||||
|
||||
priority_sentences = []
|
||||
normal_sentences = []
|
||||
|
||||
for sentence in sentences[:10]: # 处理前10句
|
||||
if any(keyword in sentence for keyword in key_indicators):
|
||||
priority_sentences.append(sentence)
|
||||
else:
|
||||
normal_sentences.append(sentence)
|
||||
|
||||
# 组合摘要
|
||||
selected_sentences = []
|
||||
total_length = 0
|
||||
|
||||
# 优先使用关键句子
|
||||
for sentence in priority_sentences:
|
||||
if total_length + len(sentence) > 100:
|
||||
break
|
||||
selected_sentences.append(sentence)
|
||||
total_length += len(sentence)
|
||||
|
||||
# 如果还有空间,添加普通句子
|
||||
if total_length < 80:
|
||||
for sentence in normal_sentences:
|
||||
if total_length + len(sentence) > 100:
|
||||
break
|
||||
selected_sentences.append(sentence)
|
||||
total_length += len(sentence)
|
||||
|
||||
if selected_sentences:
|
||||
summary = '.'.join(selected_sentences) + '.'
|
||||
# 简化冗长的摘要
|
||||
if len(summary) > 120:
|
||||
summary = selected_sentences[0] + '.'
|
||||
return summary
|
||||
else:
|
||||
# 根据标题生成通用摘要
|
||||
if any(keyword in page_title for keyword in ['教程', '指南', 'Tutorial']):
|
||||
return '本文提供了详细的教程指南,通过实例演示帮助读者掌握相关技术要点。'
|
||||
elif any(keyword in page_title for keyword in ['配置', '设置', '安装', 'Config']):
|
||||
return '本文介绍了系统配置的方法和步骤,提供实用的设置建议和最佳实践。'
|
||||
elif any(keyword in page_title for keyword in ['开发', '编程', 'Development']):
|
||||
return '本文分享了开发经验和技术实践,提供了实用的代码示例和解决方案。'
|
||||
else:
|
||||
return '本文深入探讨了相关技术内容,提供了实用的方法和解决方案。'
|
||||
|
||||
def process_page(self, markdown, page, config):
|
||||
"""处理页面,生成AI摘要"""
|
||||
if not self.should_generate_summary(page, markdown):
|
||||
return markdown
|
||||
|
||||
clean_content = self.clean_content_for_ai(markdown)
|
||||
|
||||
# 内容长度检查
|
||||
if len(clean_content) < 200:
|
||||
print(f"📄 内容太短,跳过摘要生成: {page.file.src_path}")
|
||||
return markdown
|
||||
|
||||
content_hash = self.get_content_hash(clean_content)
|
||||
page_title = getattr(page, 'title', '')
|
||||
|
||||
# 检查缓存
|
||||
cached_summary = self.get_cached_summary(content_hash)
|
||||
if cached_summary:
|
||||
summary = cached_summary.get('summary', '')
|
||||
ai_service = 'cached'
|
||||
print(f"✅ 使用缓存摘要: {page.file.src_path}")
|
||||
else:
|
||||
# 生成新摘要
|
||||
print(f"🤖 正在生成AI摘要: {page.file.src_path}")
|
||||
summary = self.generate_ai_summary(clean_content, page_title)
|
||||
|
||||
if not summary:
|
||||
summary = self.generate_fallback_summary(clean_content, page_title)
|
||||
ai_service = 'fallback'
|
||||
print(f"📝 使用备用摘要: {page.file.src_path}")
|
||||
else:
|
||||
ai_service = 'deepseek'
|
||||
print(f"✅ AI摘要生成成功: {page.file.src_path}")
|
||||
|
||||
# 保存到缓存
|
||||
self.save_summary_cache(content_hash, {
|
||||
'summary': summary,
|
||||
'service': ai_service,
|
||||
'page_title': page_title
|
||||
})
|
||||
|
||||
# 添加摘要到页面最上面
|
||||
summary_html = self.format_summary(summary, ai_service)
|
||||
return summary_html + '\n\n' + markdown
|
||||
|
||||
def should_generate_summary(self, page, markdown):
|
||||
"""判断是否应该生成摘要 - 可自定义文件夹"""
|
||||
# 检查页面元数据
|
||||
if hasattr(page, 'meta'):
|
||||
# 明确禁用
|
||||
if page.meta.get('ai_summary') == False:
|
||||
return False
|
||||
|
||||
# 强制启用
|
||||
if page.meta.get('ai_summary') == True:
|
||||
return True
|
||||
|
||||
# 获取文件路径
|
||||
src_path = page.file.src_path.replace('\\', '/') # 统一路径分隔符
|
||||
|
||||
# 检查排除模式
|
||||
if any(pattern in src_path for pattern in self.exclude_patterns):
|
||||
return False
|
||||
|
||||
# 检查排除的特定文件
|
||||
if src_path in self.exclude_files:
|
||||
return False
|
||||
|
||||
# 检查是否在启用的文件夹中
|
||||
for folder in self.enabled_folders:
|
||||
if src_path.startswith(folder) or f'/{folder}' in src_path:
|
||||
folder_name = folder.rstrip('/')
|
||||
print(f"🎯 {folder_name}文件夹文章检测到,启用AI摘要: {src_path}")
|
||||
return True
|
||||
|
||||
# 默认不生成摘要
|
||||
return False
|
||||
|
||||
def format_summary(self, summary, ai_service):
|
||||
"""格式化摘要显示"""
|
||||
service_config = {
|
||||
'deepseek': {
|
||||
'icon': '🤖',
|
||||
'name': 'AI智能摘要',
|
||||
'color': 'info'
|
||||
},
|
||||
'fallback': {
|
||||
'icon': '📝',
|
||||
'name': '自动摘要',
|
||||
'color': 'tip'
|
||||
},
|
||||
'cached': {
|
||||
'icon': '💾',
|
||||
'name': 'AI智能摘要',
|
||||
'color': 'info'
|
||||
}
|
||||
}
|
||||
|
||||
config = service_config.get(ai_service, service_config['deepseek'])
|
||||
|
||||
return f'''??? {config['color']} "{config['icon']} {config['name']}"
|
||||
{summary}
|
||||
|
||||
'''
|
||||
|
||||
# 创建全局实例
|
||||
ai_summary_generator = AISummaryGenerator()
|
||||
|
||||
# 🔧 自定义配置函数
|
||||
def configure_ai_summary(enabled_folders=None, exclude_patterns=None, exclude_files=None):
|
||||
"""
|
||||
配置AI摘要功能
|
||||
|
||||
Args:
|
||||
enabled_folders: 启用AI摘要的文件夹列表,例如 ['blog/', 'docs/', 'posts/']
|
||||
exclude_patterns: 排除的模式列表,例如 ['404.md', '/admin/']
|
||||
exclude_files: 排除的特定文件列表,例如 ['blog/index.md']
|
||||
|
||||
Example:
|
||||
# 只在blog和docs文件夹启用
|
||||
configure_ai_summary(['blog/', 'docs/'])
|
||||
|
||||
# 在所有文件夹启用,但排除特定文件
|
||||
configure_ai_summary([''], exclude_files=['index.md', 'about.md'])
|
||||
"""
|
||||
ai_summary_generator.configure_folders(enabled_folders, exclude_patterns, exclude_files)
|
||||
|
||||
def on_page_markdown(markdown, page, config, files):
|
||||
"""MkDocs hook入口点"""
|
||||
return ai_summary_generator.process_page(markdown, page, config)
|
||||
|
@ -75,6 +75,7 @@ nav:
|
||||
- 2.Mkdocs配置说明(mkdocs.yml): blog/Mkdocs/mkdocs2.md
|
||||
- 3.解决Github Pages部署mkdocs自定义域名失效的问题: blog/Mkdocs/mkdocs3.md
|
||||
- Mkdocs美化/补充:
|
||||
- MkDocs文档AI摘要: blog/websitebeauty/MkDocs-AI-Hooks.md
|
||||
- 添加Mkdocs博客: blog/Mkdocs/mkdocsblog.md
|
||||
- 网页圆角化设计: blog/websitebeauty/yuanjiaohua.md
|
||||
- 添加评论系统(giscus为例): blog/websitebeauty/mkcomments.md
|
||||
@ -312,5 +313,5 @@ extra_css:
|
||||
|
||||
hooks:
|
||||
- docs/overrides/hooks/socialmedia.py
|
||||
- docs/overrides/hooks/reading_time.py
|
||||
# - docs/overrides/hooks/reading_time.py
|
||||
- docs/overrides/hooks/ai_summary.py
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "giscus是基于GitHub Discussions的开源评论系统,无需数据库,数据直接存储在GitHub中。具有无跟踪、无广告、永久免费的特点,支持多语言、自定义主题和高可配置性。系统自动同步GitHub评论更新,允许自建服务,适合开发者集成到静态网站。通过简单配置即可实现评论功能,提供与Twikoo类似的用户体验。",
|
||||
"summary": "giscus是一款基于GitHub Discussions的开源评论系统,无需数据库,数据直接存储在GitHub中。它具有无跟踪、无广告、永久免费的特点,支持多语言、自定义主题和高可配置性。系统能自动同步GitHub的评论更新,适用于静态网站集成,提供轻量级、隐私友好的评论解决方案,同时允许用户自建服务。",
|
||||
"service": "deepseek",
|
||||
"page_title": "添加评论系统(giscus为例)",
|
||||
"timestamp": "2025-06-03T15:03:13.282472"
|
||||
"timestamp": "2025-06-03T16:16:38.038207"
|
||||
}
|
6
site/.ai_cache/198ba1700861d3d81c32e4135edbe41c.json
Normal file
6
site/.ai_cache/198ba1700861d3d81c32e4135edbe41c.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"summary": "该项目为MkDocs文档系统提供AI驱动的智能摘要生成和阅读统计功能,支持OpenAI、DeepSeek等多API服务。核心特性包括自动生成80-120字高质量摘要、多语言支持、智能内容清理和高效缓存系统,同时提供精准的中文阅读统计和阅读时间估算。通过灵活的配置选项,用户可实现文件夹或页面级别的精确控制,并自定义API服务和提示词。该工具显著提升了技术文档的可读性和管理效率。",
|
||||
"service": "deepseek",
|
||||
"page_title": "MkDocs文档AI摘要",
|
||||
"timestamp": "2025-06-03T20:49:35.847514"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "2022年网站建设过程包括:10月建立Github仓库并正式建站,取消cookie确认以简化流程并保障隐私,新增首页反馈功能;6月确定采用MKdocs框架搭建网站,并完成域名注册。更新重点围绕技术架构优化和用户体验改进展开。",
|
||||
"summary": "2022年网站更新主要包括技术框架搭建和用户体验优化。6月选定MKdocs作为建站框架,10月完成Github仓库创建并启用独立域名。关键改进包括取消cookie确认弹窗以简化访问流程、增强隐私保护,并新增首页反馈功能。更新体现了从技术选型到交互优化的完整建设路径,重点关注用户友好性和数据隐私。",
|
||||
"service": "deepseek",
|
||||
"page_title": "2022网站更新记录",
|
||||
"timestamp": "2025-06-03T15:02:01.059291"
|
||||
"timestamp": "2025-06-03T16:15:36.310549"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "霞鹜文楷是一款基于日本Klee One衍生的开源中文字体,兼具仿宋和楷体特点,适合诗词及注释排版。提供多个版本(屏幕阅读版、轻便版、GB/TC版等)满足不同场景需求。作为开源项目,它解决了商业字体侵权风险,并通过深度学习补全了简繁汉字及谚文字符。用户可通过GitHub、Gitee等平台获取,支持Windows/macOS系统安装。字体采用SIL开源协议,适合网站及开发者嵌入使用。",
|
||||
"summary": "霞鹜文楷是一款基于日本FONTWORKS公司Klee One衍生的开源中文字体,兼具仿宋和楷体特点,适合诗词和注释排版。提供多个版本:屏幕阅读版、轻便版、GB/TC规范版等,支持简繁日韩字符。该字体解决了商业字体侵权风险问题,填补了开源中文字体中楷体类的空白。用户可通过GitHub、Gitee等平台获取,支持Windows/macOS系统安装。字体采用SIL Open Font License 1.1授权,适合网站和移动设备使用。",
|
||||
"service": "deepseek",
|
||||
"page_title": "修改网站字体",
|
||||
"timestamp": "2025-06-03T15:03:32.264117"
|
||||
"timestamp": "2025-06-03T16:16:50.880853"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "唐·诺曼提出的情感设计三层次理论包括本能层、行为层和反思层。本能层关注产品外观引发的即时情感反应,行为层强调使用过程中的功能性和效率,反思层涉及用户对产品的理性评价和自我形象关联。这三个层次相互影响,共同塑造用户对产品的整体体验。该理论为设计提供了系统框架,帮助平衡美学、实用性和情感价值,广泛应用于产品开发与用户体验优化。",
|
||||
"summary": "唐·诺曼提出的情感设计三层次理论包括本能层、行为层和反思层。本能层关注产品外观引发的即时情感反应,行为层强调使用过程中的功能性和效率,反思层涉及用户对产品的理性认知和自我形象关联。这三个层次相互影响,共同塑造用户对产品的整体体验。该理论为设计提供了系统框架,解释了为何某些产品即使存在功能缺陷仍能获得市场成功。",
|
||||
"service": "deepseek",
|
||||
"page_title": "唐·诺曼—情感设计的三个层次",
|
||||
"timestamp": "2025-06-03T14:58:22.109862"
|
||||
"timestamp": "2025-06-03T16:18:11.355466"
|
||||
}
|
6
site/.ai_cache/411d15b724d84b39c08a49542ab56284.json
Normal file
6
site/.ai_cache/411d15b724d84b39c08a49542ab56284.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"summary": "该技术文档展示了一个多功能测试组件,包含代码片段、数学公式、流程图及视频播放器配置等元素。支持HTML、CSS、JavaScript技术栈,提供Markdown内容管理和快速部署功能(5分钟搭建)。具备自定义主题、MIT开源协议特性,适用于构建响应式静态网站。核心组件包括天气插件、极限公式演示及CKPlayer视频播放器初始化方案。",
|
||||
"service": "deepseek",
|
||||
"page_title": "功能测试",
|
||||
"timestamp": "2025-06-03T16:14:38.445737"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "该文章介绍了通过JavaScript和CSS自定义网页鼠标样式的实现方法,重点说明了关键参数配置,包括鼠标尺寸、颜色(支持RGB值和颜色名称)以及跟随效果。提供了具体的代码示例和配置步骤,需在mkdocs.yml中引入相关文件。适用于需要个性化鼠标交互效果的网页开发场景。",
|
||||
"summary": "该文章介绍了通过JavaScript和CSS自定义网页鼠标样式的实现方法,重点说明了关键参数配置,包括鼠标尺寸、颜色(支持RGB值和颜色名称)以及圆形跟随效果。提供了具体的代码示例和配置路径,并强调需在mkdocs.yml中引入相关文件。适用于需要个性化鼠标交互效果的网页开发场景。",
|
||||
"service": "deepseek",
|
||||
"page_title": "JS实现鼠标样式",
|
||||
"timestamp": "2025-06-03T15:03:43.631382"
|
||||
"timestamp": "2025-06-03T16:16:59.645819"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "该技术方案通过git-revision-date-localized插件为MKdocs文档系统自动添加文章修订时间戳。核心实现是在CI工作流中配置选择性启用git历史检查,既避免了本地渲染时的性能损耗,又能在发布时准确显示最后更新时间。该方法优化了文档维护流程,特别适合需要展示内容时效性的技术文档网站。",
|
||||
"summary": "该技术方案通过git-revision-date-localized插件为MKdocs文档系统添加文章修订时间戳功能。核心实现是在CI工作流中优化git历史检查策略,既提升了本地渲染速度,又确保发布时准确显示最后更新时间。该方法适用于需要展示文档时效性的场景,通过修改ci.yml配置文件即可快速部署,兼顾了开发效率和功能完整性。",
|
||||
"service": "deepseek",
|
||||
"page_title": "为MKdocs添加文章修订时间戳",
|
||||
"timestamp": "2025-06-03T15:03:51.241522"
|
||||
"timestamp": "2025-06-03T16:17:09.116396"
|
||||
}
|
6
site/.ai_cache/608652015d8fccc03a9c1fb96962eb06.json
Normal file
6
site/.ai_cache/608652015d8fccc03a9c1fb96962eb06.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"summary": "该项目为MkDocs文档系统提供AI驱动的智能摘要生成和阅读统计功能,支持多语言和多种AI服务API。核心特性包括自动生成80-120字高质量摘要、智能内容清理、高效缓存系统以及精准的阅读时间估算。通过灵活的配置选项,用户可实现文件夹或页面级别的控制,并自定义API服务和提示词。该方案具有经济高效、性能优化等特点,适用于技术文档和博客的自动化摘要需求。",
|
||||
"service": "deepseek",
|
||||
"page_title": "MkDocs文档AI摘要",
|
||||
"timestamp": "2025-06-03T20:37:34.409741"
|
||||
}
|
6
site/.ai_cache/61a0c2de31fe7161b6939bbf46a5034c.json
Normal file
6
site/.ai_cache/61a0c2de31fe7161b6939bbf46a5034c.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"summary": "本文提供了多种支持作者的方式,包括通过邮箱联系、访问GitHub仓库以及通过支付宝、微信支付和Ko-fi等平台进行赞助。文章列出了具体的赞助渠道和按钮链接,并附有近期赞助者的名单及时间记录,方便读者选择合适的方式支持作者的工作。",
|
||||
"service": "deepseek",
|
||||
"page_title": "支持作者",
|
||||
"timestamp": "2025-06-03T16:14:46.358819"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文详细介绍了Mkdocs配置文件mkdocs.yml的核心配置项,包括站点基本信息、主题配色方案(支持明暗模式切换)、导航功能(目录结构、返回顶部等)、搜索优化、多语言支持以及扩展功能(代码复制、标签系统等)。重点讲解了如何通过extra_javascript和extra_css实现样式自定义,并提供了标签系统、数学公式支持等实用功能的实现方法。适合需要深度定制Mkdocs站点的开发者参考。",
|
||||
"summary": "本文详细介绍了Mkdocs配置文件mkdocs.yml的核心配置项,包括站点基本信息设置、Material主题配色方案(支持明暗模式切换)、导航功能优化(如目录跟踪、返回顶部按钮)、搜索增强功能以及Markdown扩展支持。重点讲解了标签系统实现方法、自定义CSS/JS引入方式,并提供了扩展网站功能的实践建议,如添加数学公式支持、鼠标样式和评论系统等。配置文件采用YAML语法,通过灵活组合各项参数可快速构建功能完善的文档网站。",
|
||||
"service": "deepseek",
|
||||
"page_title": "2.Mkdocs配置说明(mkdocs.yml)",
|
||||
"timestamp": "2025-06-03T15:01:44.653682"
|
||||
"timestamp": "2025-06-03T16:15:17.312523"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "MWeb Pro是一款专为macOS设计的专业Markdown写作与笔记应用,支持GFM语法扩展(含表格、LaTeX、代码块等)及多种图表库(mermaid/PlantUML等)。提供高效的图文混排功能,支持拖拽插入图片和自定义宽度。支持导出多种格式(PDF/HTML/Epub等)并可直接发布到WordPress/印象笔记等平台。内置强大的文档管理系统,支持分类树、标签和多端同步,适合知识管理、博客写作及静态网站生成。",
|
||||
"summary": "MWeb Pro是一款专为macOS设计的专业Markdown写作与笔记应用,支持GFM语法扩展(含表格、LaTeX、代码块等)及多种图表库(mermaid/PlantUML等)。提供高效的图文混排功能,支持拖拽插入图片并调整宽度,可导出为PDF/HTML/Epub等格式或直接发布至WordPress/印象笔记等平台。其文档库支持分类树、标签管理及静态网站生成,兼具快速笔记收集和全局搜索功能,适合技术写作、知识管理及博客发布场景。",
|
||||
"service": "deepseek",
|
||||
"page_title": "MWeb Pro",
|
||||
"timestamp": "2025-06-03T14:58:02.956945"
|
||||
"timestamp": "2025-06-03T16:17:50.584572"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文探讨了MkDocs中使用相对地址引用资源时的常见问题与解决方案,重点分析了图片、PDF、跨页面及静态资源的正确引用方式。核心要点包括:路径应以当前Markdown文件为基准,区分大小写,并以`docs`目录为根目录进行定位。文章提供了具体代码示例,并针对本地与线上环境差异、路径错误等典型问题给出了排查建议,强调统一目录结构对维护的重要性。",
|
||||
"summary": "本文探讨了MkDocs中使用相对地址引用资源时的常见问题与解决方案,涵盖图片、PDF、跨页面及静态资源的引用方法。重点分析了路径规范、大小写敏感性和目录结构管理,强调以当前Markdown文件为基准的相对路径写法,确保本地预览与线上部署一致性。提供了针对路径错误、资源加载失败等问题的排查建议,推荐统一资源目录结构以提升维护性。",
|
||||
"service": "deepseek",
|
||||
"page_title": "相对地址的一些问题",
|
||||
"timestamp": "2025-06-03T15:02:42.854475"
|
||||
"timestamp": "2025-06-03T16:16:12.235861"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文详细介绍了使用MkDocs框架部署静态网站到GitHub Pages的完整流程。重点包括:通过GitHub Desktop管理仓库,配置mkdocs.yml基础设置,添加GitHub Workflow实现自动化部署,以及最终发布到自定义域名。教程特别强调了目录结构管理和关键配置步骤,适合快速搭建个人博客或文档网站。配套视频和中文文档降低了技术门槛,使静态网站部署更加高效便捷。",
|
||||
"summary": "本文介绍了使用MkDocs构建静态网站并部署到GitHub Pages的完整流程。重点讲解了通过GitHub Desktop管理仓库、配置mkdocs.yml文件、设置GitHub Actions自动化部署等关键步骤,并提供了Material主题的配置建议。该方法适合快速搭建技术文档或博客网站,具有版本控制友好、部署简单的特点,最后还提供了实时预览和自定义域名的实现方式。",
|
||||
"service": "deepseek",
|
||||
"page_title": "1.利用Mkdocs部署静态网页",
|
||||
"timestamp": "2025-06-03T15:01:32.540524"
|
||||
"timestamp": "2025-06-03T16:15:07.175758"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "MIT许可证授予用户自由使用、修改、分发软件的广泛权利,仅要求保留版权声明和许可条款。该许可证明确声明软件按\"原样\"提供,不承担任何质量担保或法律责任,适用于希望最大限度共享代码的开源项目。典型应用场景包括商业和学术领域的软件二次开发与分发。",
|
||||
"summary": "MIT许可证授予用户自由使用、修改、分发软件的广泛权利,仅要求保留版权声明和许可条款。该许可证明确声明软件不提供任何担保,作者不对使用后果承担责任。作为宽松开源协议,MIT允许商业用途和私有修改,是开发者广泛采用的标准许可之一。",
|
||||
"service": "deepseek",
|
||||
"page_title": "许可声明",
|
||||
"timestamp": "2025-06-03T15:01:24.607113"
|
||||
"timestamp": "2025-06-03T16:14:56.187919"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文介绍了使用MkDocs构建网站时的性能优化方法,包括采用WebP等现代图片格式压缩资源、通过CDN分发静态文件加速访问,以及优化git插件配置提升本地渲染效率。重点推荐jsDelivr CDN服务和开发/生产环境差异化配置策略,建议使用Lighthouse工具验证优化效果。这些措施能有效降低页面加载延迟,提升用户体验。",
|
||||
"summary": "本文介绍了使用MkDocs构建网站时的性能优化方法,包括采用WebP等高效图片格式压缩资源、通过CDN分发静态文件减少延迟,以及优化git插件配置加速本地渲染。建议开发时禁用非必要插件,使用Lighthouse工具测试优化效果。这些措施能显著提升网站加载速度和用户体验。",
|
||||
"service": "deepseek",
|
||||
"page_title": "加速网站访问的一些心得",
|
||||
"timestamp": "2025-06-03T15:02:53.389962"
|
||||
"timestamp": "2025-06-03T16:16:20.040248"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "该技术文档介绍了三种网页背景特效的实现方法:雪花、樱花和粒子效果。核心是通过JavaScript动态加载特效脚本,并利用LocalStorage存储用户偏好设置来控制特效显示。代码示例展示了如何通过DOM操作插入外部脚本,适用于需要增强页面视觉吸引力的场景,同时支持用户自定义显示选项。",
|
||||
"summary": "该技术文档介绍了三种网页背景特效的实现方法:雪花、樱花和粒子效果。核心是通过JavaScript动态加载特效脚本,并利用LocalStorage控制特效的显示状态。雪花特效通过检测LocalStorage标志决定是否加载外部JS文件,其他特效也采用类似实现方式。这些轻量级特效可增强网页视觉体验,适用于节日主题或装饰性页面需求。",
|
||||
"service": "deepseek",
|
||||
"page_title": "背景特效",
|
||||
"timestamp": "2025-06-03T15:03:01.635832"
|
||||
"timestamp": "2025-06-03T16:16:30.348375"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "该网站2024年更新主要聚焦性能优化与功能改进,包括持续优化页面流畅度、启用CDN加速、精简冗余代码、美化UI设计。技术层面引入自动新标签页打开功能,迁移图片至SMMS提升稳定性,并集成git-revision-date-localized-plugin记录文档时间。内容方面更新了MKdocs教程系列,同时修复了页脚显示等细节问题。全站通过代码瘦身和资源优化显著提升了访问速度。",
|
||||
"summary": "该网站2024年持续优化性能与用户体验,主要改进包括:通过CDN加速提升访问速度,精简冗余JS/CSS代码,优化UI设计和注脚显示,迁移图片至稳定图床。技术层面引入自动新标签页打开功能,集成git-revision插件记录文档变更,并完善MKdocs教程体系。全站被主流搜索引擎收录,友链扩展至16个,同时保持代码简洁性与可维护性。",
|
||||
"service": "deepseek",
|
||||
"page_title": "2024网站更新记录",
|
||||
"timestamp": "2025-06-03T15:02:25.536842"
|
||||
"timestamp": "2025-06-03T16:15:55.975583"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "2023年网站持续优化升级,主要改进包括:引入AI问答机器人(25条/月限制)、新增多语言支持(含台湾地区)、建立Mkdocs-Wcowin主题框架。技术优化涵盖图片懒加载、Latex渲染修复、移动端适配及网站流畅度提升。新增功能模块包括博客系统、留言板(集成giscus)、友链版块和搜索功能。设计方面优化了字体、圆角风格及页面导航,同步维护国内镜像站点。",
|
||||
"summary": "2023年网站更新聚焦功能优化与体验提升,包括引入AI问答机器人(25条/月限制)、多语言支持(含台湾语言)、国内镜像站点和Mkdocs-Wcowin主题。技术改进涉及Latex渲染修复、图片懒加载、移动端适配及搜索功能实现,同时优化了网页流畅度与字体显示。新增Blog板块、留言板及友链功能,持续完善用户交互体验。",
|
||||
"service": "deepseek",
|
||||
"page_title": "2023网站更新记录",
|
||||
"timestamp": "2025-06-03T15:02:13.355389"
|
||||
"timestamp": "2025-06-03T16:15:44.900044"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文介绍了Git版本控制系统的核心操作与实用技巧,涵盖仓库创建、分支管理、冲突解决等基础功能,并重点讲解了stash暂存、rebase/merge策略选择、cherry-pick等高级用法。通过具体代码示例和场景说明,帮助开发者高效处理代码版本管理中的常见问题,优化团队协作流程。特别针对合并冲突、提交修改等痛点场景提供了标准化解决方案。",
|
||||
"summary": "本文介绍了Git版本控制的核心操作与实用技巧,涵盖仓库创建、分支管理、冲突解决等基础功能,并重点讲解了stash暂存、rebase/merge策略选择、cherry-pick热修复等高级用法。通过具体代码示例和操作图示,系统演示了如何高效处理日常开发中的版本控制需求,特别针对代码回退、提交修改等常见场景提供了专业解决方案。",
|
||||
"service": "deepseek",
|
||||
"page_title": "Git 实用技巧",
|
||||
"timestamp": "2025-06-03T14:57:53.455499"
|
||||
"timestamp": "2025-06-03T16:17:39.916746"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "该网站2025年更新记录显示持续优化流畅度,重点修复了Markdown解析、评论区重定位等关键问题,改进了友链统计和图片显示功能。更新包括教程适配最新版本、引入glightbox插件(后取消)以及界面布局优化。技术改进涉及代码重写和性能提升,同时记录了开发者个人动态。维护工作以功能修复和用户体验提升为核心。",
|
||||
"summary": "2025年网站更新主要围绕性能优化和功能改进展开,包括持续优化网站流畅度、修复Markdown解析器渲染问题、改进友链统计准确性、修复评论区定位bug。同时更新了MKdocs教程以适应最新版本,优化留言板布局并清理失效图片链接。此外还尝试引入glightbox插件提升图片查看体验,并通过代码重写显著提升加载速度。",
|
||||
"service": "deepseek",
|
||||
"page_title": "2025网站更新记录",
|
||||
"timestamp": "2025-06-03T15:02:34.235693"
|
||||
"timestamp": "2025-06-03T16:16:03.875283"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文介绍了网页圆角化设计的实现方法,重点讲解通过CSS样式文件实现图片和边框的圆角效果。具体包括在mkdocs.yml中引入CSS文件、编写圆角样式代码以及在Markdown文件中应用的方法,同时展示了按钮和卡片组件的圆角化示例。该技术可提升网页视觉美感,适用于文档网站和UI组件的美化。",
|
||||
"summary": "本文介绍了网页圆角化设计的实现方法,重点讲解通过CSS样式实现图片和边框的圆角效果。具体包括创建CSS文件并在mkdocs.yml中引入,使用border-radius属性设置圆角半径,以及在Markdown文件中应用样式的代码示例。同时展示了利用内置grid cards组件和按钮样式的圆角化实现方案,为网页UI设计提供了简洁美观的视觉解决方案。",
|
||||
"service": "deepseek",
|
||||
"page_title": "网页圆角化设计",
|
||||
"timestamp": "2025-06-03T15:04:07.194452"
|
||||
"timestamp": "2025-06-03T16:17:30.723166"
|
||||
}
|
6
site/.ai_cache/c03fd194cc489c84f164657182d47b2f.json
Normal file
6
site/.ai_cache/c03fd194cc489c84f164657182d47b2f.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"summary": "该个人简介展示了一位重庆大学生(Wcowin)的技术背景与个人特质。电子信息工程专业在读,拥有1年以上工作经验,完成3个项目并参与2个开源贡献。研究兴趣聚焦密码学,同时是技术/Math爱好者、咖啡重度用户及诗词/文学爱好者。页面采用CSS3悬停翻转动画等交互设计,包含教育历程(漯河高中至密码学硕士)、技能标签及多维度联系方式(微信/Telegram/Email)。个性签名强调\"追求自身光芒\"的独立精神。",
|
||||
"service": "deepseek",
|
||||
"page_title": "作者个人简介",
|
||||
"timestamp": "2025-06-03T16:14:29.050389"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "Tidio提供免费、无需梯子的在线聊天解决方案,通过简单的JavaScript代码集成到网站。用户只需注册账号,从设置中获取专属代码并嵌入网页即可实现实时聊天功能。该工具安装便捷,适合快速部署,满足中小型网站的客户沟通需求,且免费版功能已足够日常使用。",
|
||||
"summary": "Tidio提供免费、无需梯子的在线聊天解决方案,通过简单的JavaScript代码集成到网站。用户只需注册账号,从设置中获取专属代码并嵌入网页即可实现实时聊天功能。该工具安装便捷,适合快速部署,满足基础客服需求,尤其适合中小型网站使用。",
|
||||
"service": "deepseek",
|
||||
"page_title": "添加在线聊天",
|
||||
"timestamp": "2025-06-03T15:03:58.990507"
|
||||
"timestamp": "2025-06-03T16:17:19.927570"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "本文介绍了MkDocs文档工具的学习资源和使用指南,包括官方教程、Material主题教程以及中文教程(语雀/CSDN/知乎)。提供了快速入门的三步部署方案(GitHub Pages配置、mkdocs.yml设置、博客集成),并附有视频教程。最后请求使用者标注教程来源,支持知识共享。",
|
||||
"summary": "本文介绍了MkDocs文档工具的学习资源和使用指南,包括官方教程、Material主题、插件列表以及作者提供的中文教程(语雀、CSDN、知乎)。内容涵盖快速部署静态网站到GitHub Pages、配置mkdocs.yml文件以及添加博客功能,并附有视频教程。最后请求使用者注明教程来源并支持友链申请。",
|
||||
"service": "deepseek",
|
||||
"page_title": "0.Mkdocs教程前言",
|
||||
"timestamp": "2025-06-03T15:01:53.347846"
|
||||
"timestamp": "2025-06-03T16:15:25.888385"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "该文阐述了设计领域的核心原则与实践要点,强调简洁性、视觉美感与用户体验的平衡。作者提出六大关键维度:通过精简元素实现功能聚焦,运用美学原则提升视觉表现,以用户行为驱动交互设计,注重细节打磨品质感,鼓励创新融合突破常规,以及通过叙事引发情感共鸣。这些观点系统性地揭示了优秀设计应兼具功能性、审美价值与人文关怀的特质。",
|
||||
"summary": "该文章阐述了设计的关键原则与价值主张,强调简洁性、视觉美感与用户体验的核心地位。作者提出六项设计准则:通过精简元素实现功能聚焦;运用视觉平衡提升优雅感;以用户行为模式优化交互流程;精细化处理视觉细节;融合创新思维突破传统;借助故事性建立情感连接。这些观点系统性地揭示了优秀设计应兼具功能性、审美性与情感共鸣的特质。",
|
||||
"service": "deepseek",
|
||||
"page_title": "我对设计的一些观点",
|
||||
"timestamp": "2025-06-03T14:58:33.845211"
|
||||
"timestamp": "2025-06-03T16:18:20.132538"
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"summary": "Markdown是一种轻量级标记语言,支持纯文本编写并转换为多种格式(如HTML、PDF)。其核心语法包括标题、列表、表格、代码块等结构化元素,以及文本样式(粗体/斜体)、链接和图片插入功能。兼容HTML标签并支持特殊字符转义,适用于文档编写、笔记记录等场景。主流编辑器(如MacDown、StackEdit)提供跨平台支持,具有易读易写的特性,是技术文档和内容创作的常用工具。",
|
||||
"summary": "Markdown是一种轻量级标记语言,支持纯文本编写并转换为多种格式(如HTML/PDF)。其核心语法包括标题、列表、表格、代码块等结构化元素,以及文本样式(粗体/斜体)、链接/图片嵌入功能。兼容HTML标签并支持特殊字符转义,适用于文档编写、笔记记录等场景。主流编辑器(如MacDown、StackEdit)提供跨平台支持,具有易读易写的特性。",
|
||||
"service": "deepseek",
|
||||
"page_title": "Markdown指南",
|
||||
"timestamp": "2025-06-03T14:58:12.110675"
|
||||
"timestamp": "2025-06-03T16:18:02.463698"
|
||||
}
|
9
site/.ai_cache/service_config.json
Normal file
9
site/.ai_cache/service_config.json
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"default_service": "deepseek",
|
||||
"available_services": [
|
||||
"deepseek",
|
||||
"openai"
|
||||
],
|
||||
"summary_language": "en",
|
||||
"check_time": "2025-06-04T01:31:56.082195"
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user