見出し画像

LINEスタンプのタグ編集効率化ブックマークレット番外編【まとめて登録式Safari版】

こんにちは、毎度rorosukeです。

以前から、LINEスタンプ(特にLINEアニメスタンプ)のタグ編集を自動化するためのブックマークレットを公開しています。これが少し認知されてきたのか、何人かの方から使用報告や改良記事を投稿していただいており、とてもうれしく思っています。

それで前回、Chameさんの記事に刺激を受けての投稿をしました。それが次です。

今回ですが、別の一人であるかかのんさんの記事に触発されての投稿となります。みなさんの活動が私のエネルギーになってます。

ありがとうございます😊


LINEクリエイターズマーケットをスマホで使う猛者がいた

かかのんさんが投稿されていたのは、私のブックマークレットをスマホで使おうとして苦労されたという記事でした。それがこちらです。
なんと2回に分けての投稿、恐れ入ります。

まず驚いたのが、スマホでブックマークレットを使ってやろうというチャレンジ精神。すごすぎます。

そもそも、LINEスタンプなどを投稿する「LINEクリエイターズマーケット」はレスポンシブ非対応の完全PC仕様サイトです。そのため私のブックマークレットもPC前提で作っており、スマホ使用はまったく想定していませんでした。まさかスマホで使う猛者がいらっしゃるとは!

もちろん、スマホでもPC仕様のままアクセスして使うこと自体は可能です。それはそれで、もちろんアリ。

そこで改めて、スマホ(今回はiPhoneを対象。Androidは未所持のため未確認)での使用について考えてみたくなりました。


🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉
追記(2026/03/14)

Androidユーザーの「かかのん」さんから、Firefoxを使ってのタグ登録に成功したという記事が投稿されました。同様のスマホ環境の方は、ぜひお読みになってください。朗報です!

🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉🎉




スマホでブックマークレットを使うための条件

昨今、スマホもPC並みのスペックがありますから、何か区別して考える必要はあるの? と思うかもしれません。しかし実際には、スマホでの使用にあたって、2つの問題点が存在します。

問題点1:iPhoneのChromeではブックマークレットが使えない

iPhoneのChromeブラウザは、ブックマークレットに完全対応してないようです。そのため、iPhoneでブックマークレットを使うにはSafariを使うのが順当と言えます。

問題点2:Safariはブックマークレットの文字数制限が厳しい

SafariのブックマークレットはURL長が約8,000文字程度に制限されています。一方、PC向けのオリジナルブックマークレット(「まとめて登録式」の方です)はコードの文字数が約9,600文字あり、このままではSafariに登録できません。なので、何らかの方法で短くする必要があります。



Safari用・小容量版ブックマークレットの作成

1つずつ解決します。
まず問題点1については簡単です。Safariを使えば解決します。

問題点2については、コードを圧縮・最適化してSafariの制限に収まるよう修正することにしました。
具体的な方法ですが、けっこう力業です。変数名を1〜2文字に短縮、CSSスタイルの簡略化、UIのID名を1文字化などを行っています。
結果としてかなり削減でき、Safariの制限になんとか収めることに成功しました。



今回紹介するブックマークレットは2つです

改めて確認しておきましょう。
目的は、登録したLINEスタンプのタグ編集を効率的に行うことです。具体的には、次の2つの処理ブロックが必要です。

  • ① AIに画像を見せてタグ候補を選んでもらう

  • ② 選んでもらったタグ候補を、ブックマークレットというプログラムで一発登録する

今回、スマホでの使用を想定して、2つのブックマークレットを作ってみました。特に①については、本シリーズの中でも、初ブックマークレット化してみたものです。使い勝手を試していただければと思います。
なお、どちらもPCでも動作しています

それでは、順次説明していきます。


① プロンプトコピー用ブックマークレット

AIにタグを選ばせるためのプロンプト文を、毎回、テキストファイルを探して、コピペするのは面倒です。そこで、ブックマークレットを選ぶだけででクリップボードにコピーされるようにしました。あとはAIにペーストするだけでプロンプトが準備できます。

