NovelAI绘图任务队列生成器 测试版本

安装

在浏览器已安装Tampermonkey油猴或其他脚本管理器的情况下,打开以下链接,会跳出脚本安装界面。

v0.0.1.240510:https://cd.xfan.top/f/nyaiG/prompt-tasks-writer-vue-20240510.user.js (2024/5/10)

更新插件版本后,请清除插件数据,否则可能出现因插件更新数据结构导致的bug。清除localStroage中的tasklist项(右键-删除),如下图所示。

如果以上安装方法无效(弹出的是文件下载),可以打开Tampermonkey的管理面板,将prompt-tasks-writer-vue.user.js 文件拖入页面,即可弹出安装界面。

使用

安装后打开NAI网页,第一次进入脚本会自动显示。右上部分的按钮用于控制面板隐藏与显示。

之后插件会保存“显示与隐藏”的状态和在面板中填入的任务数据,刷新页面和关闭浏览器不会导致数据清空。

使用演示视频:

更新日志

2024/5/6

  • 修复 导入json失效的问题

2024/5/6

  • 新增 实时保存插件数据 开关选项
  • 新增 自动保存ZIP文件 功能
  • 新增 清除插件数据 功能
  • 新增 自定义任务名称 功能
  • 新增 任务折叠 功能
  • 新增 出图尺寸设置 功能
  • 优化 选项提示位置和方式
  • 优化 提示词队列生成方式优化,对于排列、组合和笛卡尔积的计算,根据数据量的不同采用不同的算法,以支持超大总体的抽样

反馈

请在本页评论区留下bug反馈和功能建议。

bug修复和新功能会在本页面更新。

