浏览器书签数据导出与处理全流程:从HTML解析到SQLite数据库

发布时间:2026/8/20 3:58:54

浏览器书签数据导出与处理全流程:从HTML解析到SQLite数据库
最近在整理浏览器书签时发现一个痛点收藏夹里几百个链接想备份、迁移或者用AI分析一下内容手动一个个复制粘贴简直是噩梦。无论是想换浏览器还是想把书签数据导入到笔记软件、知识库甚至是想用大语言模型比如GPT-5.6这类工具来分析自己的兴趣图谱第一步都得先把书签数据“导出来”。本文就围绕“浏览器书签数据导出”这个核心需求手把手带你走通从本地浏览器导出到数据清洗、格式转换再到与外部工具如Python脚本、数据库集成的完整闭环。无论你是想做个简单的备份还是为后续的数据分析、AI处理做准备这套方法都能直接复用。1. 书签数据导出的核心价值与应用场景在深入技术细节之前我们首先要明白导出书签数据远不止是“备份”那么简单。它本质上是将你存储在浏览器特定格式如HTML、JSON中的结构化数据提取并转换为更通用、可编程的格式从而释放数据的潜在价值。通俗理解你可以把浏览器书签看作一个私人的、分类混乱的“网页收藏数据库”。导出就是把数据从这个封闭的数据库里“搬”出来放到一个你可以自由查看、编辑和分析的“开放仓库”里。为什么开发者或数据爱好者需要掌握这个技能数据迁移与同步更换浏览器如从Chrome换到Edge、Firefox或操作系统时无缝转移所有收藏。数据备份与版本管理定期导出书签配合Git等工具实现收藏历史的版本控制防止误删。数据分析与洞察分析自己的浏览习惯、兴趣领域。比如统计哪个分类下的链接最多哪些链接很久没访问过僵尸书签。AI集成与知识管理将书签数据标题、URL、可能包含的注释作为语料输入给大语言模型进行摘要、分类、去重或导入到Notion、Obsidian等知识管理工具中构建个人知识库。自动化处理批量修改书签属性如批量添加标签、检测失效链接、或与其他数据源如阅读历史进行关联分析。核心概念区分导出 (Export)将数据从源系统浏览器以特定格式输出为文件的过程。重点是“取出”。备份 (Backup)导出的一种应用目的是防止数据丢失。数据清洗 (Data Cleaning)在导出后对数据进行格式化、去重、纠错等操作使其适合后续使用。这是从“原始数据”到“可用数据”的关键一步。2. 环境准备与基础工具本节将列出进行书签数据导出、处理可能用到的环境和工具。请注意浏览器导出功能是内置的不依赖特定编程环境。后续的数据处理部分我们将以最通用的方式介绍。2.1 浏览器环境以主流浏览器为例Google Chrome / Microsoft Edge (Chromium内核): 版本 100Mozilla Firefox: 版本 100Apple Safari: 版本 15操作系统: Windows 10/11, macOS Monterey/Ventura/Sonoma, Linux各主流发行版均可。关键点不同浏览器的导出入口和默认格式略有不同但核心原理相通。2.2 数据处理环境可选用于进阶操作如果你计划对导出的书签数据进行编程处理建议准备以下环境Python 3.8: 用于数据清洗、分析和格式转换。推荐安装pandas,beautifulsoup4,json库。pip install pandas beautifulsoup4文本编辑器/IDE: VS Code, Sublime Text, PyCharm 等用于查看和编辑导出的HTML/JSON文件。数据库工具 (可选): 如MySQL, SQLite用于存储和查询书签数据。本文示例会使用SQLite它无需安装服务器。2.3 示例项目结构我们将创建一个简单的项目文件夹来管理所有相关文件bookmark_export_project/ ├── raw_data/ # 存放原始导出的书签文件 │ ├── chrome_bookmarks.html │ └── firefox_bookmarks.json ├── scripts/ # 存放数据处理脚本 │ ├── parse_html.py │ └── clean_to_csv.py ├── processed_data/ # 存放处理后的干净数据 │ └── clean_bookmarks.csv └── README.md3. 从主流浏览器导出书签数据实操第一步这是最基础也是最关键的一步。下面以Chrome和Firefox为例详细演示导出流程。3.1 Google Chrome / Microsoft Edge 导出步骤Chrome和EdgeChromium版的导出流程完全一致。打开书签管理器点击浏览器右上角的三个点⋮-书签和列表-书签管理器。或者直接在地址栏输入chrome://bookmarks/或edge://favorites/并访问。找到导出菜单在书签管理器页面的右上角点击三个点⋮图标。在下拉菜单中选择导出书签。保存文件系统会弹出文件保存对话框。默认文件名为bookmarks_日期.html。选择一个安全的位置例如我们项目中的raw_data文件夹保存即可。导出的文件是什么你会得到一个.html文件。用文本编辑器打开会发现它并不是一个普通的网页而是一个包含大量DT(定义标题) 和A(链接) 标签的HTML文件其结构是一个嵌套的文件夹DL和书签列表。这是Netscape时代遗留的通用书签格式兼容性极好。3.2 Mozilla Firefox 导出步骤Firefox的导出选项更丰富一些。打开书签库点击右上角的菜单按钮≡-书签-管理所有书签。或使用快捷键CtrlShiftO(Windows/Linux) /CmdShiftO(Mac)。选择导入和备份在打开的“书签库”窗口的顶部菜单栏点击导入和备份。选择导出在下拉菜单中选择导出书签为HTML...。注意Firefox也支持“备份”它会生成一个.jsonlz4压缩的JSON文件但那是用于Firefox自身恢复的通用性不如HTML。为了兼容性我们选择导出为HTML。保存文件选择保存路径和文件名点击保存。为什么选择HTML而不是JSON虽然Firefox的JSON格式更现代但HTML格式是行业事实标准几乎所有浏览器都支持导入。为了后续通用处理我们首选HTML格式。3.3 导出后的初步检查用文本编辑器打开你导出的bookmarks.html文件你应该能看到类似下面的结构!DOCTYPE NETSCAPE-Bookmark-file-1 META HTTP-EQUIVContent-Type CONTENTtext/html; charsetUTF-8 TITLEBookmarks/TITLE H1Bookmarks/H1 DLp DTH3 ADD_DATE1678886400 LAST_MODIFIED1678886500 PERSONAL_TOOLBAR_FOLDERtrue书签栏/H3 DLp DTA HREFhttps://www.csdn.net/ ADD_DATE1678886600 ICON...CSDN/A DTA HREFhttps://github.com/ ADD_DATE1678886700 ICON...GitHub/A DTH3 ADD_DATE1678886800 LAST_MODIFIED1678886900技术博客/H3 DLp DTA HREFhttps://example.com/blog ADD_DATE1678887000某技术博客/A /DLp /DLp /DLp关键标签说明DL: 表示一个目录列表的开始/结束。DT: 定义列表中的一项可以是文件夹(H3)或链接(A)。H3: 表示一个书签文件夹。A: 表示一个具体的书签链接HREF属性是URL标签内容是书名。4. 解析与清洗书签数据Python实战拿到原始的HTML文件后我们需要将其转换为结构化的数据如CSV、JSON以便后续分析或导入到其他系统。这里使用Python的BeautifulSoup库进行解析。4.1 解析HTML书签文件创建一个Python脚本scripts/parse_html.py。# scripts/parse_html.py import json from bs4 import BeautifulSoup from urllib.parse import urlparse import os def parse_bookmarks_html(html_file_path): 解析Netscape格式的HTML书签文件提取所有链接。 返回一个字典列表每个字典代表一个书签。 with open(html_file_path, r, encodingutf-8) as f: soup BeautifulSoup(f.read(), html.parser) bookmarks [] # 查找所有的 A 标签即书签链接 for a_tag in soup.find_all(a): bookmark { title: a_tag.string if a_tag.string else 无标题, url: a_tag.get(href, ), add_date: a_tag.get(add_date, ), icon: a_tag.get(icon, ), # 尝试获取父文件夹名作为分类 folder: get_parent_folder_name(a_tag) } # 简单过滤掉非HTTP/HTTPS的链接如javascript: if bookmark[url].startswith((http://, https://)): bookmarks.append(bookmark) return bookmarks def get_parent_folder_name(a_tag): 向上遍历找到最近的 H3 标签作为文件夹/分类名。 这是一个简化的实现复杂的嵌套文件夹需要更递归的逻辑。 parent a_tag.find_parent(dl) if parent: prev_h3 parent.find_previous_sibling(h3) if prev_h3 and prev_h3.string: return prev_h3.string return 未分类 if __name__ __main__: # 假设原始文件在 raw_data 目录下 input_path ../raw_data/chrome_bookmarks.html bookmarks_list parse_bookmarks_html(input_path) print(f共解析出 {len(bookmarks_list)} 个书签。) # 打印前5个看看 for i, bm in enumerate(bookmarks_list[:5]): print(f{i1}. [{bm[folder]}] {bm[title]} - {bm[url]}) # 将结果保存为JSON文件便于后续使用 output_path ../processed_data/bookmarks_raw.json os.makedirs(os.path.dirname(output_path), exist_okTrue) with open(output_path, w, encodingutf-8) as f: json.dump(bookmarks_list, f, ensure_asciiFalse, indent2) print(f\n原始数据已保存至: {output_path})运行这个脚本你就能将HTML中杂乱的书签信息提取成一个清晰的JSON数组。4.2 数据清洗与增强原始数据可能包含重复项、失效链接、或需要补充信息如域名。我们创建另一个脚本scripts/clean_to_csv.py进行清洗。# scripts/clean_to_csv.py import json import pandas as pd from urllib.parse import urlparse import hashlib def load_and_clean_bookmarks(json_file_path): 加载JSON数据并进行清洗和增强。 with open(json_file_path, r, encodingutf-8) as f: data json.load(f) df pd.DataFrame(data) # 1. 去重基于URL df.drop_duplicates(subset[url], keepfirst, inplaceTrue) # 2. 从URL中提取域名用于分组分析 def extract_domain(url): try: netloc urlparse(url).netloc # 去掉 www. 前缀 return netloc[4:] if netloc.startswith(www.) else netloc except: return 未知域名 df[domain] df[url].apply(extract_domain) # 3. 将ADD_DATE时间戳转换为可读日期Unix时间戳 def convert_timestamp(ts): try: # 有些时间戳是微秒级的需要检查 ts_int int(ts) if ts_int 253402300800: # 超过10000年的可能是微秒 ts_int ts_int / 1000000 return pd.to_datetime(ts_int, units).strftime(%Y-%m-%d %H:%M:%S) except (ValueError, TypeError): return 未知时间 df[add_date_readable] df[add_date].apply(convert_timestamp) # 4. 生成一个唯一ID用于数据库主键 df[id] df[url].apply(lambda x: hashlib.md5(x.encode()).hexdigest()[:8]) # 5. 重新排列列顺序 df df[[id, title, url, domain, folder, add_date, add_date_readable, icon]] return df if __name__ __main__: input_json ../processed_data/bookmarks_raw.json df_clean load_and_clean_bookmarks(input_json) print(数据清洗完成前5行预览) print(df_clean.head().to_string()) # 保存为CSV这是最通用的结构化数据格式 output_csv ../processed_data/clean_bookmarks.csv df_clean.to_csv(output_csv, indexFalse, encodingutf-8-sig) # utf-8-sig支持Excel中文 print(f\n清洗后的数据已保存至CSV: {output_csv}) # 生成一些基本统计信息 print(\n 基本统计 ) print(f书签总数: {len(df_clean)}) print(f分类数量: {df_clean[folder].nunique()}) print(fTop 10 域名:) print(df_clean[domain].value_counts().head(10))运行此脚本后你将得到一个干净、结构化的clean_bookmarks.csv文件可以直接用Excel打开或导入到数据库、数据分析工具中。5. 将书签数据导入数据库以SQLite为例为了更高效地查询和管理书签例如“找出所有GitHub仓库链接”或“统计每个分类的数量”将其导入数据库是一个好习惯。# scripts/import_to_sqlite.py import sqlite3 import pandas as pd def create_bookmarks_db(csv_file_path, db_file_path../processed_data/bookmarks.db): 读取CSV文件并创建SQLite数据库和表。 df pd.read_csv(csv_file_path) # 连接SQLite数据库如果不存在则会创建 conn sqlite3.connect(db_file_path) cursor conn.cursor() # 创建表 create_table_sql CREATE TABLE IF NOT EXISTS bookmarks ( id TEXT PRIMARY KEY, title TEXT NOT NULL, url TEXT UNIQUE NOT NULL, domain TEXT, folder TEXT, add_date TEXT, add_date_readable TEXT, icon TEXT ); cursor.execute(create_table_sql) # 将DataFrame数据写入数据库 df.to_sql(bookmarks, conn, if_existsreplace, indexFalse) # 创建索引以加速查询 cursor.execute(CREATE INDEX IF NOT EXISTS idx_domain ON bookmarks (domain);) cursor.execute(CREATE INDEX IF NOT EXISTS idx_folder ON bookmarks (folder);) conn.commit() print(f数据库 {db_file_path} 创建成功共导入 {len(df)} 条记录。) # 示例查询按文件夹统计书签数量 print(\n按文件夹统计书签数量:) query SELECT folder, COUNT(*) as count FROM bookmarks GROUP BY folder ORDER BY count DESC; result pd.read_sql_query(query, conn) print(result.to_string(indexFalse)) # 示例查询查找所有包含‘github’的链接 print(\n查找包含‘github’的书签:) query_github SELECT title, url FROM bookmarks WHERE url LIKE %github.com% LIMIT 5; result_gh pd.read_sql_query(query_github, conn) print(result_gh.to_string(indexFalse)) conn.close() if __name__ __main__: create_bookmarks_db(../processed_data/clean_bookmarks.csv)现在你的书签数据已经从一个杂乱的HTML文件变成了一个可以轻松查询的关系型数据库表。6. 常见问题与排查思路在书签导出和处理过程中你可能会遇到以下问题问题现象常见原因解决思路导出的HTML文件用浏览器打开是乱码或空白文件编码问题或浏览器将其当作普通网页渲染。1. 用文本编辑器如VS Code, Notepad打开检查文件开头是否有!DOCTYPE NETSCAPE-Bookmark-file-1。2. 确保文本编辑器使用UTF-8编码打开和保存。Python脚本解析时提示‘NoneType’ object has no attribute ‘string’HTML结构可能与预期不符某些A标签内没有文本。1. 在parse_html.py的解析逻辑中增加空值判断title a_tag.string if a_tag.string else a_tag.get_text(stripTrue) or ‘无标题’。2. 打印出有问题的a_tag对象检查其HTML结构。去重后数据量减少很多同一个URL被收藏在多个不同的文件夹中。这是正常现象。drop_duplicates基于URL去重。如果你需要保留文件夹信息可以考虑将(url, folder)组合作为唯一键或者不去重。时间戳转换后日期是1970年或未来日期时间戳格式不标准可能是毫秒、微秒或非Unix时间戳。1. 检查原始add_date的值。它是一个长数字字符串。2. 在convert_timestamp函数中添加更健壮的判断逻辑如尝试除以1000或1000000。导入数据库时出现“UNIQUE constraint failed”错误CSV数据中存在重复的id或url在数据库表中被设为UNIQUE或PRIMARY KEY。1. 在导入前先用Pandas检查重复项df.duplicated(subset[‘url’]).sum()。2. 清理数据源或修改表结构去掉UNIQUE约束不推荐。想导出特定文件夹的书签浏览器自带的导出功能通常是导出全部书签。1.手动在书签管理器中将目标文件夹拖拽到新窗口然后导出这个新窗口的书签不通用。2.编程在解析HTML后根据folder字段进行过滤只处理特定文件夹下的书签。7. 最佳实践与工程建议将书签导出和数据化处理纳入日常运维可以遵循以下最佳实践定期自动化导出与备份编写一个批处理脚本.bat或.sh定期如每周调用浏览器命令行进行导出如果浏览器支持然后运行清洗脚本。将清洗后的CSV或JSON文件备份到云存储如Dropbox, Google Drive或版本控制系统如Git私有仓库。重要提示自动化操作浏览器需谨慎确保符合软件使用条款优先使用浏览器提供的官方导出功能手动触发再配合脚本处理文件。数据清洗管道化将解析、清洗、导入数据库的步骤串联成一个完整的Pipeline脚本。可以使用Apache Airflow、Prefect等简单调度工具或直接写一个Python主脚本按顺序调用各个函数。在清洗过程中加入数据质量检查例如检查URL是否有效使用requests.head进行轻量级探测、标题是否过长、分类是否为空等。数据库设计优化如果书签量巨大数万条考虑将folder字段独立成一张folders表建立外键关系实现真正的多级分类管理。添加last_visited、visit_count字段如果能从浏览器历史中关联用于分析书签的使用热度。为经常查询的字段如domain,folder,add_date建立索引提升查询性能。安全与隐私书签文件可能包含敏感的个人信息、内部系统链接等。切勿将原始的或清洗后的书签文件上传到公开的GitHub仓库、论坛或任何不安全的网络位置。处理书签数据的脚本应在本地或受信任的私有服务器上运行。如果使用AI工具如GPT-5.6等大语言模型API分析书签内容务必仔细阅读其隐私政策考虑对URL和标题进行脱敏处理如只发送域名和关键词或确保API调用符合数据安全规范。与下游系统集成知识库将清洗后的书签标题、URL、摘要通过API定期同步到Notion、Obsidian等工具。可以编写一个脚本将CSV数据转换为Markdown文件便于Obsidian直接读取。数据分析使用Pandas、Matplotlib或BI工具如Metabase连接SQLite数据库制作仪表盘可视化你的兴趣分布、收藏趋势。链接健康检查定期运行脚本批量检查书签URL是否仍然有效返回200状态码将失效链接报告出来便于清理。通过以上步骤你不仅完成了简单的书签备份更是构建了一个个人知识资产的轻量级数据管理方案。从原始的浏览器数据到结构化的数据库再到可扩展的分析和集成接口整个过程体现了数据工程的基本思路采集 - 清洗 - 存储 - 应用。