ブックマークレット実行でクリップボード記録される内容

添付画像はLINEスタンプです。各画像について、ファイル名(拡張子なし)をそのまま行頭の番号として使用し、下記タグリストから最適なタグを14個選んでください(タグリストにないものは絶対に使わないでください)。

【重要】ファイル名が「10」なら「10,」、「13」なら「13,」と出力してください。01,02...と振り直さないでください。

出力形式(この形式だけで、説明不要):
10,タグ1,タグ2,タグ3,タグ4,タグ5,タグ6,タグ7,タグ8,タグ9,タグ10,タグ11,タグ12,タグ13,タグ14
13,タグ1,タグ2,タグ3,タグ4,タグ5,タグ6,タグ7,タグ8,タグ9,タグ10,タグ11,タグ12,タグ13,タグ14

【タグリスト】
ちょっと待った,偉い,どうぞ,無理しないで,気をつけて,会いたい,終わった,いえいえ,タピる,まだ?,ゆっくり,難しい,わからない,お大事に,メシウマ,じゃーん,そうなの?,何か?,え?,うんうん,間違いない,任せろ,そっか,もちろん,よし,ねぇねぇ,おお,違う,お手数おかけします,終わった?,ワンチャン,大変,早く,確かに,どこ?,それで?,そうそう,どうしたの?,安心した,おーい,密です,やっほー,任せた,すみません,バイバイ,すごい,半端ない,だめ,NG,了解,承認,承知,さすが,お見事,やるね,いいなー,いただきます,ごちそうさま,やった,じゃあね,構って,バカな,なんと,あらま,えー,げっ,許さない,きたー,ありがとう,どういたしまして,感謝,助かる,お願いします,がっかり,ちーん,ごめんなさい,またね,素晴らしい,NO,YES,忙しい,はーい,OK,いいね,おめでとう,こんにちは,さようなら,こんばんは,おはよう,いってらっしゃい,おかえり,ただいま,いってきます,ようこそ,おまたせ,待ってる,待ってた,おやすみ,眠い,よろしく,暇,何してる?,おつかれさま,愛してる,恥ずかしい,うける,面白い,恐ろしい,引く,無理,心配,まじか,嘘,なるほど,ファイト,大丈夫,本当,元気?,どうしよう,うーん,まったり,わかった,わかるわかる,かわいい,そんな,ありえない,本気,はぁ?,いやいや,こらー,えっへん,どんまい,内緒,ほほう,はぁ,問題ない,お祝い,しまった,塞ぐ,おいしい,申し訳ない,何でもない,ふむふむ,ガンバレ,頑張る,何故,だるい,うはうは,辛い,それな,面倒,真面目,しっかり,まさか,よしよし,我慢,大げさ,廃人,ない,喪失,謙遜,べー,もやもや,賛成,ある,うるうる,抜け殻,エモイ,空虚,!!,!?,アホ,ラッキー,わいわい,照れる,てへ,ハハハ,フフフ,えへへ,プププ,ぺろ,ガクブル,びっくり,ゾクゾク,呆然,唖然,無念,ドキドキ,こっそり,キュート,ゆるい,復活,シュール,ちゃらい,衝撃,ひそひそ,しんどい,気合,きらきら,元気,緊急,ひやひや,限界,残念,断る,疲れた,どんより,ハート,ショック,もぐもぐ,パクパク,じゅるり,しんみり,ちくしょー,チェッ,ぷんぷん,ピキピキ,カチーン,ごはん,空腹,腹ペコ,わーい,のんびり,ラブラブ,ピンチ,ぐすん,ぎくり,あわあわ,キョトン,すやすや,ぽかーん,うきうき,ラブリー,プレッシャー,カップル,動揺,ルンルン,?,オーマイガー,もうすぐ,しょんぼり,ピース,あぶない,幸せ,幸運,満足,満腹,爆発,ノリノリ,キュン,萌える,もじもじ,バテる,一番,馬鹿,やばい,寝る,ワクテカ,おろおろ,贈る,ダッシュ,今行く,逃走,ふらふら,隠れる,遊ぶ,応援,ぺこり,しくしく,そわそわ,あくび,だらだら,休憩,テンパる,イチャイチャ,マッハ,起きる,目が覚める,土下座,チラッ,じーっ,ツッコミ,謝る,怒る,寒い,ぴえん,暑い,ジェラシー,かっこいい,ぼーっとする,安心,素敵,気まずい,悔しい,楽しい,ときめく,泣く,困る,不安,必死,一生懸命,最高,好き,笑う,吹く,にっこり,悲しい,寂しい,怖い,震える,呆れる,やれやれ,しらける,憂鬱,涙,冷静,焦る,甘える,腹が立つ,どや,にやにや,えーん,ひゃっほー,興奮,うらやましい,不満,号泣,弱った,わくわく,パニック,あちゃー,がーん,落ちこむ,嬉しい,驚く,期待,不機嫌,和む,とほほ,後悔,感激,へこむ,むかつく,いらいら,キレる,イエイ,今帰る,出勤,退勤,お風呂,到着,参る,飲む,勉強中,仕事中,出かける,脅迫,掃除,買い物,お使い,はしゃぐ,浮かれる,惚れる,慌てる,威張る,爆睡,食事,誤爆,料理,拍手,慰める,拒否,却下,うろうろ,爆笑,あたふた,バンザイ,落ち着く,悩む,急ぐ,くすくす,考える,走る,反省,覗く,頼む,ぐったり,食べる,イヌ,ネコ,ウサギ,ハムスター,ハリネズミ,ネズミ,トリ,ウシ,ウマ,ヒツジ,アルパカ,ブタ,クマ,コアラ,パンダ,キリン,ゾウ,ライオン,トラ,サル,ゴリラ,アザラシ,カワウソ,ペンギン,イルカ

