Skip to content

tabtac/Obsidian-WriteUp-Helper

Repository files navigation

Obsidian WriteUp Helper

Extension Icon 一款为CTF选手设计的浏览器扩展,快速生成标准化的WriteUp模板并一键保存至Obsidian知识库。

✨ 功能特性

🎯 核心功能

  • 多平台支持 - 支持NSSCTF、CTF Show、BUUOJ等主流CTF平台
  • 智能信息提取 - 自动提取题目名称、难度、分类、分值等信息
  • 多模板系统 - 提供标准、详细、简洁三种模板,支持自定义
  • 深度Obsidian集成 - 一键创建Markdown文件并跳转至Obsidian编辑

🚀 用户体验

  • 快捷键支持 - Ctrl+Shift+W 生成WriteUp,Ctrl+Shift+S 打开设置,Ctrl+Shift+R 重置位置
  • 可视化设置 - 右键点击按钮打开设置面板,无需手动编辑配置文件
  • 自定义模板 - 支持创建和编辑自定义WriteUp模板
  • 拖拽移动 - 按钮支持鼠标和触摸拖拽,位置自动保存
  • 实时反馈 - 处理状态提示和成功/错误通知
  • 响应式设计 - 适配桌面和移动端界面
  • SPA兼容 - 适配单页应用动态加载场景

🔧 技术特性

  • 模块化架构 - 清晰的代码结构,易于维护和扩展
  • 配置持久化 - 用户设置自动保存到本地存储
  • 错误处理 - 完善的异常处理和用户提示
  • 性能优化 - 智能DOM监听,减少资源消耗

🛠️ 安装指南

Chrome浏览器手动安装

  1. 克隆本仓库到本地
  2. 访问 chrome://extensions/
  3. 开启右上角 开发者模式
  4. 点击 加载已解压的扩展程序,选择仓库目录

Firefox安装(需打包)

npm install -g web-ext
web-ext build
# 生成的ZIP文件可在about:debugging加载

🚀 使用说明

基本使用

  1. 访问支持的CTF平台题目页面(NSSCTF、CTF Show、BUUOJ等)
  2. 点击页面悬浮按钮或使用快捷键 Ctrl+Shift+W
  3. 自动生成包含以下内容的Obsidian笔记:

设置功能

  • 可视化配置:右键点击按钮或使用 Ctrl+Shift+S 打开设置面板
  • 基本设置:修改Vault名称、文件路径、按钮文本等
  • 模板管理:选择预设模板或创建自定义模板
  • 模板编辑器:内置代码编辑器,支持语法高亮和变量提示
  • 设置导入导出:支持配置文件的备份和恢复
  • 一键重置:快速恢复到默认设置

拖拽功能

  • 智能识别:轻点生成WriteUp,按住拖拽移动位置(移动距离>8px才触发拖拽)
  • 移动按钮:鼠标悬停显示抓手光标,按住拖拽可移动按钮位置
  • 触摸支持:移动设备支持触摸拖拽操作
  • 位置记忆:拖拽后的位置自动保存,页面刷新后恢复
  • 边界限制:按钮不会被拖拽到屏幕外,窗口大小变化时自动调整
  • 重置位置:使用快捷键 Ctrl+Shift+R 重置到默认位置
  • 视觉反馈:拖拽时半透明效果,释放时弹跳动画

标准模板示例

## 基本信息
- **题目名称**:Web-SQLi-示例题目
- **题目链接**https://www.nssctf.cn/problem/1234
- **创建时间**:2024-01-15 14:30:25
- **考点清单**## 解题思路

## 过程和结果记录

## 总结

## 相关知识点

---
*Generated by Obsidian WriteUp Helper*

支持的平台

  • NSSCTF (www.nssctf.cn) - 完整支持
  • CTF Show (ctf.show) - 完整支持
  • BUUOJ (buuoj.cn) - 完整支持
  • 更多平台持续添加中...

⚙️ 高级配置

模板配置

插件提供四种模板选项:

  1. 标准模板 (standard) - 平衡的信息结构
  2. 详细模板 (detailed) - 包含表格和更多字段
  3. 简洁模板 (simple) - 最小化信息
  4. 自定义模板 (custom) - 用户自定义内容

设置面板配置

右键点击按钮或使用 Ctrl+Shift+S 打开设置面板:

  • 基本设置:修改Vault名称、文件路径、按钮文本
  • 模板选择:选择预设模板或自定义模板
  • 模板编辑:在内置编辑器中编辑自定义模板
  • 导入导出:备份和恢复所有设置
  • 重置功能:一键恢复默认配置

命令行配置(高级用户)

// 修改默认模板
writeUpHelper.saveConfig({ template: 'custom', customTemplate: '自定义内容' });

// 修改vault名称
writeUpHelper.saveConfig({ vault: 'my-notes' });

// 修改文件路径
writeUpHelper.saveConfig({ basePath: 'CTF/WriteUps' });

模板变量

