publish: گزارش، صفحه، ایمیل
سه تحویل پشت سر هم. هیچکدام بدون تأیید کاربر به بعدی نمیرود.
گزارش. با
/readable:reportیک فایل HTML مستقل بساز. اگر کارتی در چت هست، محتوای همان را عیناً بردار. چون خروجی روی وب میزبانی میشود،--inline-figuresبده.تأیید. مسیر فایل را بهصورت لینک بده و بپرس منتشر شود یا نه. تا «بله» نگرفتهای هیچ چیزی آپلود نکن.
صفحه. یک دستور، از فایل تا لینک:
node "<this skill dir>/publish.js" <path-to-report.html> [--slug my-report] [--viewer a@b.com]خودش زیپ میکند،
nameرا از<title>سند برمیدارد، وaccess_modeپیشفرضallowlistاست. JSON برمیگرداند؛urlرا به کاربر بده. برای جایگزینی یک صفحهٔ موجود با همان لینک:--page-id <id>.ایمیل. یک کارت readable کوتاه بساز، به لحن
/me:write-as-me: دو سه جمله که بگوید این چیست و چرا مهم است، بهعلاوهٔ لینک صفحه. محتوای گزارش را تکرار نکن. آخرش به کاربر بگو از منوی همان کارت گزینهٔ Email را بزند تا آمادهٔ کپی شود.
چرا اسکریپت، نه ابزار MCP
ابزار pages_create_from_zip آرشیو را base64 میگیرد. یک گزارش ۷۵۰ کیلوبایتی با فونت جاسازیشده حدود ۶۳۰ کیلوبایت base64 میشود، یعنی صدهزار توکن که باید از کانتکست رد شود و بایتهایش هم سالم درنمیآید. اسکریپت فایل را از دیسک میخواند و خودش POST میکند، پس هیچوقت pages_create_from_zip یا pages_create_from_text را مستقیم صدا نزن و محتوای فایل را هم نخوان.
ورودی میتواند یک فایل، یک پوشه (که باید
index.htmlدر ریشه داشته باشد)، یا یک زیپ آماده باشد.لاگین از همان توکنی میآید که
mcp-remoteنگه داشته. اگر گفت لاگین نیست، پیام خودش دستور را میدهد.--out file.zipفقط زیپ را میسازد و آپلود نمیکند، برای وقتی کاربر خودش میخواهد آپلود کند.زبان هر سه خروجی همان زبان مکالمه است.
اگر انتشار شکست خورد، همانجا بگو، فایل گزارش را تحویل بده و جلوتر نرو.