これをプロンプトとして貼り付け、LINEスタンプ画像を添付してから送ると次のようなデータが生成されます。

上記プロンプトを実行するとAIが生成するデータ例

09,嬉しい,わーい,元気,はしゃぐ,バンザイ,最高,きらきら,楽しい,幸せ,ルンルン,ノリノリ,イエイ,うきうき,ひゃっほー
10,本気,ドキドキ,不安,緊張,うるうる,一生懸命,お願い,ハート,必死,しんどい,プレッシャー,ひやひや,動揺,焦る
01,わくわく,キュン,かわいい,きらきら,ときめく,嬉しい,期待,ラブリー,萌える,うきうき,幸せ,最高,楽しい,にっこり
02,ハート,ラブラブ,好き,幸せ,にっこり,キュン,嬉しい,愛してる,満足,甘える,イチャイチャ,ラブリー,最高,素敵
03,好き,ハート,ラブラブ,幸せ,にっこり,嬉しい,最高,キュン,ときめく,萌える,うきうき,楽しい,満足,素敵
04,食べる,もぐもぐ,おいしい,満足,うきうき,かわいい,キュート,幸せ,ごはん,空腹,腹ペコ,パクパク,じゅるり,料理
05,どうぞ,贈る,嬉しい,にっこり,優しい,幸せ,ラブリー,ありがとう,キュート,プレゼント,満足,わくわく,期待,素敵
06,ドキドキ,緊張,ハート,期待,不安,ときめく,かわいい,キュン,動揺,ひやひや,プレッシャー,焦る,そわそわ,本気
07,キュン,きらきら,ときめく,嬉しい,かわいい,ラブリー,わくわく,期待,萌える,うきうき,幸せ,最高,楽しい,素敵

本来タグとして必要なのは9個ですが、AIがリストに存在しないタグを間違って選択する可能性があります。そこで、多めの14個のタグを選択してもらうようにしてあります。これで9個以下の数しかタグ登録されないことはほぼなくなると思います。


② 一括タグ登録ブックマークレット(Safari版)

「まとめて登録式」のSafari版です。①で用意したリストを貼り付けるだけで、スタンプのタグを自動で順番に登録してくれます。

リストを貼り付けて「一括登録開始」を押す