相关新闻

自托管Durable Objects方案Celld实测:与Cloudflare原生服务对比解析

自托管Durable Objects方案Celld实测:与Cloudflare原生服务对比解析

2026/8/20 3:58:54

在构建现代Web应用时,状态管理和数据持久化是开发者面临的核心挑战之一。尤其是在需要跨请求、跨用户会话共享状态,或实现实时协作功能的场景下,传统的无状态服务器和数据库组合往往显得力不从心。Cloudflare推出的Durable Objects正是为解决…

ATOD:攻克多轮智能体任务蒸馏难题的退火轮次感知在线策略蒸馏

ATOD:攻克多轮智能体任务蒸馏难题的退火轮次感知在线策略蒸馏

2026/8/20 3:48:54

1. 从“单步”到“多轮”:智能体任务蒸馏的挑战与机遇最近在折腾大语言模型驱动的智能体时,我遇到了一个非常具体且棘手的问题:如何让一个“学生”模型,高效地学会一个“老师”模型在多轮、复杂决策任务中的全部本事?这…

编码器原理与选型实战:从光电/磁电原理到PLC/单片机信号读取

编码器原理与选型实战:从光电/磁电原理到PLC/单片机信号读取

2026/8/20 3:48:54

在工业自动化、机器人控制、精密测量等领域,电机编码器扮演着“眼睛”和“尺子”的关键角色。无论是伺服电机精准定位、数控机床的精密加工,还是机器人关节的角度反馈,都离不开编码器的实时数据。然而,面对增量式、绝对值、磁编码…