支持的模板变量:

  • {{title}} - 格式化后的标题
  • {{url}} - 当前页面URL
  • {{date}} - 创建日期 (YYYY-MM-DD)
  • {{time}} - 创建时间 (HH:MM:SS)

样式自定义

编辑 styles.css 可自定义界面:

/* 修改按钮样式 */
.writeup-helper-btn {
  background: linear-gradient(135deg, #10b981 0%, #059669 100%);
  top: 60px; /* 调整位置 */
}

/* 修改通知样式 */
.writeup-notification-success {
  background-color: #8b5cf6;
}

🤝 开发贡献

项目结构

.
├── content.js        # 核心功能脚本
├── config.js         # 平台配置和模板定义
├── manifest.json     # 扩展配置文件
├── styles.css        # 样式表
├── icon*.png         # 扩展图标
└── README.md         # 项目文档

开发流程

  1. 克隆项目
git clone https://github.com/tabtac/Obsidian-WriteUp-Helper.git
cd Obsidian-WriteUp-Helper
  1. 加载扩展

    • Chrome: 访问 chrome://extensions/,开启开发者模式,加载已解压的扩展程序
    • Firefox: 访问 about:debugging,加载临时附加组件
  2. 实时开发

    • Chrome: 使用 Extension Reloader
    • Firefox: web-ext run --start-url https://www.nssctf.cn

添加新平台支持

  1. config.js 中添加平台配置
  2. 定义选择器和标题处理器
  3. 测试信息提取功能

代码规范

  • 使用 JSDoc 注释
  • 遵循 ES6+ 语法
  • 保持代码模块化

⚠️ 注意事项

  • 确保Obsidian已安装并配置vault(默认名称"note")
  • 支持自定义vault名称和文件路径
  • 文件名会自动处理特殊字符以确保跨平台兼容性
  • 建议在使用前测试Obsidian URI协议是否正常工作

🔧 故障排除

常见问题

1. 按钮不显示或消失

  • 检查是否在支持的网站上(NSSCTF、CTF Show、BUUOJ)
  • 等待几秒钟,按钮会自动恢复(定期检查机制)
  • 切换到其他标签页再回来,触发焦点恢复
  • 刷新页面重试
  • 检查浏览器控制台是否有错误信息

2. 拖拽功能异常

  • 确保不是在处理状态下拖拽
  • 检查是否有其他扩展冲突
  • 尝试重置按钮位置(Ctrl+Shift+R)

3. 设置面板显示问题

  • 检查浏览器缩放比例是否正常
  • 尝试使用快捷键打开(Ctrl+Shift+S)
  • 清除浏览器缓存重试

4. Obsidian无法打开

  • 确保Obsidian已安装并运行
  • 检查vault名称是否正确
  • 测试Obsidian URI协议:obsidian://open

调试工具

插件内置了调试工具,可以帮助诊断问题:

// 在浏览器控制台中运行
writeUpDebugger.enable();        // 启用调试模式
writeUpDebugger.runDiagnostics(); // 运行诊断
writeUpDebugger.exportLogs();     // 导出调试日志

重置插件

如果遇到严重问题,可以完全重置插件:

// 在浏览器控制台中运行
localStorage.removeItem('writeup-helper-config');
localStorage.removeItem('writeup-helper-button-position');
location.reload();

🔄 更新日志

v2.0 (2024-01-15)

  • ✨ 新增多平台支持(NSSCTF、CTF Show、BUUOJ)
  • ✨ 新增多模板系统(标准、详细、简洁、自定义)
  • ✨ 新增可视化设置面板和模板编辑器
  • ✨ 新增按钮拖拽移动功能和位置记忆
  • ✨ 新增设置导入导出和一键重置功能
  • ✨ 新增快捷键支持 (Ctrl+Shift+W/S/R)
  • ✨ 新增触摸设备拖拽支持
  • ✨ 新增实时通知系统和状态反馈
  • ✨ 新增调试工具和错误诊断功能
  • 🎨 全新现代化UI设计和动画效果
  • 🎨 响应式布局,完美适配移动端
  • 🔧 完全重构代码架构,模块化设计
  • 🔧 优化事件处理和性能,防止内存泄漏
  • 🔧 增强错误处理和配置验证
  • 🔧 添加资源清理和生命周期管理
  • 🐛 修复SPA路由变化检测问题
  • 🐛 修复拖拽时误触发点击的问题
  • 🐛 修复设置面板显示和布局问题
  • 🐛 修复事件监听器内存泄漏问题
  • 🐛 修复生成WriteUp后按钮消失的问题
  • 🐛 修复模板变量中$符号被误处理的问题
  • 🐛 修复URI过长导致Obsidian打开失败的问题
  • 🐛 修复高频DOM变更导致的性能问题
  • 🐛 修复事件监听器键冲突问题
  • 🐛 修复点击一次按钮创建多个文件的问题

v1.1 (2024-01-01)

  • 🐛 修复标题解析问题
  • 🎨 优化按钮样式

📜 许可证

GPL-3.0 License © 2025 tabtac

🙏 致谢

感谢所有为项目贡献代码和建议的开发者!

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published