機能の特徴:

  • ページを自動的に切り替えながら順番にタグを登録

  • スタンプが存在しないページ番号は自動スキップ

  • ページ切替後の待ち時間を0.5〜5秒で調整可能

  • 処理中はプログレスバーで進捗を表示

  • エラーが出た場合は完了後にまとめて表示

タグリストに9個以上のタグがある場合には、頭から有効なタグを9個選んで登録されるようにしています。



iPhoneでファイル名を付ける方法

プロンプトコピー用ブックマークレットを使う際、ChatGPTへ送る画像のファイル名に 01、02… という番号をつける必要があります。

iPhoneの「写真」アプリから直接ChatGPTに画像を添付すると、ファイル名が内部的な数値の羅列になってしまい、このままでは登録時に番号の整合性が合わなくなります(「まとめて登録式ブックマークレットは、番号をあてにして登録をするからです)。

これを回避するには、画像をいったん「ファイル」アプリに保存してください。「ファイル」アプリ内であれば、自由にファイル名を設定できます。

手順

① スタンプ画像を「ファイル」アプリに保存する

「写真」アプリでスタンプ画像を開き、共有ボタンをタップ → 「ファイルに保存」を選択 → 保存場所(iCloud DriveまたはiPhone本体)を選んで保存します。

② 「ファイル」アプリでリネームする

「ファイル」アプリを開き、保存した画像を長押し → 「名前を変更」をタップ → 01、02 のように番号に変更します。これをスタンプの枚数分繰り返します。

③ ChatGPTへは「ファイル」アプリから添付する

ChatGPTの添付ボタンをタップする際、「写真ライブラリ」ではなく「ファイル」を選択します。こうすることで、付けた番号がファイル名としてそのまま渡されます。

少し手間ですが、一度「ファイル」アプリに移してリネームするだけで、iPhoneだけで完結するワークフローが実現できます。



全体のワークフロー(操作の流れ)

① スタンプ画像を「ファイル」アプリに保存して、 01.png, 02.png... と命名して保存

「ファイル」アプリでファイル名を付けておく

② safariでプロンプトコピー用ブックマークレットを実行

 → プロンプトがクリップボードにコピーされる

③ ChatGPT / Gemini などを開き、プロンプトをドロップし、さらに「ファイル」アプリから画像を選択して添付する

 → ChatGPT / Gemini にプロンプトを送信

AIにプロンプトと画像を添付して送る

④ AIが返してくれたリストをクリップボードにコピー

クリップボードにコピー

⑤ safariでLINEクリエイターズマーケットのタグ編集ページ(01番などの画像のタグ編集ページ)を開く

⑥ まとめて登録式ブックマークレットを実行

 → ダイアログに対して④のリストを貼り付けて「一括登録開始」

リストを貼り付けて「一括登録開始」
終了したら「閉じる」を押す

⑦ 自動でリスト化したスタンプのタグ登録が完了!

登録されたタグ



ブックマークレットのコード

以下のコードをコピーして、Safariのブックマーク編集画面のURL欄に貼り付けてください(次節で流れを解説)。ダウンロード用のファイルもご用意しました。

① プロンプトコピー用