基于SpringBoot的家庭财务管理系统兼容微信小程序(源码+lw+部署文档+讲解等)

基于SpringBoot的家庭财务管理系统兼容微信小程序(源码+lw+部署文档+讲解等)

2026/8/20 4:48:56

联系博主 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 …

次模多智能体强化学习:破解开放系统中分布式在线任务分配难题

次模多智能体强化学习:破解开放系统中分布式在线任务分配难题

2026/8/20 4:48:56

1. 从“抢单”到“协同”:开放多智能体系统中的任务分配挑战想象一下,在一个大型物流仓库里,几十台AGV小车在货架间穿梭。突然,系统弹出了一批新的拣货任务,有的在A区,有的在B区,有的紧急&#…

Agentic AI风险治理:从可观测性、护栏到沙盒的技术保险体系

Agentic AI风险治理:从可观测性、护栏到沙盒的技术保险体系

2026/8/20 4:48:56

1. 从“工具”到“代理”:Agentic AI的本质与风险跃迁 最近和几个做AI应用落地的朋友聊天,大家不约而同地提到了一个词:Agentic AI,或者说“智能体AI”。这不再是去年那种“调个API做个聊天机器人”的玩法了,而是开始让…

TUA-Bench:通用终端智能体基准测试的设计、评估与实战指南

