浏览器书签智能分类工具
最近发现浏览器的书签越来越乱了,主要是因为自己太懒,其次之前建的分类太多又乱,重新手动整理确实比较烦。因此有了这个小项目。借助智谱AI的力量对书签进行重新分类。
项目简介
本工具用于自动整理浏览器书签,通过AI智能分类技术,将杂乱的书签按照主题自动归类,并且重新生成结构化的书签文件。
功能特性
- 自动提取书签信息
- 智能分类书签内容
- 分类智能生成
- 生成HTML格式书签文件,可直接导入浏览器
- 自动清理临时文件
使用说明
准备工作
- 获取智谱AI API密钥
- 准备浏览器导出的书签HTML文件
快速开始
- 下载脚本
- 修改
CONFIG
配置中的INPUT_FILE
和OUTPUT_FILE
- 修改
CONFIG
配置中的API_KEY - 运行脚本:
python 浏览器书签文件重新分类.py
- 查看生成的分类结果文件
bookmarks.html
配置文件说明
在脚本开头的CONFIG
字典中可配置以下参数:
API_KEY
: 智谱AI API密钥(必填)INPUT_FILE
: 输入的书签HTML文件路径EXTRACTED_FILE
: 提取的临时文件路径CLASSIFIED_FILE
: 分类结果Markdown文件路径OUTPUT_FILE
: 最终输出的HTML书签文件路径DEFAULT_CATEGORIES
: 默认分类列表
代码结构
# 主要功能模块
1. 配置参数 (CONFIG)
2. AI客户端初始化 (zhipu_client)
3. 书签提取 (extract_bookmark_info)
4. 书签分类 (classify_bookmark)
5. 分类创建 (create_new_category)
6. 格式转换 (md_to_netscape)
7. 文件清理 (cleanup_temp_files)
脚本代码详细说明
浏览器书签文件重新分类脚本详细说明
1. 配置参数
CONFIG = {
'API_KEY': "9e2458a8acf46274d1c1b9418eec500c.oBojpibVHt3IyXnz", # 智谱API密钥,必填
'INPUT_FILE': 'bookmarks_2025_1_3.html', # 输入文件,必填
'EXTRACTED_FILE': 'extracted_bookmarks.txt', # 提取的临时文件
'CLASSIFIED_FILE': 'classified_bookmarks.md', # 分类结果文件
'OUTPUT_FILE': 'bookmarks.html', # 最终输出文件
'DEFAULT_CATEGORIES': [ # 默认分类
'编程语言',
'人工智能',
'数据科学',
]
}
- API_KEY: 用于调用智谱AI API的密钥。
- INPUT_FILE: 输入的HTML格式浏览器书签文件路径。
- EXTRACTED_FILE: 提取的书签信息保存为文本文件的路径。
- CLASSIFIED_FILE: 分类后的书签信息保存为Markdown文件的路径。
- OUTPUT_FILE: 最终生成的HTML格式书签文件路径。
- DEFAULT_CATEGORIES: 预定义的默认分类列表。
2. 初始化客户端
zhipu_client = ZhipuAI(api_key=CONFIG['API_KEY'])
- 使用提供的API密钥初始化智谱AI客户端,用于后续与AI模型交互。
3. 获取AI响应
def get_llm_response(sysPrompt, questionPrompt):
response = zhipu_client.chat.completions.create(
model="GLM-4-Plus", # 填写需要调用的模型编码
messages=[
{
"role": "user", "content": sysPrompt},
{
"role": "assistant", "content": "你好,请告诉我你需要分类的书签?"},
{
"role": "user", "content": questionPrompt},
],
)
return response.choices[0].message.content
- 定义一个函数
get_llm_response
,用于向AI模型发送系统提示和用户问题,并返回模型的响应内容。
4. 读取并解析HTML文件
with open(CONFIG['INPUT_FILE'], 'r', encoding='utf-8') as file:
html_content = file.read()
soup = BeautifulSoup(html_content, 'html.parser')
bookmarks = soup.find_all('a')
bookmark_info = []
for bookmark in bookmarks:
href = bookmark.get('href')
add_date = bookmark.get('add_date')
icon = bookmark.get('icon')
text = bookmark.text.strip().replace('\n', '').replace('\t', '').replace('\r', '').replace(' ', '')
bookmark_info.append({
'URL': href,
'Text': text
})
with open(CONFIG['EXTRACTED_FILE'], 'w', encoding='utf-8') as f:
for info in bookmark_info:
f.write(f"Name: {
info['Text']}, URL: {
info['URL']}\n")
- 读取输入的HTML书签文件内容。
- 使用BeautifulSoup解析HTML,提取所有的
<a>
标签作为书签。 - 将每个书签的URL和名称保存到
bookmark_info
列表中。 - 将提取的书签信息保存到临时文件
EXTRACTED_FILE
中。
5. 分类书签
def extract_bookmark_info(line):
name_match = re.search(r'Name: ([^,]+)', line)
url_match = re.search(r'URL: (https?://[^\s]+)', line)
if not name_match or not url_match:
return None, None
return name_match.group(1), url_match