GitHub PAT:安全仓库管理 - Openclaw Skills

作者:互联网

2026-04-07

AI教程

什么是 GitHub PAT 集成?

GitHub PAT 技能为 AI 代理提供了一种稳健且安全的方式,通过用户定义的个人访问令牌(Personal Access Token)与 GitHub 环境进行交互。作为 Openclaw Skills 库的核心部分,它强调用户主权和最小权限原则。通过绕过复杂的 OAuth 流程,开发人员可以为其代码库授予特定的、有范围限制的访问权限,允许代理在保持严格安全边界的同时执行基本的版本控制任务。

此技能专为需要在 Openclaw Skills 内部自动化工作流而无需授予完整账户权限的开发人员设计。它充当本地开发环境与 GitHub 强大 API 之间的桥梁,通过简化的命令行界面(CLI)促进无缝的代码管理。

下载入口:https://github.com/openclaw/skills/tree/main/skills/dannyshmueli/github-pat

安装与下载

1. ClawHub CLI

从源直接安装技能的最快方式。

npx clawhub@latest install github-pat

2. 手动安装

将技能文件夹复制到以下位置之一

全局模式 ~/.openclaw/skills/ 工作区 /skills/

优先级:工作区 > 本地 > 内置

3. 提示词安装

将此提示词复制到 OpenClaw 即可自动安装。

请帮我使用 Clawhub 安装 github-pat。如果尚未安装 Clawhub,请先安装(npm i -g clawhub)。

GitHub PAT 集成 应用场景

  • 在隔离环境中自动化代码同步和仓库克隆。
  • 在开发生命周期中简化拉取请求和议题的创建。
  • 通过特定的范围限制令牌管理多个 GitHub 账户或企业仓库。
  • 将版本控制工作流集成到基于 Openclaw Skills 的自动化流水线中。
GitHub PAT 集成 工作原理
  1. 用户在 GitHub 上生成具有特定范围(如 full access 的 repo 或 public access 的 public_repo)的个人访问令牌。
  2. 令牌提供给代理并安全地存储在 TOOLS.md 文件中,或通过命令行参数传递。
  3. 代理利用 gh.py 脚本,使用提供的令牌直接向 GitHub 服务器验证 API 请求。
  4. 代理使用经过身份验证的会话执行高级 git 操作,如分支创建、推送和拉取请求创建。
  5. 所有交互都在 PAT 范围定义的安全参数内管理,确保代理永远不会超出其授权访问权限。

GitHub PAT 集成 配置指南

要将此功能集成到您的 Openclaw Skills 环境中,请按照以下步骤操作:

  1. 访问 github.com/settings/tokens 并生成一个新的个人访问令牌。
  2. 根据您的要求选择必要的范围(例如,私有访问选择 repo)。
  3. 将令牌提供给代理或将其存储在 TOOLS.md 文件的 ### GitHub 部分下。

您也可以直接在 CLI 命令中传递令牌:

python3 scripts/gh.py repos --token YOUR_GITHUB_TOKEN

GitHub PAT 集成 数据架构与分类体系

该技能通过以下模式组织交互数据和配置:

组件 描述 持久化
PAT 令牌 主要身份验证凭据 TOOLS.md 或 CLI 标志
仓库元数据 关于克隆或查询的仓库的信息 本地 API 缓存
命令上下文 当前分支和仓库目标 CLI 参数
安全范围 用户定义的权限级别 GitHub API 端
name: github-pat
description: Interact with GitHub using Personal Access Tokens. Secure, user-controlled access - no OAuth, no full account access. Clone, push, branch, PR, issues. Use when user wants to work with GitHub repos.

GitHub PAT

Interact with GitHub using Personal Access Tokens. User controls access via PAT scopes.

Setup

User provides their PAT:

1. Create PAT at github.com/settings/tokens
2. Select scopes (repo for full, public_repo for public only)
3. Provide token to agent