TUA-Bench:通用终端智能体基准测试的设计、评估与实战指南

2026/8/20 4:48:56

1. 项目概述:为什么我们需要一个终端智能体基准测试?如果你最近在关注AI智能体(Agent)领域,尤其是那些号称能“理解自然语言,帮你搞定终端里一切事情”的通用终端智能体,你可能会和我有一样的困…

ESP8266点对点直连通信:AP-STA与ESP-NOW两种模式详解与实战

ESP8266点对点直连通信:AP-STA与ESP-NOW两种模式详解与实战

2026/8/20 4:48:56

1. 项目缘起:为什么需要ESP8266之间的直连通信?在物联网和智能硬件开发中,ESP8266这颗芯片几乎无人不知。我们通常用它连接家里的Wi-Fi路由器,然后通过互联网与手机App或者云端服务器进行数据交换。这构成了绝大多数智能插座、传感…

VBA实战:从零实现Excel两列数据最大值最小值批量筛选

VBA实战:从零实现Excel两列数据最大值最小值批量筛选

2026/8/20 4:38:56

你有没有过这样的经历:面对一个看似简单的Excel需求——“找出这两列里每一行的最大值和最小值”,你心里盘算着,这应该就是几个公式的事。但当你真正动手,发现数据量上千行,中间还夹杂着空值、错误值,甚至需…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/19 3:36:59

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/19 9:17:18

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/19 8:02:16

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换

2026/8/20 0:08:45

微信聊天记录如何完整导出?WeChatMsg备份指南:HTML/Word/CSV一键转换 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com…

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒

2026/8/20 0:08:45

B站缓存m4s打不开?m4s-converter无损合成MP4,实测1.46GB仅5秒 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 判断你是否…

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印

2026/8/20 0:08:45

告别白模时代:Blender3mfFormat 让 3MF 导入导出一次跑通设计到打印 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 按 3MF 官方规范的字面意思,一…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/18 12:20:24

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…