<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>未分类归档 - 帝讯博客</title>
	<atom:link href="https://www.dixunblog.cn/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dixunblog.cn/category/uncategorized</link>
	<description>致力于打造专业的互联网资讯平台</description>
	<lastBuildDate>Wed, 16 Sep 2026 09:28:50 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://cdn.hyclive.cn/dixunblog/2025/12/cropped-ico-32x32.png</url>
	<title>未分类归档 - 帝讯博客</title>
	<link>https://www.dixunblog.cn/category/uncategorized</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>自动连播助手</title>
		<link>https://www.dixunblog.cn/2024.html</link>
					<comments>https://www.dixunblog.cn/2024.html#respond</comments>
		
		<dc:creator><![CDATA[小编]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 09:27:08 +0000</pubDate>
				<category><![CDATA[未分类]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/2024.html</guid>

					<description><![CDATA[<p>自动连播助手（Chrome / Edge 扩展） 一个通用的浏览器扩展：自动识别网页里正在播放的视频和播放列表，视频暂停时自动续播，播放结束后自动点击下一个视频。 功能 自动识别视频：扫描页面中所有 &#60;video&#62; 元素，并监听动态加载的新视频（含 iframe 内嵌播放器、Shadow DOM）。 暂停自动续播：检测到视频被暂停（非播放结束）时，自动恢复播放。 识别待播列表：用启发式算法解析课程/播放列表，区分 已播 / 播放中 / 待播 状态；自动穿透 iframe，识别主页面和子页面中的目录。 自</p>
<p><a href="https://www.dixunblog.cn/2024.html">自动连播助手</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align:center"><img decoding="async" src="https://cdn.hyclive.cn/dixunblog/2026/09/avp-cover.png" alt="自动连播助手" style="max-width:100%;height:auto;border-radius:10px;margin:12px 0" /></p>
<div class="opu-post">
<h1>自动连播助手（Chrome / Edge 扩展）</h1>
<p>一个通用的浏览器扩展：自动识别网页里正在播放的视频和播放列表，视频暂停时自动续播，播放结束后自动点击下一个视频。</p>
<h2>功能</h2>
<ul>
<li><strong>自动识别视频</strong>：扫描页面中所有 <code>&lt;video&gt;</code> 元素，并监听动态加载的新视频（含 iframe 内嵌播放器、Shadow DOM）。</li>
<li><strong>暂停自动续播</strong>：检测到视频被暂停（非播放结束）时，自动恢复播放。</li>
<li><strong>识别待播列表</strong>：用启发式算法解析课程/播放列表，区分 <strong>已播 / 播放中 / 待播</strong> 状态；自动穿透 iframe，识别主页面和子页面中的目录。</li>
<li><strong>自动连播</strong>：当前视频播放结束后，优先点击平台自带的&#8221;下一集&#8221;按钮；没有时按目录顺序点下一个待播项，遇到未展开目录会自动展开父级后再点击。</li>
<li><strong>倍速播放</strong>：可选开关，支持 1.0x ~ 5.0x 多档倍速，视频切换后自动保持，关闭即恢复 1 倍速。</li>
<li><strong>读取视频进度条</strong>：实时显示当前视频播放进度（<code>00:33 / 34:06</code>）和课程总进度百分比。</li>
<li><strong>悬浮面板</strong>：页面右下角实时显示运行状态、视频数量、目录统计，可拖拽、可折叠，支持手动&#8221;立即播放下一集&#8221;，可展开调试日志查看识别过程。</li>
</ul>
<h2>安装步骤</h2>
<ol>
<li>打开 Chrome 或 Edge，地址栏输入 <code>chrome://extensions</code>（Edge 为 <code>edge://extensions</code>）。</li>
<li>打开右上角 <strong>「开发者模式」</strong> 开关。</li>
<li>点击 <strong>「加载已解压的扩展程序」</strong>。</li>
<li>选择本文件夹（<code>auto-video-player</code>，包含 <code>manifest.json</code> 的那一层）。</li>
<li>打开任意视频网站（B站、YouTube、课程网站等），页面右下角会出现悬浮面板即表示已生效。</li>
</ol>
<h2>使用</h2>
<ul>
<li>面板 / 扩展图标弹窗里可开关：<strong>总开关</strong>、<strong>暂停自动续播</strong>、<strong>播完自动下一集</strong>、<strong>倍速播放</strong>。</li>
<li>设置通过 Chrome 同步存储，改动会实时生效到已打开的页面。</li>
<li>若不希望某些页面自动运行，可在扩展详情里通过「网站访问权限」限制。</li>
</ul>
<h2>文件说明</h2>
<p>| 文件 | 作用 | | &#8212; | &#8212; | | <code>manifest.json</code> | 扩展清单（Manifest V3） | | <code>content.js</code> | 核心逻辑：视频识别、续播、列表识别、连播、悬浮面板 | | <code>content.css</code> | 悬浮面板样式 | | <code>popup.html</code> / <code>popup.js</code> | 扩展图标弹窗（设置面板） | | <code>icons/</code> | 扩展图标 | | <code>gen_icons.py</code> | 图标生成脚本（可删除） |</p>
<h2>更新日志</h2>
<h3>v1.7.9</h3>
<ul>
<li>新增<strong>倍速播放</strong>功能：</li>
<li>默认 1 倍速，最高 5 倍速，档位：1.0x / 1.25x / 1.5x / 2.0x / 2.5x / 3.0x / 4.0x / 5.0x。</li>
<li>悬浮面板新增「倍速播放」开关 + 「播放速度」下拉选择；扩展图标弹窗同样支持设置。</li>
<li>默认<strong>关闭</strong>（<code>speedEnabled: false</code>），避免与平台自带倍速冲突或触发违规检测；开启后所有帧的视频统一应用倍速。</li>
<li>视频切换（重新播放）时自动重新应用倍速，防止播放器重置；设置实时同步到所有已打开页面，关闭开关即恢复 1 倍速。</li>
</ul>
<h3>v1.7.8</h3>
<ul>
<li>修复「任何网页都触发扩展、很麻烦」：</li>
<li><code>manifest.json</code> 的 <code>content_scripts.matches</code> 从 <code>&lt;all_urls&gt;</code> 收紧为常见视频/网课平台清单（网梯、B站、优酷、爱奇艺、腾讯视频、网易云课堂、中国大学MOOC、学堂在线、智慧树、慕课网、超星、网易公开课、腾讯课堂、高顿、抖音、快手、虎牙、斗鱼、YouTube 等），未列入的网站完全不会注入。</li>
<li><code>content.js</code> 顶层 frame 启动时再次校验：不在已知平台域名 <strong>且</strong> 没有 <code>&lt;video&gt;</code> 元素时，整个 IIFE 立即 <code>return</code>，不绑定任何事件、不创建面板、不扫描 DOM。</li>
<li>子 frame 仍正常工作（依赖父 frame 的 postMessage 唤醒），但只在匹配的网课平台子页面里才会注入。</li>
<li>调整清单：若遇到扩展在某个网课平台未生效，可编辑 <code>manifest.json</code> 的 <code>matches</code> 加上对应域名后重新加载。</li>
</ul>
<h3>v1.7.7</h3>
<ul>
<li>修复「仍未按顺序播放，且播完最后一个视频后不会回头补齐漏看课时」：</li>
<li><code>findNextItem</code> 改为<strong>自动补齐模式</strong>：自动连播时按目录顺序取<strong>第一个未完成课时</strong>，不再局限于「当前项之后」。这样即使前面有漏掉的视频，播完后也会回头继续播放，直到课程全部完成。</li>
<li>手动点击「立即播放下一集」仍优先取当前项之后的下一个未完成课时，保持操作预期；当前项之后没有待播项时，再兜底取全局第一个未完成项。</li>
<li><code>clickNext</code> 增加 <code>autoEnded</code> 参数，自动结束事件与手动按钮使用不同策略，并在跨帧广播中传递 <code>manual</code> 标志。</li>
<li>全部课时完成后日志输出「全部课时已完成」，避免无意义重复跳转。</li>
</ul>
<h3>v1.7.6</h3>
<ul>
<li>修复「v1.7.5 仍未拦住播放器帧乱点 / 当前项识别错位」：</li>
<li><code>clickNext</code> 目录有效性判断由「leafCount ≥ 3」改为「本帧必须含 <code>.s_point[itemtype="video"]</code>」。网梯内容帧（播放器控件）即便识别出 3 项也不算目录，必须让顶层调度到真正拥有 <code>.s_learnlist</code> 的目录帧。</li>
<li><code>pickBestFrameForNext</code> 同样过滤掉不含 <code>.s_point</code> 的无效帧，委派的目标帧一定是真实目录帧。</li>
<li><code>analyzeList</code> 当前项识别顺序改为 <strong>URL 匹配优先</strong>，再退回到 <code>s_pointerct</code> 类标记。原因：平台可能在目录上保留对某一项的 <code>s_pointerct</code> 高亮，但用户实际播放的是另一项（URL 不同），此时按 <code>s_pointerct</code> 找当前项会指错，导致下一集跳过多个真实未看项。</li>
<li>行为：用户从 leaf[N]（未标 <code>s_pointerct</code>）播放结束 → 用 URL 识别为 leaf[N] → 下一集严格取 leaf[N+1] 之后的第一个非已完成项。</li>
</ul>
<h3>v1.7.5</h3>
<ul>
<li>修复「播完下一集仍不按顺序乱跳」：</li>
<li>顶层统一调度：视频结束后由顶层挑选「目录项最多」的帧执行下一集，避免多个 iframe 同时点击导致乱跳；</li>
<li>子帧目录项不足 3 个时不再处理下一集，防止播放器画质选择（全高清等）被误当目录点击；</li>
<li>网梯平台直接调用 <code>openLearnResItem(itemId, 'video', null, title)</code>，比点击元素更稳定；</li>
<li>新增全局 8 秒跳转锁，防止重复触发下一集。</li>
</ul>
<h3>v1.7.4</h3>
<ul>
<li>修复「播完跳转下集不按顺序、中间跳过的视频被误认为已看完」：</li>
<li>目录状态判定只信任平台真实标记（<code>completestate="1"</code>、<code>s_pointerct</code> 等），不再把当前项之前的所有课时默认标为已播；</li>
<li>修复后：跳过未看的视频仍保持「待播」，课程总进度与待播数量与平台实际状态一致；</li>
<li><code>findNextItem</code> 严格按 DOM 顺序取当前项的下一个非已完成课时，避免跳集。</li>
</ul>
<h3>v1.7.3</h3>
<ul>
<li>修复「点击播放下一集仍跳回当前正在播放的视频」：</li>
<li><code>findWangtiCatalog</code> 移除 <code>.learn-menu</code>（左侧导航）误命中，只认 <code>#learnMenu</code> / <code>.s_learnlist</code> 等真正的课程目录；</li>
<li>目录容器搜索改为跨所有同域 iframe 取评分最高者，<code>.s_point[itemtype="video"]</code> 目录永远优先，左侧导航强烈减分；</li>
<li>移除「兜底点击随机元素」逻辑（此前顶层帧找不到下一节时会乱点顶层元素，导致跳到当前视频）；</li>
<li>「下一集」支持跨帧委托：没有目录的帧返回失败后，由顶层广播给拥有目录的子帧执行精准跳转，子帧成功即停止向下广播。</li>
<li>日志新增帧标识（<code>TOP</code> / <code>IFRAME|页面名</code>），便于定位问题帧。</li>
</ul>
<h3>v1.7.2</h3>
<ul>
<li>修复 <code>collectItems</code> 中 <code>const candidates</code> 被重新赋值导致的 <code>Assignment to constant variable</code> 错误（该错误使目录分析中断）。</li>
<li>目录识别优先使用网梯平台专用 <code>findWangtiCatalog</code>，避免把左侧「课件/课程简介/学习进度」导航菜单当成课程目录。</li>
<li>在启发式评分里：包含 <code>.s_point[itemtype="video"]</code> 大幅加分，包含 <code>.learn-menu-cell</code> 大幅减分。</li>
<li><code>collectItems</code> 增加过滤，排除左侧导航、播放器控件（高清/标清等）等非课时项。</li>
</ul>
<h3>v1.7.1</h3>
<ul>
<li>加入设置版本迁移：升级后强制把「暂停自动续播」重置为关闭，避免旧设置残留导致继续触发平台警告。</li>
<li>进一步增强网梯平台目录识别：新增 <code>findWangtiCatalog</code>，直接命中 <code>#learnMenu</code> / <code>.s_learnlist</code> / <code>[class*="learnlist"]</code>，并以包含最多 <code>.s_point[itemtype="video"]</code> 的 <code>div</code> 作为兜底。</li>
</ul>
<h3>v1.7</h3>
<ul>
<li><strong>风险规避</strong>：默认关闭「暂停自动续播」，移除直接调用 <code>video.play()</code> 的逻辑，改为仅在开启开关时模拟点击播放按钮。</li>
<li>降低视频进度上报频率（500ms → 2000ms）和子帧 ping 频率（1s → 3s），减少被平台检测为异常播放的可能性。</li>
<li>面板与弹窗对「暂停自动续播」增加 ⚠️ 风险提示。</li>
<li>修复目录识别为 0 项：增加对网梯平台 <code>#learnMenu</code> / <code>.s_learnlist</code> 的直接命中与兜底选择。</li>
</ul>
<h3>v1.6</h3>
<ul>
<li>针对网梯 / whaty-learnspace 课程平台做精准适配：</li>
<li>目录叶子项直接识别 <code>.s_point[itemtype="video"]</code>，避免取到内部 <code>.wrap</code> 导致 class/状态丢失；</li>
<li>已完成状态读取 <code>completestate="1"</code> 属性；</li>
<li>当前播放中状态识别 <code>s_pointerct</code> 类；</li>
<li>当前课时通过 <code>onclick</code> 中的 <code>itemId</code> 与 URL 中的 <code>params.itemId</code> 前 8 位匹配，解决无 <code>&lt;a href&gt;</code> 时无法定位当前项的问题。</li>
<li>课程总进度计算更准确：1 个已完成 + 1 个播放中 + 11 个待播 = 13 项。</li>
</ul>
<h3>v1.5</h3>
<ul>
<li>目录识别只保留“带播放时长的视频课时”，剔除「第X讲」「章节」等非视频项，避免把 15 项误算成视频数。</li>
<li>当前课时定位增强：支持从目录项的 <code>onclick</code> / <code>data-*</code> 属性中提取真实跳转链接，再与当前 iframe URL 匹配。</li>
<li>面板新增「复制日志」「复制目录HTML」按钮，可一键复制识别结果与目录 HTML，方便针对性适配。</li>
<li>调试日志改为输出全部课时的文本、类名、完成标记、跳转链接。</li>
</ul>
<h3>v1.4</h3>
<ul>
<li>修复“所有课时都识别为已播、课程总进度 100%”的误报：</li>
<li>已完成检测更严格，避免 <code>checkbox</code> / <code>checked</code> 等子元素误匹配；</li>
<li>新增“URL 匹配”定位当前课时，适配 whaty / webtrn 类课程平台；</li>
<li>新增页面标题、章节标题匹配当前课时；</li>
<li>当全部课时都被标记为已完成、但当前视频尚未结束时，自动判定为误报并清空已完成标记。</li>
<li>调试日志默认输出目录分析详情，方便定位识别问题。</li>
</ul>
<h2>说明与限制</h2>
<ul>
<li>&#8220;识别列表&#8221;采用通用启发式策略，大多数主流视频网站都能命中；极少数结构特殊的网站可能需要针对该站做适配。</li>
<li>自动续播依赖页面已发生过用户交互（浏览器自动播放策略），正常浏览观看场景下均满足。</li>
<li>本工具仅用于个人学习、课程连播等合法场景，请遵守目标网站的条款。</li>
</ul>
</div>
<h2>更新日志</h2>
<h1>更新日志</h1>
<p><a href="https://www.dixunblog.cn/2024.html">自动连播助手</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/2024.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>opu</title>
		<link>https://www.dixunblog.cn/2023.html</link>
					<comments>https://www.dixunblog.cn/2023.html#respond</comments>
		
		<dc:creator><![CDATA[小编]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 09:27:07 +0000</pubDate>
				<category><![CDATA[未分类]]></category>
		<guid isPermaLink="false">https://www.dixunblog.cn/2023.html</guid>

					<description><![CDATA[<p>opu 开源项目自动化提交程序 — 一键把 WorkBuddy 中开发的项目发布到 GitHub / Gitee 简介 opu 是一个开源项目自动化发布工具，帮助你将在 WorkBuddy 中开发完成的项目，通过简单的命令行交互，一键完成 GitHub / Gitee 仓库的创建、README 生成与代码推送。告别繁琐的手动配置，让开源发布像喝水一样简单。 核心特性 一键发布：自动完成远程仓库创建、代码提交与推送，同时发布到 GitHub 和 Gitee 可视化控制台（GUI）：内置浏览器界面，opu gui 或双</p>
<p><a href="https://www.dixunblog.cn/2023.html">opu</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align:center"><img decoding="async" src="https://cdn.hyclive.cn/dixunblog/2026/09/opu-cover.png" alt="opu" style="max-width:100%;height:auto;border-radius:10px;margin:12px 0" /></p>
<div class="opu-post">
<h1>opu</h1>
<blockquote><p>开源项目自动化提交程序 — 一键把 WorkBuddy 中开发的项目发布到 GitHub / Gitee</p></blockquote>
<p><img decoding="async" src="https://img.shields.io/badge/version-0.1.0-blue" alt="Version" /> <img decoding="async" src="https://img.shields.io/badge/license-MIT-green" alt="License" /> <img decoding="async" src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="Node" /> <img decoding="async" src="https://img.shields.io/badge/platform-GitHub%20%7C%20Gitee-orange" alt="Platform" /></p>
<h2>简介</h2>
<p><strong>opu</strong> 是一个开源项目自动化发布工具，帮助你将在 WorkBuddy 中开发完成的项目，通过简单的命令行交互，一键完成 GitHub / Gitee 仓库的创建、README 生成与代码推送。告别繁琐的手动配置，让开源发布像喝水一样简单。</p>
<h2>核心特性</h2>
<ul>
<li><strong>一键发布</strong>：自动完成远程仓库创建、代码提交与推送，同时发布到 GitHub 和 Gitee</li>
<li><strong>可视化控制台（GUI）</strong>：内置浏览器界面，<code>opu gui</code> 或双击启动器即可点点按钮完成发布，无需记命令</li>
<li><strong>智能 README 生成</strong>：基于 <code>.opu.json</code> 配置，自动生成专业的 README 文档（支持 AI 增强）</li>
<li><strong>项目体检</strong>：内置 <code>doctor</code> 命令，检查本地环境与配置是否就绪</li>
<li><strong>配置向导</strong>：交互式初始化项目配置，无需手写 JSON</li>
<li><strong>模板支持</strong>：内置 CHANGELOG、CONTRIBUTING 等开源标配文档模板</li>
<li><strong>WorkBuddy 深度集成</strong>：专为 WorkBuddy 开发流程设计，无缝衔接</li>
</ul>
<h2>适用场景</h2>
<ul>
<li>在 WorkBuddy 中完成项目开发，需要快速发布到 GitHub / Gitee</li>
<li>需要同时维护 GitHub 和 Gitee 双平台仓库</li>
<li>希望自动化生成 README 和开源文档</li>
<li>批量管理多个开源项目的发布流程</li>
</ul>
<h2>快速开始</h2>
<h3>环境要求</h3>
<ul>
<li>Node.js &gt;= 18</li>
<li>Git 已安装并配置好全局用户信息</li>
<li>GitHub / Gitee 账号及对应的 Personal Access Token</li>
</ul>
<h3>安装</h3>
<pre><code class="language-bash"># 克隆项目
git clone https://github.com/2657449167/opu.git
cd opu

# 安装依赖
npm install</code></pre>
<h3>启动（命令行）</h3>
<pre><code class="language-bash">node bin/opu.js --help</code></pre>
<p>或链接为全局命令后直接用：</p>
<pre><code class="language-bash">npm link
opu --help</code></pre>
<h2>可视化控制台（GUI）— 推荐给不想敲命令的用户</h2>
<p>不想记命令？opu 内置了一个<strong>本地可视化发布控制台</strong>，点点按钮就能完成配置与发布，无需再和助手对话。</p>
<p><strong>两种启动方式：</strong></p>
<ol>
<li><strong>双击启动器</strong>（最简单）：直接双击项目根目录里的</li>
</ol>
<ul>
<li><code>启动可视化发布工具.bat</code>（中文名，双击即用）</li>
<li>或 <code>opu-gui.bat</code>（英文等价）</li>
</ul>
<ol>
<li><strong>命令行启动</strong>：</li>
</ol>
<p>   &#8220;<code>bash    node bin/opu.js gui      # 启动并自动打开浏览器    node bin/opu.js gui --no-open   # 不自动打开浏览器，手动访问 http://127.0.0.1:&lt;端口&gt;    node bin/opu.js gui --port 8080 # 指定端口    </code>&#8220;</p>
<p>启动后控制台会自动打开浏览器（仅绑定 <code>127.0.0.1</code>，本地安全）。界面包含三个模块：</p>
<ul>
<li><strong>发布项目</strong>：选目录 → 自动识别技术栈 → 编辑项目信息 → AI 生成/手动编辑 README 与教程 → 勾选平台一键发布，全程带实时日志。</li>
<li><strong>全局配置</strong>：填写 GitHub / Gitee 令牌、DeepSeek Key、著作权归属人；支持「测试连接」即时校验。</li>
<li><strong>环境检查</strong>：一键检查 Git、各平台 Token、AI 是否就绪。</li>
</ul>
<blockquote><p>所有数据仅保存在你本机（<code>~/.opu/config.json</code> 与项目内 <code>.opu.json</code>），不上传任何服务器。</p></blockquote>
<h2>使用教程（命令行）</h2>
<h3>第一步：初始化配置</h3>
<pre><code class="language-bash">opu init</code></pre>
<p>按照交互提示，填写项目名称、描述、仓库地址等信息，程序会自动生成 <code>.opu.json</code> 配置文件。</p>
<h3>第二步：环境检查</h3>
<pre><code class="language-bash">opu doctor</code></pre>
<p>检查本地 Git 配置、GitHub/Gitee Token 是否有效、Node 版本是否满足要求。</p>
<h3>第三步：配置平台信息</h3>
<pre><code class="language-bash">opu config</code></pre>
<p>配置 GitHub / Gitee 的 owner、repo 信息以及访问 Token（也可用 <code>opu config set tokens.github &lt;token&gt;</code> 直接写）。</p>
<h3>第四步：发布项目</h3>
<pre><code class="language-bash">opu publish</code></pre>
<p>程序将自动完成以下操作：</p>
<ol>
<li>读取 <code>.opu.json</code> 配置</li>
<li>生成 README.md 及配套文档</li>
<li>在 GitHub / Gitee 创建远程仓库</li>
<li>初始化 Git 仓库并提交代码</li>
<li>推送到远程仓库</li>
</ol>
<h3>同步更新</h3>
<pre><code class="language-bash">opu sync</code></pre>
<p>当本地代码有更新时，使用该命令将最新代码同步推送到两个远程仓库。</p>
<h2>配置说明</h2>
<p>项目使用 <code>.opu.json</code> 作为配置文件，核心字段说明：</p>
<pre><code class="language-json">{
  "name": "项目名称（仓库名）",
  "tagline": "一句话定位",
  "description": "详细描述",
  "features": ["特性列表"],
  "techStack": ["技术栈"],
  "license": "开源协议",
  "topics": ["话题标签"],
  "platforms": {
    "github": { "owner": "GitHub用户名", "repo": "仓库名" },
    "gitee": { "owner": "Gitee用户名", "repo": "仓库名" }
  },
  "entryPoints": ["入口命令"],
  "requirements": { "node": "&gt;=18" },
  "ai": {
    "enabled": true,
    "extraContext": "AI 生成 README 时的额外上下文"
  },
  "docs": {
    "readme": "手动指定 README 内容（留空则自动生成）",
    "tutorial": "使用教程原文"
  }
}</code></pre>
<p>参考示例：<code>examples/.opu.json</code> 和 <code>examples/auto-video-player.opu.json</code>。</p>
<h2>常见问题 FAQ</h2>
<h3>Q1: 提示 &#8220;GitHub Token 无效&#8221; 怎么办？</h3>
<p>请确认 Token 具有 <code>repo</code> 权限，并在 <code>config</code> 命令中正确配置。Token 可以在 GitHub Settings → Developer settings → Personal access tokens 中生成。</p>
<h3>Q2: 发布时提示仓库已存在？</h3>
<p>如果远程仓库已存在，opu 会尝试直接推送。若仓库为空且无冲突，推送会成功；如有冲突，请先手动处理或删除远程仓库后重试。</p>
<h3>Q3: 如何只发布到 GitHub 而不发布到 Gitee？</h3>
<p>在 <code>.opu.json</code> 的 <code>platforms</code> 中删除 <code>gitee</code> 配置，或在 <code>config</code> 命令中跳过 Gitee 设置即可。</p>
<h3>Q4: AI 生成的 README 不满意怎么办？</h3>
<p>可以在 <code>.opu.json</code> 的 <code>docs.readme</code> 字段中手动填写你想要的 README 内容，程序将优先使用手动填写的内容。</p>
<h3>Q5: 支持私有仓库吗？</h3>
<p>支持。在 <code>.opu.json</code> 的 <code>platforms</code> 中为对应平台设置 <code>"visibility": "private"</code> 即可。</p>
<h2>路线图</h2>
<ul>
<li>[x] 可视化控制台（GUI）— 浏览器界面，点点按钮即可发布</li>
<li>[x] 自动生成 README / 使用教程 / CHANGELOG</li>
<li>[x] 内置知识产权归属（LICENSE + NOTICE，禁止移除/冒名署名）</li>
<li>[ ] 支持更多代码托管平台（GitLab、Bitbucket）</li>
<li>[ ] 集成 CI/CD 发布流程</li>
<li>[ ] 支持多项目批量发布</li>
</ul>
<h2>贡献指南</h2>
<p>欢迎提交 Issue 和 Pull Request！</p>
<ol>
<li>Fork 本仓库</li>
<li>创建你的特性分支 (<code>git checkout -b feature/AmazingFeature</code>)</li>
<li>提交你的改动 (<code>git commit -m 'Add some AmazingFeature'</code>)</li>
<li>推送到分支 (<code>git push origin feature/AmazingFeature</code>)</li>
<li>提交 Pull Request</li>
</ol>
<p>开发调试时可设置环境变量 <code>OPU_DEBUG=1</code> 查看详细日志。</p>
<h2>开源协议</h2>
<p>本项目基于 <a href="LICENSE">MIT License</a> 开源，欢迎自由使用和二次开发。</p>
</div>
<h2>更新日志</h2>
<h1>更新日志</h1>
<h2>v0.1.0 &#8211; 2026-09-08</h2>
<ul>
<li>新增 <code>license_texts</code> 命令，支持查看常用开源许可证文本。</li>
<li>新增 <code>publish</code> 命令，一键把项目发布到 GitHub / Gitee（支持新建与更新两种模式）。</li>
<li>新增 AI 模块，自动生成 README / 使用教程 / 更新日志（默认 DeepSeek，可关闭）。</li>
<li>新增配置模块与 <code>.opu.json</code> 项目配置，支持「同一项目原地更新、不新建仓库」的判定。</li>
<li>新增 Git 集成，支持仓库操作、状态检测与提交。</li>
<li>新增 Gitee 与 GitHub 平台对接，双平台并行发布。</li>
<li>新增可视化 GUI 控制台（<code>opu gui</code> / <code>启动可视化发布工具.bat</code>），无需记命令即可发布。</li>
<li>内置 <code>doctor</code> 配置体检与交互式初始化向导。</li>
<li>优化 CLI 入口逻辑，提升命令加载与执行效率。</li>
</ul>
<p><a href="https://www.dixunblog.cn/2023.html">opu</a>最先出现在<a href="https://www.dixunblog.cn">帝讯博客</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dixunblog.cn/2023.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