Store in TOOLS.md or pass via --token.

Commands

# List repos you have access to
python3 scripts/gh.py repos [--token TOKEN]

# Clone a repo
python3 scripts/gh.py clone owner/repo [--token TOKEN]

# Create branch
python3 scripts/gh.py branch  [--repo owner/repo]

# Commit and push
python3 scripts/gh.py push "" [--branch branch] [--repo owner/repo]

# Open a pull request
python3 scripts/gh.py pr "" [--body "description"] [--base main] [--head branch]

# Create an issue
python3 scripts/gh.py issue "<title>" [--body "description"] [--repo owner/repo]

# View repo info
python3 scripts/gh.py info owner/repo
</CODE></PRE>
<H2 id=security-model>Security Model</H2>
<UL>
<LI><STRONG>User controls access</STRONG> via PAT scopes</LI>
<LI><STRONG>No OAuth</STRONG> - no "allow full access" prompts</LI>
<LI><STRONG>Least privilege</STRONG> - user creates PAT with minimal needed scopes</LI>
<LI><STRONG>Fine-grained PATs</STRONG> supported for specific repo access</LI></UL>
<H2 id=token-storage>Token Storage</H2>
<P>Agent stores token in TOOLS.md under <CODE>### GitHub</CODE> section. Never expose in logs or messages.</P>                                                        
                             
                           </div>
														                            <div class="lastanext flexRow">
							 							 							  <a class="lastart flexRow"  href="/wz/332078.html"  ><span>上一篇:</span><span>Lobster: AI VTuber 直播与虚拟形象控制 - Openclaw Skills</span></a>
							 							 
                             							                                 <a class="nextart flexRow"  href="/wz/332080.html" ><span>下一篇:</span><span>weather-zh:高性能中文天气工具 - Openclaw Skills</span></a>
							                             </div>
                        </div>
                        <div class="dtl-xgtj">
                            <div class="jb-titles flexRow">
                                <div class="jbtle-left flexRow"><b></b><p>相关推荐</p></div>
                                
                            </div>
                            <div class="tjlist flexRow">
														                                <div class="tj-item ">
                                    <div class="tjitemd">
									
                                        <div class="tjimd-top flexRow">
                                            <a class="imdta flexRow"  href="/wz/365801.html"  >
                                                                                        <img src="https://images.jiaoben.net/uploads/20260417/logo_69e20e59c4d4f1.png" >
                                                                                        </a>
                                            <div class="imdt-right flexColumn">
                                                <a class="imdtra flexRow overflowclass"  href="/wz/365801.html"  >阿里云+本地免费部署OpenClaw及FreeRide教程:免费调用30 主流大模型指南</a>
                                                <a class="imdtrap flexRow overflowclass"  href="/wz/365801.html"  >
                                                                                                                                     OpenClaw与FreeRide的组合,构建了一套**永久免费、稳定可靠、自动降级、无人值守**的AI运行环境,让个人用户、学生、小型团队无需承担API费用,即可使用30+顶级模型能力。FreeRide自动优选、自动切换、自动监控的特性,彻底解决限流、中断、密钥管理等痛点,让OpenClaw从“需要付费才能运行”变为“完全免费长期使用”。
                                                                                                                </a>
                                            </div>
                                        </div>
									
                                        <div class="tjimd-down flexRow">
                                            <div class="imdd-tab flexRow">
                                                <p class="imddt-time flexRow"><b></b><span>2026-04-17</span></p>
                                                
                                            </div>
                                            <a  href="/wz/365801.html"   class="imdd-more flexRow flexcenter"  >立即查看</a>
                                        </div>
                                    </div>
                                </div>
								                                <div class="tj-item ">
                                    <div class="tjitemd">
									
                                        <div class="tjimd-top flexRow">
                                            <a class="imdta flexRow"  href="/wz/365747.html"  >
                                                                                        <img src="https://images.jiaoben.net/uploads/20260417/logo_69e2083c4a2421.jpeg" >
                                                                                        </a>
                                            <div class="imdt-right flexColumn">
                                                <a class="imdtra flexRow overflowclass"  href="/wz/365747.html"  >claude code 安装</a>
                                                <a class="imdtrap flexRow overflowclass"  href="/wz/365747.html"  >
                                                                                                                                     本次记录为windows环境 1.前置工作 安装了node 20+版本, git, powershell 2.安装 有梯子 打开 PowerShell 终端运行以下安装命令即可: 或者Windows
                                                                                                                </a>
                                            </div>
                                        </div>
									
                                        <div class="tjimd-down flexRow">
                                            <div class="imdd-tab flexRow">
                                                <p class="imddt-time flexRow"><b></b><span>2026-04-17</span></p>
                                                
                                            </div>
                                            <a  href="/wz/365747.html"   class="imdd-more flexRow flexcenter"  >立即查看</a>
                                        </div>
                                    </div>
                                </div>
								                                <div class="tj-item ">
                                    <div class="tjitemd">
									
                                        <div class="tjimd-top flexRow">
                                            <a class="imdta flexRow"  href="/wz/365732.html"  >
                                                                                        <img src="https://images.jiaoben.net/uploads/20260417/logo_69e20757ecb5f1.jpeg" >
                                                                                        </a>
                                            <div class="imdt-right flexColumn">
                                                <a class="imdtra flexRow overflowclass"  href="/wz/365732.html"  >2026 最新 Claude Code 国内账号准备指南:邮箱、套餐、支付方式先搞清这几件事</a>
                                                <a class="imdtrap flexRow overflowclass"  href="/wz/365732.html"  >
                                                                                                                                     2026 最新 Claude Code 国内账号准备指南:邮箱、套餐、支付方式先搞清这几件事 写在前面 很多人以为 Claude Code 的门槛主要在安装,其实不是。真正让新手反复卡住的,往往是账号
                                                                                                                </a>
                                            </div>
                                        </div>
									
                                        <div class="tjimd-down flexRow">
                                            <div class="imdd-tab flexRow">
                                                <p class="imddt-time flexRow"><b></b><span>2026-04-17</span></p>
                                                
                                            </div>
                                            <a  href="/wz/365732.html"   class="imdd-more flexRow flexcenter"  >立即查看</a>
                                        </div>
                                    </div>
                                </div>
								                                <div class="tj-item ">
                                    <div class="tjitemd">
									
                                        <div class="tjimd-top flexRow">
                                            <a class="imdta flexRow"  href="/wz/365693.html"  >
                                                                                        <img src="https://images.jiaoben.net/uploads/20260417/logo_69e1f9b7960dc1.jpeg" >
                                                                                        </a>
                                            <div class="imdt-right flexColumn">
                                                <a class="imdtra flexRow overflowclass"  href="/wz/365693.html"  >2026 最新 Claude Code 国内上手教程:从安装到第一次跑通,完整流程一次讲清</a>
                                                <a class="imdtrap flexRow overflowclass"  href="/wz/365693.html"  >
                                                                                                                                     2026 最新 Claude Code 国内上手教程:从安装到第一次跑通,完整流程一次讲清 写在前面 很多人第一次接触 Claude Code,最容易误会它只是“把 Claude 放进终端里”。真上手
                                                                                                                </a>
                                            </div>
                                        </div>
									
                                        <div class="tjimd-down flexRow">
                                            <div class="imdd-tab flexRow">
                                                <p class="imddt-time flexRow"><b></b><span>2026-04-17</span></p>
                                                
                                            </div>
                                            <a  href="/wz/365693.html"   class="imdd-more flexRow flexcenter"  >立即查看</a>
                                        </div>
                                    </div>
                                </div>
									
                                
								
                            </div>

                        </div>
                    </div>


                    <div class="cd-right dtlcd-right">
                        <div class="dtl-ht">
                            <div class="jb-titles flexRow">
                                <div class="jbtle-left flexRow"><b></b><p>专题</p></div>
                                
                            </div>
                            <div class="dtlht-list ">
							                                <div class="htl-item flexRow">
                                    <div class="htmitem-left">
                                        <div class="htiteml-top flexRow">
                                            <a href="/wz/zt-69351.html"  >#数据可视化</a>
                                            <span></span>
                                        </div>
                                        <a class="htiteml-down flexRow" href="/wz/zt-69351.html"  >数据可视化(Data Visu</a>
                                    </div>
                                    <p class="htmitem-right flexRow flexcenter gz" data-id="69351"  >+ 收藏</p>
                                </div>
							                                <div class="htl-item flexRow">
                                    <div class="htmitem-left">
                                        <div class="htiteml-top flexRow">
                                            <a href="/wz/zt-69342.html"  >#自然语言处理</a>
                                            <span></span>
                                        </div>
                                        <a class="htiteml-down flexRow" href="/wz/zt-69342.html"  >自然语言处理(Natural</a>
                                    </div>
                                    <p class="htmitem-right flexRow flexcenter gz" data-id="69342"  >+ 收藏</p>
                                </div>
							                                <div class="htl-item flexRow">
                                    <div class="htmitem-left">
                                        <div class="htiteml-top flexRow">
                                            <a href="/wz/zt-68363.html"  >#Excel公式</a>
                                            <span></span>
                                        </div>
                                        <a class="htiteml-down flexRow" href="/wz/zt-68363.html"  >Excel公式就是:用函数 +</a>
                                    </div>
                                    <p class="htmitem-right flexRow flexcenter gz" data-id="68363"  >+ 收藏</p>
                                </div>
							                                <div class="htl-item flexRow">
                                    <div class="htmitem-left">
                                        <div class="htiteml-top flexRow">
                                            <a href="/wz/zt-68355.html"  >#Excel技巧</a>
                                            <span></span>
                                        </div>
                                        <a class="htiteml-down flexRow" href="/wz/zt-68355.html"  >Excel是日常生活中必不可</a>
                                    </div>
                                    <p class="htmitem-right flexRow flexcenter gz" data-id="68355"  >+ 收藏</p>
                                </div>
							                                <div class="htl-item flexRow">
                                    <div class="htmitem-left">
                                        <div class="htiteml-top flexRow">
                                            <a href="/wz/zt-68081.html"  >#蛋仔派对</a>
                                            <span></span>
                                        </div>
                                        <a class="htiteml-down flexRow" href="/wz/zt-68081.html"  >蛋仔派对最新官方活动、关卡速</a>
                                    </div>
                                    <p class="htmitem-right flexRow flexcenter gz" data-id="68081"  >+ 收藏</p>
                                </div>
							                                <div class="htl-item flexRow">
                                    <div class="htmitem-left">
                                        <div class="htiteml-top flexRow">
                                            <a href="/wz/zt-68000.html"  >#人工智能</a>
                                            <span></span>
                                        </div>
                                        <a class="htiteml-down flexRow" href="/wz/zt-68000.html"  >人工智能(AI),简单说,就</a>
                                    </div>
                                    <p class="htmitem-right flexRow flexcenter gz" data-id="68000"  >+ 收藏</p>
                                </div>
								
                                


                            </div>
                        </div>


                        <div class="   dtl-zt">
                            <div class="jb-titles flexRow">
                                <div class="jbtle-left flexRow"><b></b><p>最新数据</p></div>
                               
                            </div>


                            <div class="wkch-downs">
																					                                <div class="weekch-top flexRow">
                                        <a class="wktpa flexRow" href="/wz/332085.html"  >
                                                                                     <img src="/jiaoben/image/noimg.png" >
                                                                                    </a>
                                    <div class="wktpa-right flexColumn">
                                        <a class="wktpara flexRow overflowclass"  href="/wz/332085.html"  >树木服务预约:查找并预约本地树木护理 - Openclaw Skills</a>
                                        <a class="wktparp flexRow overflowclass"  href="/wz/332085.html"  >
                                                                                            什么是 树木服务预约技能?
树
                                                                                        
                                        </a>
                                    </div>
                                </div>
								
															
															
															
															
															
															
															
															
															
								
                                <div class="weekch-list">
                                										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332084.html"  class="weekcha flexRow flexcenter overflowclass" >数据分析服务:自动化洞察与处理 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332083.html"  class="weekcha flexRow flexcenter overflowclass" >预约数据恢复服务:AI 智能体的 MCP 技能 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332082.html"  class="weekcha flexRow flexcenter overflowclass" >竞品观察:自动化竞争情报 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332081.html"  class="weekcha flexRow flexcenter overflowclass" >Morpheus 时尚设计:专业 AI 时尚广告 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332077.html"  class="weekcha flexRow flexcenter overflowclass" >AI 智能体 LinkedIn 自动化技能 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332076.html"  class="weekcha flexRow flexcenter overflowclass" >Codex Orchestrator:规范驱动的软件交付 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332075.html"  class="weekcha flexRow flexcenter overflowclass" >技能依赖:管理并解决 Openclaw 技能冲突 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332074.html"  class="weekcha flexRow flexcenter overflowclass" >KameleonDB:为 AI 智能体设计的动态持久化状态 - Openclaw Skills</a>
										</div>
										
																											<div class="weekch-con flexRow">
											<div class="weekch-icon flexRow"><b></b></div>
											<a  href="/wz/332073.html"  class="weekcha flexRow flexcenter overflowclass" >molt-overflow:AI 智能体的 Stack Overflow - Openclaw Skills</a>
										</div>
										
										
                                    
    
                                </div>
    
                            </div>
                           
                        </div>

                       
                        <div class="  dtl-wz">
                            <div class="jb-titles flexRow">
                                <div class="jbtle-left flexRow"><b></b><p>相关文章</p></div>
                                
                            </div>
                            <div class="blog-list">
							                                <a  href="/wz/359555.html"   class="bloga flexRow over"><p class="overflowclass">Better Polymarket:实时预测市场数据 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359556.html"   class="bloga flexRow over"><p class="overflowclass">MoltMon:拓麻歌子风格的 AI 智能体电子宠物 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359557.html"   class="bloga flexRow over"><p class="overflowclass">Banana Cog: AI 多图生成与编排 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359560.html"   class="bloga flexRow over"><p class="overflowclass">Moltbook Negotiator:AI 对 AI 市场谈判 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359561.html"   class="bloga flexRow over"><p class="overflowclass">Markdown 幻灯片:生成独立 HTML 演示文稿 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359562.html"   class="bloga flexRow over"><p class="overflowclass">创意实验室:自主创新与原型开发 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359563.html"   class="bloga flexRow over"><p class="overflowclass">Gumroad 卖家:自动化数字产品销售 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359564.html"   class="bloga flexRow over"><p class="overflowclass">闪卡制作器:自动生成 Anki 和 Quizlet 牌组 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359565.html"   class="bloga flexRow over"><p class="overflowclass">紧急响应技能:管理争议与升级 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
							                                <a  href="/wz/359566.html"   class="bloga flexRow over"><p class="overflowclass">DNS 查询:网络分析与传播 - Openclaw Skills</p><div class="blogtime"><span>04/</span>17</div></a>
								
                                
                            </div>

                        </div>

                        <div class="cdr-ai">
                        <div class="jb-titles flexRow">
                            <div class="jbtle-left flexRow"><b></b><p>AI精选 </p></div>
							<a class="jbtitle-more flexRow" href="/category/list_344_1.html"  title=""><span>更多</span><b></b></a>
                        </div>
						                        <div class="ai-list">
                            <div class="ail-top flexRow">
																                                <a  href="/wz/365746.html"  title="" class="ailta ">
                                                                        <img src="https://images.jiaoben.net/uploads/20260417/logo_69e208357343d1.jpeg" >
                                                                        <p ><span>MCP协议设计与实现-第13章 </span></p></a>
																								                                <a  href="/wz/365745.html"  title="" class="ailta ">
                                                                        <img src="https://images.jiaoben.net/uploads/20260417/logo_69e2082ad8b5b1.jpeg" >
                                                                        <p ><span>从零开发一个 MCP 服务器 +</span></p></a>
																																																																																																																																																                               
                            </div>
                            <div class="ail-down">
																																																						<a class="ali-con flexRow"  href="/wz/365737.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第11章 Python Client 实现剖析</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365731.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第14章 SSE 与 WebSocket</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365730.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第7章 Prompt:可复用的交互模板</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365699.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第20章 从零构建一个生产级 MCP Server</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365698.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第16章 服务发现与客户端注册</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365691.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第18章 Elicitation、Roots 与配置管理</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365689.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第10章 Python Server 实现剖析</p>
									</a>
																																<a class="ali-con flexRow"  href="/wz/365683.html"  title="">
										<div class="alicon-left flexRow"><span>精选</span></div>
										<p class="aliconp overflowclass">MCP协议设计与实现-第17章 sampling</p>
									</a>
															                               
                            </div>
                        </div>

                    </div>
    
						<div class="cdr-blog">
							<div class="jb-titles flexRow">
								<div class="jbtle-left flexRow"><b></b><p>脚本推荐</p></div>
								
							</div>
							<div class="blog-list">
															<a href="/wz/zt-49225.html" title="" class="bloga flexRow over"><p class="overflowclass">SeeDance 2.0 Video Creator专区</p></a>
															<a href="/wz/zt-49224.html" title="" class="bloga flexRow over"><p class="overflowclass">OpenClaw AI专区</p></a>
															<a href="/wz/zt-49223.html" title="" class="bloga flexRow over"><p class="overflowclass">cowork专区</p></a>
															<a href="/wz/zt-49222.html" title="" class="bloga flexRow over"><p class="overflowclass">claude code skills专区</p></a>
								
					  
							</div>

						</div>

                    </div>
                </div>
            </div>
            
        </div>


    </main>
     <script>
        $(function() {
            // “+ 收藏”按钮点击事件
            $(document).on('click', '.htmitem-right, .ztop-right', function(e) {
                // 仅针对包含 “+ 收藏” 文字的按钮
                if ($(this).text().indexOf('+ 收藏') === -1) return;
                
                e.preventDefault();
                
                const id = $(this).data('id');
                if (!id) {
                    layer.msg('该项暂无有效ID,无法收藏');
                    return;
                }

                // 构造收藏 URL: 当前域名 + /wz/zt- + id + /
                const bookmarkUrl = window.location.origin + '/wz/zt-' + id + '.html';
                
                // 获取收藏标题 (优先从同级元素获取话题名称,否则使用页面标题)
                let bookmarkTitle = $(this).closest('.htl-item, .zttopd').find('a:first, span.overflowclass').text().trim() || document.title;
                if (bookmarkTitle.startsWith('#')) bookmarkTitle = bookmarkTitle.substring(1);

                // 浏览器收藏逻辑 (带 Fallback)
                try {
                    if (window.sidebar && window.sidebar.addPanel) { 
                        // Firefox < 23
                        window.sidebar.addPanel(bookmarkTitle, bookmarkUrl, "");
                    } else if (window.external && ('AddFavorite' in window.external)) { 
                        // IE
                        window.external.AddFavorite(bookmarkUrl, bookmarkTitle);
                    } else {
                        // Chrome, Safari, Firefox 23+, etc.
                        const isMac = /Mac/i.test(navigator.userAgent);
                        const keyStr = isMac ? 'Command + D' : 'Ctrl + D';
                        
                        layer.confirm('由于浏览器安全限制,请使用 <b>' + keyStr + '</b> 手动添加收藏。<br><br>收藏地址:<br><small>' + bookmarkUrl + '</small>', {
                            title: '收藏提示',
                            btn: ['复制链接', '知道了'],
                            yes: function(index) {
                                copyToClipboard(bookmarkUrl).then(() => {
                                    layer.msg('链接已复制,请手动添加到收藏夹');
                                }).catch(() => {
                                    layer.msg('复制失败,请手动选择复制');
                                });
                                layer.close(index);
                            }
                        });
                    }
                } catch (err) {
                    layer.msg('收藏失败,请手动添加');
                }
            });

            // 兼容非 HTTPS 的复制函数
            function copyToClipboard(text) {
                if (navigator.clipboard && window.isSecureContext) {
                    return navigator.clipboard.writeText(text);
                } else {
                    let textArea = document.createElement("textarea");
                    textArea.value = text;
                    textArea.style.position = "fixed";
                    textArea.style.left = "-999999px";
                    textArea.style.top = "-999999px";
                    document.body.appendChild(textArea);
                    textArea.focus();
                    textArea.select();
                    return new Promise((res, rej) => {
                        document.execCommand('copy') ? res() : rej();
                        textArea.remove();
                    });
                }
            }
        });
    </script>
<footer>
        <div class="foot ">
            <div class="foot-top flexRow">
                <div class="foot-left">
                    <div class="ftl-top flexRow"><span class="flexRow flexcenter">脚本</span>在线</div>
                    <p class="ftl-down">
                        智能赋能梦想,脚本构筑现实。我们致力于链接AI智能指令
                        与传统自动化,为您提供一站式、高效率的脚 本资产与生成
                        服务。
                    </p>
                </div>
                <div class="foot-right flexRow">
                    <div class="ftr-list flexColumn">
                        <p>核心板块</p>
                        <span>AI脚本库</span>
                        <span>自动化仓库</span>
                        <span>脚本实验室</span>
                    </div>
                    <div class="ftr-list flexColumn">
                        <p>关于我们</p>
                        <a href="/category/list_229_1.html"   >最新游戏</a>
                        <span>商务合作</span>
                        <span>隐私政策</span>
                    </div>
                    <div class="ftr-list flexColumn">
                        <p>社区支持</p>
                        <span >API文档</span>
                        <a href="/category/list_334_1.html"   >攻略资讯</a>
                        <span>违规举报</span>
                    </div>
                </div>
            </div>
            <div class="foot-down flexColumn">
                <p>© 2026  jiaoben.net | 脚本在线 | 联系:jiaobennet2026@163.com</p>
                <p>备案:<a style="color: #7F7F7F;" href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">湘ICP备18025217号-11</a> </p>
            </div>
        </div>
    </footer>

    <div style="display:none;">
			<script type="text/javascript">
		  var _paq = window._paq = window._paq || [];
		  _paq.push(['trackPageView']);
		  _paq.push(['enableLinkTracking']);

		  (function() {
			var u="//tongji.zhangwan.net/";
			_paq.push(['setTrackerUrl', u+'matomo.php']);
			_paq.push(['setSiteId', '29']);

			// Add this code below within the Matomo JavaScript tracker code
			// Important: the tracker url includes the /matomo.php
			var secondaryTrackerUrl = u+'matomo.php';
			var secondaryWebsiteId = 27;
			// Also send all of the tracking data to this other Matomo server, in website ID 77
			_paq.push(['addTracker', secondaryTrackerUrl, secondaryWebsiteId]);
			// That's it!
			var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
			g.type='text/javascript'; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
		  })();
		</script>
	    <script>
        var _hmt = _hmt || [];
        (function() {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?5d3cfe1f36b1988029fe82a0d475b20d";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>
	
</div>  </body>
</html>