评论

  1. 涂山白
    已编辑
    2 月前
    2024-3-20 0:30:39

    大佬大佬,脚本非常有力量,解放了俺的双手,也更好做测试了 (/ω\) 就是希望未来更新能够有任务复制、是否加入队列的功能……拜托了!(。>︿<)_θ

    • 博主
      涂山白
      2 月前
      2024-3-21 10:28:06

      就是复制一个已经填写了信息的任务,和给每个任务加个开关是吧

      • 涂山白
        cpufan
        已编辑
        2 月前
        2024-3-22 11:28:56

        是的 ( •̀ ω •́ )✧ 任务复制功能可以应对用户的个性化需求重复输入问题,允许任务的启用/禁用开关也可以精细化管理队列;
        另外也有一些小小的建议:
        1、分页展示 →
        当存在较多任务处于一列显示时,修改有一些不方便……引入分页展示的话,期望上能实现优化的多任务管理界面;
        2、选择配置某一正面提示词组专属的负面提示词组 →
        某些角色默认会有”头盔“、”发带“甚至原设里就不存在的”尾巴“,搭配一些服装时会有些违和(头盔兔女郎,有尾巴的精灵等),现阶段如果要避免这些特征生成的话,就要单独新建任务并写入对应负面提示词……就只新建任务的方案而言会导致后期任务增多进而管理困难,如果允许为某个正面词条(像是角色)选择开通特有的负面提示词输入,而逻辑是最后让其拼接在所属任务的负面提示词之前,那在期望上能达到更精细化的包括角色在内的定制与高效的任务整合效果;
        3、终止按钮 →
        现阶段无法通过脚本本身提前终止整个任务队列,我都是打包好已生成图片后刷新页面再重新开始的 (′д` )…
        4、更稳定的自动重试 →
        可能存在请求发送过快、网络不稳定等问题导致服务器报错,但是之后可能就不再会发送生成请求了,直到手动发送后才可以继续队列任务;
        5、浏览页面适配(小问题) →
        1080p,最大化,浏览器缩放率大于 80 % 就看不到下方的启动任务队列按钮了,图形界面也不支持拖动把它拖上来(实现麻烦就算了)>﹏<
        我是在群里看到大佬发的博客的。如果方便的话,后续也可以QQ联系 (´▽`ʃ♡ƪ)

  2. 在蓝p假装日本人
    已编辑
    2 月前
    2024-3-25 20:36:04

    草,我在用nai3自动点击脚本的时候就想要这个功能来测试自己几百条长度的画师单子……面向gpt编程搞不定nai服务器端监听响应就算了。大佬可以参考下webui的dynamic prompt插件的功能,应该是类似的效果
    另外novelai除了429还会撞图像生成速度墙,推测是每天生成张数超过一定阈值后会检测总张数/总占用时间,超过就会锁一段时间的生成,长时间任务应该需要考虑这个问题

    • 在蓝p假装日本人
      在蓝p假装日本人
      已编辑
      2 月前
      2024-3-25 20:56:14

      提几条功能上的建议:

      1. 片段组作为这个插件的核心功能组件,在交互上应该有更大的自由度。具体来说,片段组如果可以通过拖动(或者↑、↓按钮)改变相互位置,对调整片段次序会很方便,prompt次序对nai3还是很重要的;
      2. 片段组应该可以作为一个单位存取。片段组可以单独导入/导出到任务中,避免重复输入和修改。对应地,片段组可以被命名/涂色/etc,便于管理。
      • 博主
        在蓝p假装日本人
        2 月前
        2024-3-26 15:46:01

        片段组拖动调顺序会做的。片段组复制,预计会做成“复制到剪切板”和“从剪切板新建”。

    • 在蓝p假装日本人
      在蓝p假装日本人
      已编辑
      2 月前
      2024-3-26 10:04:53
      1. 实际使用中单页面生成超过1000张(也可能是1200张?阈值我还不确定)会有几率在打包下载时下载失败。建议提供一个任务生成图像总数计数器,并且在超过阈值时推送警告;
      2. 能否在任务中控制图像边长切换?理想的话,可以自定义图像长宽(novelai支持16的倍数边长),并在尺寸超过免费额度时提醒;如果难以实现,提供几种默认尺寸选择的话也可以。
  3. 重装小兔
    2 月前
    2024-3-26 13:10:18

    佬 正向提示词-拼接-随机/轮询时能否固定指定词条组 这样就能roll同一角色的不同设定了

    • 博主
      重装小兔
      2 月前
      2024-3-26 15:47:57

      让一个组里只有一个提示词片段,这个片段就是必被选中了

      • 重装小兔
        cpufan
        2 月前
        2024-3-26 20:11:32

        原来如此 感谢大佬

  4. 边缘
    1 月前
    2024-3-28 22:21:43

    非常牛逼的脚本!大佬可以加个tag抽卡模式吗?就是把填入的长串tag打乱顺序,然后几个权重符号随机分配给单词这种功能,然后打乱的结果显示在文字框里面。我很喜欢这种抽卡的感觉!

  5. 重装小兔
    1 月前
    2024-4-03 9:42:51

    😭佬能加个任务完成自动保存压缩包吗 有时候出意外没保存太痛了

    • 博主
      重装小兔
      1 月前
      2024-4-03 11:26:27

      novelai设置里有自动保存,跑一张存一张

  6. Yuan
    1 月前
    2024-4-09 11:37:32

    佬能不能加一个拆分功能,比如说一个任务里三个片段组,我想把第三个组的部分提示词单独拿出来做成第四个片段组。要是可以的话能加上复制拆分吗,因为有时候只是希望将部分提示词复制拆分出来,而不是直接在原来的组里直接剪切。再反馈一个不怎么影响的bug,就是网页被翻译后脚本无法正常运作或者只会点击生图而不会填写提示词。

  7. Yuan
    1 月前
    2024-4-09 12:00:55

    能否给加个任务隐藏,因为有的不启用的任务提示词组太长了,编辑其他组的时候有点多余,要是能想下拉菜单一样就好,需要的时候再去点出来,不需要就隐藏。

  8. 在蓝p假装日本人
    4 周前
    2024-4-15 9:56:49

    能开发一个部分提示词组导出导入功能,或者跨任务的提示词移动功能吗?实际使用中会有例如画师组+动作组+描述组这种组合的任务,能够自由组合用起来比较方便,如果要在单个任务上修改有时候太麻烦了

    • 在蓝p假装日本人
      在蓝p假装日本人
      已编辑
      3 周前
      2024-4-16 15:08:04

      用起来发现几个bug:
      1.提示多少图能覆盖所有词的功能上限有点低,是不是超过255就nan了?
      2.脚本经常卡住,不能按下生成键,基本上2,30张就会有一次,我窗口非全屏,但是间隔已经设到6秒
      3.可以加入针对连接超时(unable to connect to novelai, 非429)的检测和重新生成功能吗?

      • 博主
        在蓝p假装日本人
        3 周前
        2024-4-16 23:35:43

        1.这个没有数量上限,NaN大概率是因为插件数据出错,例如导入旧版插件导出的json。
        2.大概率是梯子问题,从generate-image拿到响应到加载图片激活按钮,有时候有个很长的间隔,换优质节点完全没有这个间隔。
        3.连接断开的处理已经在这个版本加上了

        • 在蓝p假装日本人
          cpufan
          3 周前
          2024-4-17 10:54:45

          经过使用我也发现了连点失败的原因,就是服务器返回响应和图像返回本地的间隔问题,节点抽风的话有可能大于设置间隔导致点击到不能交互状态的按钮。
          能否切换成像其他脚本一样监视生成按钮状态?或者加一个点击(返回图像)响应超时重新点来保底,不然无人值守的长任务很容易断掉

        • 在蓝p假装日本人
          cpufan
          已编辑
          3 周前
          2024-4-17 21:11:48

          出现稳定的崩溃事件:单个片段组有700个片段,从中选10个排列,网页会无响应然后崩溃
          首先这700个片段的片段组是以前版本的(总数计算显示nan),不知道是不是旧版本数据结构的问题。在目前版本导出不会刷成新数据结构,感觉这里可以优化一下
          减到随机/轮询选2片段,生成1张图,无论排列还是组合都一样会崩溃
          选1片段不会有问题
          换成2个相同的700片段片段组,从中各随机抽1个片段,仍然会崩溃
          减少到100个取8个排列,新数据结构,还是会崩,对大数量的支持不是很好啊……
          崩溃信息是out of memory

          • 博主
            在蓝p假装日本人
            3 周前
            2024-4-19 16:29:44

            这个改好了,其实是170以上就会超范围,171的阶乘已经超Number的范围了

        • 在蓝p假装日本人
          cpufan
          3 周前
          2024-4-19 11:22:38

          另外随机度是不是有点问题,有几次100多个tag里5个tag至少出现了30%……当然我知道这是近真随机有可能出现的结果,能不能假随机一下让小样本抽取结果分布均匀一点

          • 博主
            在蓝p假装日本人
            3 周前
            2024-4-19 16:15:16

            用轮询就好了,如果给随机的结果做平均了,不就是打乱顺序的轮询吗

          • 在蓝p假装日本人
            cpufan
            已编辑
            3 周前
            2024-4-19 16:27:40

            又试了下真的有点怪,200多个标签出50张图几乎集中在10个标签上面,这个按期望来说不太应该
            复现了一次,两百张,从270个标签中选择,重复比较多的标签重复次数:
            23次,22次,12次,11次,10次x2,9次,8次,7次x4,6次,5次x3
            共16个标签已经占去接近150张图了,这个概率怎么也难说得上正常(t分布?)
            建议要么还是做成乱序表吧,这样的概率结果对实际应用的意图来说不太乐观

          • 博主
            在蓝p假装日本人
            3 周前
            2024-4-19 19:45:58

            发下json看看,度盘啥的都行

          • 在蓝p假装日本人
            cpufan
            3 周前
            2024-4-19 20:59:06

            链接: https://pan.baidu.com/s/1k01AaZg3s1GOz6F2arr2rQ?pwd=289m 提取码: 289m 复制这段内容后打开百度网盘手机App,操作更方便哦
            –来自百度网盘超级会员v6的分享

          • 博主
            在蓝p假装日本人
            3 周前
            2024-4-20 1:09:27

            现在的做法就是先生成316406个,乱序后取前300个。你的这个需求应该用多个任务,仅有一个300选1的组,其他组的选择尽可能少。想用300种代表316406种更是不可能,就算画师这第一组分布平均了,也不能保证后面的组的分布平均。

          • 在蓝p假装日本人
            cpufan
            3 周前
            2024-4-20 18:08:44

            多个任务是可以,但是现在ui对多任务不是很友好,包括不能跨窗口粘贴、太长的组不能折叠
            先生成再取在有超长组的情况下,开始任务会卡很久(这个json大概会卡2分钟),我觉得要么还是每张图单独抽,不要先生成所有组合会快点?
            我这里乱序本质上是为了在不可能遍历巨大特征空间的情况下下尽可能均匀抽样 ,摇出性能比较好的组合的可能性会大一些
            昨晚的又跑了300张,仍然有10个左右的tag占了一半的图,这跟我在matlab里按等概率抽样最后统计的结果分布也不太符合,试了下不同抽样次数,所有tag被抽到的次数应该是围绕期望的一个正态分布。现在脚本出的结果感觉应该还是排序有问题

          • 博主
            在蓝p假装日本人
            已编辑
            3 周前
            2024-4-20 22:13:04

            行事了,排序改好了。确实是排序的问题,js的排序有个要求对同一组a、b的值,comparefn(a, b)需要总是返回相同的值
            运行这就能看出区别了

            let arr = [];
            
            for (let index = 0; index < 316406; index++) {
                arr.push(Math.floor(index / 300));
            }
            
            function shuffle(arr) {
                for (let i = arr.length; i; i--) {
                    let j = Math.floor(Math.random() * i);
                    [arr[i - 1], arr[j]] = [arr[j], arr[i - 1]];
                }
                return arr;
            }
            
            const arr1 = arr.toSorted(() => Math.random() - 0.5);
            const shuffle_arr = shuffle(arr);
            
            let r1 = arr1.slice(0, 300);
            let r2 = shuffle_arr.slice(0, 300);
            
            let rec1 = {};
            r1.forEach((element) => {
                if (element in rec1) {
                    rec1[element] += 1;
                } else {
                    rec1[element] = 1;
                }
            });
            console.log("Math.random() - 0.5");
            console.log(rec1);
            
            let rec2 = {};
            r2.forEach((element) => {
                if (element in rec2) {
                    rec2[element] += 1;
                } else {
                    rec2[element] = 1;
                }
            });
            console.log("shuffle");
            console.log(rec2);
          • 在蓝p假装日本人
            cpufan
            已编辑
            3 周前
            2024-4-21 19:07:02

            已经验证过随机度没有问题了。不过总量太长的单组排列组合还是会内存溢出,e.g. 单个标签组含有200个tag选若干个tag做排列组合
            生成所有可能再随机排序的方法对总排列数太大的任务不适用,我目前用的总排列数10e6量级的任务点击开始任务后窗口完全卡死

          • 在蓝p假装日本人
            cpufan
            已编辑
            3 周前
            2024-4-19 16:28:59

            不用轮询是因为加上其他组的容量轮询要轮到天荒地老了,如果能给每个组单独设置轮询/随机的话比较灵活一点

  9. 重装小兔
    3 周前
    2024-4-21 17:58:36

    佬这个能不能指定某个队列任务的绘图尺寸什么的参数设定

  10. 在蓝p假装日本人
    已编辑
    2 周前
    2024-4-25 11:02:59

    能否加一个功能:从txt中导入片段组
    实现这样的快捷输入:导入txt文件,其中每行作为片段组中的一个子片段
    最近输入片段组快输得腱鞘炎了,希望能够减轻一下输入负担,能导入txt的话可以比较方便地对接其他自动化手段
    如果访问本地文件有困难,改成从剪贴板导入也可以,靠换行符分隔

    • 在蓝p假装日本人
      在蓝p假装日本人
      已编辑
      2 周前
      2024-4-26 11:31:58

      目前内存调用是不是没有考虑 长任务的总长度,我现在使用的导出约1mb大小的任务列表偶尔在开两个窗口时会内存溢出
      而且会极大拖慢窗口载入

  11. 海月
    2 周前
    2024-4-25 22:20:00

    大佬的插件很好用!要是有高亮同组任务中的重复tag的功能,以及一键将所有下划线转换为空格的功能就好了,token太少了老是不够用…ヾ(≧∇≦*)ゝ

  12. 叶立冬
    2 周前
    2024-4-26 22:18:36

    老哥!想要一个到自己选的出图张数到了自动下载的功能

  13. Yuan
    2 周前
    2024-4-28 11:10:49

    大佬,能不能给复制组的功能再加一条,就是可以粘贴到已有的组后,比如说我一个任务里有服装描述和动作描述组,我复制动作描述组后可以直接粘贴到服装组后面,现在的复制组功能只能粘贴到新建的组,如果要将两个组合并的话还是要重新输入一遍。

    • 博主
      Yuan
      1 周前
      2024-5-03 21:04:40

      动作描述组也不应该和服装组合并吧,要改顺序直接拖动左边的↕

  14. 113344
    1 周前
    2024-5-01 9:28:09

    感谢大佬,太好用了,就是感觉比直接开连点器好像出图速度慢很多不知道为什么,是有什么需要额外设置的吗?

  15. 匿名
    6 天前
    2024-5-05 1:53:36

    可以配合https://huggingface.co/collections/KBlueLeaf/dantaggen-65f82fa9335881a67573556b这个项目自动随机TAG然后再出图吗

    • 博主
      匿名
      5 天前
      2024-5-05 18:04:06

      你应该考虑使用https://github.com/Aedial/novelai-api,而不是浏览器脚本

  16. Yuan
    12 小时前
    2024-5-10 10:11:50

    我不知道是不是我的问题,新版本脚本导出的json文件再重新导入会显示json文件格式错误,我新建了一个只有“1 girl”的任务导出后重新导入依旧显示json文件格式错误,旧版本的json文件可以照常导入,不过因为没有尺寸设置会导致脚本无法运行,不过可以通过将旧json文件复制词组到新建任务后设置尺寸来解决。

    • 博主
      Yuan
      11 小时前
      2024-5-10 10:47:44

      已紧急修复

      • Yuan
        cpufan
        3 小时前
        2024-5-10 18:44:30

        太棒了୧(๑•̀⌄•́๑)૭

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