javascript:(function(){ var tags='ちょっと待った,偉い,どうぞ,無理しないで,気をつけて,会いたい,終わった,いえいえ,タピる,まだ?,ゆっくり,難しい,わからない,お大事に,メシウマ,じゃーん,そうなの?,何か?,え?,うんうん,間違いない,任せろ,そっか,もちろん,よし,ねぇねぇ,おお,違う,お手数おかけします,終わった?,ワンチャン,大変,早く,確かに,どこ?,それで?,そうそう,どうしたの?,安心した,おーい,密です,やっほー,任せた,すみません,バイバイ,すごい,半端ない,だめ,NG,了解,承認,承知,さすが,お見事,やるね,いいなー,いただきます,ごちそうさま,やった,じゃあね,構って,バカな,なんと,あらま,えー,げっ,許さない,きたー,ありがとう,どういたしまして,感謝,助かる,お願いします,がっかり,ちーん,ごめんなさい,またね,素晴らしい,NO,YES,忙しい,はーい,OK,いいね,おめでとう,こんにちは,さようなら,こんばんは,おはよう,いってらっしゃい,おかえり,ただいま,いってきます,ようこそ,おまたせ,待ってる,待ってた,おやすみ,眠い,よろしく,暇,何してる?,おつかれさま,愛してる,恥ずかしい,うける,面白い,恐ろしい,引く,無理,心配,まじか,嘘,なるほど,ファイト,大丈夫,本当,元気?,どうしよう,うーん,まったり,わかった,わかるわかる,かわいい,そんな,ありえない,本気,はぁ?,いやいや,こらー,えっへん,どんまい,内緒,ほほう,はぁ,問題ない,お祝い,しまった,塞ぐ,おいしい,申し訳ない,何でもない,ふむふむ,ガンバレ,頑張る,何故,だるい,うはうは,辛い,それな,面倒,真面目,しっかり,まさか,よしよし,我慢,大げさ,廃人,ない,喪失,謙遜,べー,もやもや,賛成,ある,うるうる,抜け殻,エモイ,空虚,!!,!?,アホ,ラッキー,わいわい,照れる,てへ,ハハハ,フフフ,えへへ,プププ,ぺろ,ガクブル,びっくり,ゾクゾク,呆然,唖然,無念,ドキドキ,こっそり,キュート,ゆるい,復活,シュール,ちゃらい,衝撃,ひそひそ,しんどい,気合,きらきら,元気,緊急,ひやひや,限界,残念,断る,疲れた,どんより,ハート,ショック,もぐもぐ,パクパク,じゅるり,しんみり,ちくしょー,チェッ,ぷんぷん,ピキピキ,カチーン,ごはん,空腹,腹ペコ,わーい,のんびり,ラブラブ,ピンチ,ぐすん,ぎくり,あわあわ,キョトン,すやすや,ぽかーん,うきうき,ラブリー,プレッシャー,カップル,動揺,ルンルン,?,オーマイガー,もうすぐ,しょんぼり,ピース,あぶない,幸せ,幸運,満足,満腹,爆発,ノリノリ,キュン,萌える,もじもじ,バテる,一番,馬鹿,やばい,寝る,ワクテカ,おろおろ,贈る,ダッシュ,今行く,逃走,ふらふら,隠れる,遊ぶ,応援,ぺこり,しくしく,そわそわ,あくび,だらだら,休憩,テンパる,イチャイチャ,マッハ,起きる,目が覚める,土下座,チラッ,じーっ,ツッコミ,謝る,怒る,寒い,ぴえん,暑い,ジェラシー,かっこいい,ぼーっとする,安心,素敵,気まずい,悔しい,楽しい,ときめく,泣く,困る,不安,必死,一生懸命,最高,好き,笑う,吹く,にっこり,悲しい,寂しい,怖い,震える,呆れる,やれやれ,しらける,憂鬱,涙,冷静,焦る,甘える,腹が立つ,どや,にやにや,えーん,ひゃっほー,興奮,うらやましい,不満,号泣,弱った,わくわく,パニック,あちゃー,がーん,落ちこむ,嬉しい,驚く,期待,不機嫌,和む,とほほ,後悔,感激,へこむ,むかつく,いらいら,キレる,イエイ,今帰る,出勤,退勤,お風呂,到着,参る,飲む,勉強中,仕事中,出かける,脅迫,掃除,買い物,お使い,はしゃぐ,浮かれる,惚れる,慌てる,威張る,爆睡,食事,誤爆,料理,拍手,慰める,拒否,却下,うろうろ,爆笑,あたふた,バンザイ,落ち着く,悩む,急ぐ,くすくす,考える,走る,反省,覗く,頼む,ぐったり,食べる,イヌ,ネコ,ウサギ,ハムスター,ハリネズミ,ネズミ,トリ,ウシ,ウマ,ヒツジ,アルパカ,ブタ,クマ,コアラ,パンダ,キリン,ゾウ,ライオン,トラ,サル,ゴリラ,アザラシ,カワウソ,ペンギン,イルカ'; var prompt='添付画像はLINEスタンプです。各画像について、ファイル名(拡張子なし)をそのまま行頭の番号として使用し、下記タグリストから最適なタグを14個選んでください(タグリストにないものは絶対に使わないでください)。\n\n【重要】ファイル名が「10」なら「10,」、「13」なら「13,」と出力してください。01,02...と振り直さないでください。\n\n出力形式(この形式だけで、説明不要):\n10,タグ1,タグ2,タグ3,タグ4,タグ5,タグ6,タグ7,タグ8,タグ9,タグ10,タグ11,タグ12,タグ13,タグ14\n13,タグ1,タグ2,タグ3,タグ4,タグ5,タグ6,タグ7,タグ8,タグ9,タグ10,タグ11,タグ12,タグ13,タグ14\n\n【タグリスト】\n'+tags; navigator.clipboard.writeText(prompt).then(function(){ alert('✅ プロンプトをコピーしました!\n\nAIに画像をドロップして貼り付けてください。'); }).catch(function(){ var ta=document.createElement('textarea'); ta.value=prompt; ta.style.cssText='position:fixed;top:0;left:0;opacity:0;'; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); alert('✅ プロンプトをコピーしました!\n\nAIに画像をドロップして貼り付けてください。'); }); })();


