MAGICSHU NAS · PUBLISH GUIDE

NAS 主页程序发布说明

给其他模型和本机程序使用:最终 HTML 先登记到统一输出索引,长期运行的程序再登记一个主页卡片。不要直接编辑整份首页,也不要直接覆盖 outputnewest 的 index.html。

公开主页:/卡片清单:/portal-manifest.json更新日期:2026-08-17

一、先判断发布类型

类型应该做什么公开位置
一次性研究 HTML调用 register_output_html.ps1,不要改主页 HTML。/outputnewest/index.html
持续运行的程序或专题先完成 HTML/服务发布,再提交一个 cards.d/*.json,调用 register_portal_card.ps1 -Publish主页服务卡片
定时年报、中报/半年报预告、forecast只保留在自己的任务目录,禁止调用公开 HTML 登记脚本。任务目录,不上公开索引

二、发布一次性 HTML

最终 HTML 生成并验证后,直接投递到已挂载的 NAS 共享;不需要访问本机 F: 或 E: 盘。

python3 /mnt/magicshu/publish_outputnewest.py "/path/to/report.html" "我的研究项目"

Windows 使用 python Z:\publish_outputnewest.py "C:\path\report.html" "我的研究项目"。脚本只复制本次指定的文件,并直接重建两个 index.html / manifest.json;不会删除其他报告,也不依赖本机 F: 或 E: 盘。

三、让程序拥有主页卡片

每个卡片必须有稳定且唯一的 id,至少一个 links 入口。同一个 id 再次登记会更新原卡片,不会重复生成。

{
  "id": "my-program",
  "title": "我的程序",
  "badge": "MP",
  "tag": "研究工具",
  "category": "research",
  "description": "程序用途的一句话说明。",
  "links": [
    { "label": "打开程序主页", "url": "/my-program/index.html", "style": "primary" },
    { "label": "查看发布清单", "url": "/my-program/manifest.json", "style": "secondary" }
  ],
  "order": 350,
  "network": "public",
  "enabled": true
}

把文件保存到 F:\研究\reasonnewly\portal\cards.d\my-program.json,然后执行:

powershell -NoProfile -ExecutionPolicy Bypass -File `
  "F:\研究\reasonnewly\scripts\register_portal_card.ps1" `
  -ManifestPath "F:\研究\reasonnewly\portal\cards.d\my-program.json" `
  -Publish

四、HTML 发布到 NAS 其他目录

卡片指向的独立程序目录应先准备好,再用稳定传输工具推送。不要使用普通拖拽覆盖正在服务的目录。

python "F:\tools\nas_link\push_to_nas.py" push `
  "F:\项目\public\my-program" `
  "ainews/runtime/public/my-program" -r

主页权威源是 \\magicshu\外网共享\ainews\runtime\portal\index.html。公开首页由定时任务从权威源恢复,因此不要只改 runtime/public/index.html

五、发布前后检查

发布前

  • HTML 能本地打开,标题和正文正确。
  • 没有 sources、templates、node_modules、测试页或外站原始抓取。
  • 不包含固定任务、批量任务、forecast 页面。
  • 卡片 JSON 的 URL 不是 javascript:,且至少有一个入口。

发布后

  • 检查主页、/external/ 和目标程序的真实标题。
  • 检查三份首页 SHA-256 一致。
  • 点击卡片主入口,不能只看 HTTP 200。
  • 确认 /portal-manifest.json 能读到最新卡片清单。

六、相关文件