② 一括タグ登録用「まとめて登録式」のSafari版

javascript:(function(){ var W=function(ms){return new Promise(function(r){setTimeout(r,ms);});}; var $=function(id){return document.getElementById(id);}; var ov=document.createElement('div'); ov.style.cssText='position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:10000;display:flex;justify-content:center;align-items:center;font-family:sans-serif;'; var bx=document.createElement('div'); bx.id='Z'; bx.style.cssText='background:#fff;border-radius:10px;padding:20px;max-width:600px;width:92%;box-shadow:0 8px 30px rgba(0,0,0,.3);max-height:90vh;overflow-y:auto;'; bx.innerHTML='<h2 style="margin:0 0 8px;font-size:16px;">📋 一括タグ登録</h2>' +'<p style="color:#555;font-size:12px;margin:0 0 4px;">形式(1行=1スタンプ、タグ最大9個):</p>' +'<p style="font-family:monospace;background:#f3f3f3;padding:5px 8px;border-radius:4px;font-size:12px;margin:0 0 8px;">01,タグA,タグB 02,タグX,タグY</p>' +'<p style="color:#e53935;font-size:12px;margin:0 0 10px;">※スタンプタグ編集ページで実行してください</p>' +'<textarea id="A" style="width:100%;height:180px;border:1px solid #ccc;border-radius:6px;padding:8px;font-size:12px;font-family:monospace;box-sizing:border-box;resize:vertical;" placeholder="01,ぺこり,ありがとう&#10;02,おめでとう,お祝い"></textarea>' +'<div style="display:flex;align-items:center;gap:8px;margin:10px 0 4px;">' +'<label style="font-size:12px;white-space:nowrap;">⏱ 切替待ち:</label>' +'<input id="B" type="number" min="0.5" max="5" step="0.5" value="0.5" style="width:70px;padding:5px;border:1px solid #ccc;border-radius:4px;font-size:12px;text-align:center;">' +'<span style="font-size:12px;">秒(遅い環境は増やす)</span>' +'</div>' +'<div id="C" style="margin:8px 0;font-size:13px;color:#555;min-height:18px;"></div>' +'<div id="D" style="display:none;background:#eee;border-radius:4px;height:6px;margin-bottom:8px;">' +'<div id="E" style="background:#4caf50;height:6px;border-radius:4px;width:0%;transition:width .3s;"></div>' +'</div>' +'<div style="display:flex;gap:8px;">' +'<button id="F" style="flex:1;background:#4caf50;color:#fff;border:none;padding:12px;border-radius:6px;cursor:pointer;font-weight:bold;font-size:14px;">▶ 一括登録開始</button>' +'<button id="G" style="background:#9e9e9e;color:#fff;border:none;padding:12px 16px;border-radius:6px;cursor:pointer;font-size:13px;">✕ 閉じる</button>' +'</div>' +'<div id="H" style="display:none;margin-top:12px;padding:8px;background:#fff3f3;border:1px solid #f44336;border-radius:6px;font-size:12px;color:#c62828;"></div>'; ov.appendChild(bx); document.body.appendChild(ov); var ss=function(msg,col){$('C').style.color=col||'#555';$('C').textContent=msg;}; var sb=function(c,t){$('D').style.display='block';$('E').style.width=(c/t*100)+'%';}; $('G').onclick=function(){if(document.body.contains(ov))document.body.removeChild(ov);}; ov.onclick=function(e){if(e.target===ov&&document.body.contains(ov))document.body.removeChild(ov);}; bx.onclick=function(e){e.stopPropagation();}; var gn=function(){ var s=document.querySelector('button.btn-dropdown .btn-dropdown-text'); if(!s)return null; var n=parseInt(s.textContent.trim(),10); return isNaN(n)?null:n; }; var pb=function(sel,before,ms){ return new Promise(function(resolve){ (async function(){ var b=document.querySelector(sel); if(!b||b.disabled)return resolve(null); b.click(); await W(ms); for(var t=0;t<12;t++){ var c=gn(); if(c!==null&&c!==before)return resolve(c); await W(250); } resolve(null); })(); }); }; var nav=function(num,ms){ return new Promise(function(resolve){ (async function(){ var c=gn(); if(c===null)return resolve('e'); if(c===num)return resolve('ok'); for(var s=0;s<40;s++){ c=gn(); if(c===null)return resolve('e'); if(c===num)return resolve('ok'); var sel=num>c?'button.btn-next-image':'button.btn-previous-image'; var nn=await pb(sel,c,ms); if(nn===null)return resolve('e'); if(nn===num)return resolve('ok'); if(num>c&&nn>num)return resolve('s'); if(num<c&&nn<num)return resolve('s'); } resolve('e'); })(); }); }; var at=function(tags){ return new Promise(function(resolve){ (async function(){ var ls=document.querySelectorAll('label.cm-product-image-tag'); if(!ls.length)return resolve({ok:false,msg:'タグエリアが見つかりません'}); for(var i=0;i<ls.length;i++){ var cb=ls[i].querySelector('input[type="checkbox"]'); if(cb&&cb.checked){ls[i].click();await W(40);} } await W(250); var sp=document.querySelectorAll('span.cm-product-image-tag-name-text[data-test="tag-name"]'); var av={}; for(var j=0;j<sp.length;j++)av[sp[j].textContent.trim()]=1; var vl=tags.filter(function(t){return av[t];}).slice(0,9); var iv=tags.filter(function(t){return!av[t];}); var cnt=0; for(var k=0;k<vl.length;k++){ for(var m=0;m<sp.length;m++){ if(sp[m].textContent.trim()===vl[k]){ var lb=sp[m].closest('label.cm-product-image-tag'); if(lb){var ck=lb.querySelector('input[type="checkbox"]');if(ck&&!ck.checked){lb.click();cnt++;await W(45);break;}} } } } var sv=['button[data-test="save-btn"]','button[data-test="apply-btn"]','.cm-save-btn button']; for(var x=0;x<sv.length;x++){var bn=document.querySelector(sv[x]);if(bn&&!bn.disabled){bn.click();await W(600);break;}} resolve({ok:true,count:cnt,invalid:iv}); })(); }); }; $('F').onclick=function(){ (async function(){ var raw=$('A').value.trim(); if(!raw){alert('データを入力してください');return;} var wms=Math.round((parseFloat($('B').value)||0.5)*1000); var data=[]; var lines=raw.split('\n'); for(var i=0;i<lines.length;i++){ var pts=lines[i].trim().split(',').map(function(p){return p.trim();}).filter(function(p){return p;}); if(pts.length<2)continue; var n=parseInt(pts[0],10); if(isNaN(n)||n<1||n>40)continue; data.push({num:n,tags:pts.slice(1).slice(0,14)}); } if(!data.length){alert('有効な行がありません。\n形式: 01,タグ1,タグ2,...');return;} data.sort(function(a,b){return a.num-b.num;}); if(gn()===null){alert('ページ番号が取得できません。\nスタンプタグ編集ページで実行してください。');return;} $('F').disabled=$('G').disabled=$('A').disabled=$('B').disabled=true; var err=[],sum=[]; for(var i=0;i<data.length;i++){ var num=data[i].num,tags=data[i].tags; var ns=String(num).padStart(2,'0'); ss('処理中 '+(i+1)+'/'+data.length+':'+ns+'番へ移動中... (現在:'+gn()+'番)'); sb(i,data.length); var nv=await nav(num,wms); if(nv==='e'){err.push(ns+'番: ページ遷移に失敗 (現在:'+gn()+'番)');continue;} if(nv==='s'){sum.push(ns+'番: スキップ(ページが存在しません)');continue;} var rdy=false; for(var t=0;t<12;t++){if(document.querySelectorAll('label.cm-product-image-tag').length){rdy=true;break;}await W(250);} if(!rdy){err.push(ns+'番: タグエリアが表示されませんでした(待ち時間を増やしてください)');continue;} ss('処理中 '+(i+1)+'/'+data.length+':'+ns+'番にタグ登録中...'); var res=await at(tags); if(!res.ok){err.push(ns+'番: '+res.msg);continue;} var nt=res.invalid.length?' / 未対応タグ: '+res.invalid.join(','):''; sum.push(ns+'番: '+res.count+'個登録'+nt); ss('✓ '+ns+'番: '+res.count+'個登録'+nt,'#388e3c'); await W(300); } sb(data.length,data.length); ss('✅ 完了! '+data.length+'件処理しました。','#1b5e20'); $('G').disabled=$('B').disabled=false; $('G').textContent='閉じる'; if(err.length){var ed=$('H');ed.style.display='block';ed.innerHTML='<strong>⚠️ エラー一覧</strong><br>'+err.join('<br>');} console.log('[一括タグ登録]\n'+sum.join('\n')); })(); }; })();



Safariへの登録方法

1.Safariで任意のページを開き、画面下部の共有ボタンをタップ

共有ボタンをタップ

2.「ブックマークに追加」をタップして保存

ブックマークに追加をタップ

3.ブックマーク一覧を開き、いま追加したブックマークを長押し →「編集」

編集をタップ

4.URL欄の内容を全部消して、上記のコードを貼り付けて保存

任意を名前を付け、URL欄にコードをペーストし保存する

5.使いたいページでブックマーク一覧からタップするだけで実行できます

ブックマークをタップ
登録したブックマークレットを選択



まとめ:一歩ずつ前進ですね

今回の記事の、ポイントのおさらいです。

  • iPhoneのChromeではブックマークレットは使えないと思われるが、Safariでは使える

  • Safariの容量に収まるようにコードを圧縮しまくった

  • プロンプトコピー一括タグ登録の2つを組み合わせることで、APIキー不要・スマホからでもタグ編集を効率化できる

  • スタンプ画像を「ファイル」アプリに保存して、ファイル名を番号付きにしておくのがポイント

かかのんさんの記事がなければ、スマホ対応を考えることはなかったと思います。記事を投稿してくださった皆さん、ありがとうございました。

実際のところ、使い物になるかは分かりませんが、よかったらお試しください!
また、改善点などがあれば、コメしていただければと思います。

以上!

PS:本シリーズの初記事をお読みになりたい方は、次をご覧ください。



✨ もっと確実に登録したい方へ

よろしければですが、
PCでも使われている方にお知らせです。

タグの登録漏れ・処理の不安定さ、
実は改善された新バージョンがあります。

この先に有益な情報があります。

いいなと思ったら応援しよう!

ROROSUKE LABO 記事なり、プログラムなりが役に立ったと思った方は、 チップの応援よろしくお願いいたします。 次の開発もがんばろうかな、という気になりますのだ (笑)