Safariや各種アプリからコピーした YouTube のURLを、そのまま開くとブラウザで再生されたり、意図しない表示になったりすることがあります。
このショートカットは、クリップボード上のYouTube URLを解析し、YouTubeアプリ用のURLスキーム(vnd.youtube://)に変換して開くためのものです。
対応するケースは次の3つです。
youtube.com/shorts/...(Shorts)youtube.com/watch?v=...(通常動画)- それ以外(念のためのフォールバック:スキームだけ差し替えてアプリで開く)
全体の流れ
- クリップボードからURL文字列を取得
- Shorts形式かどうか正規表現で判定 → 動画IDを取り出す
- 通常動画形式かどうか正規表現で判定 → 動画IDを取り出す
- 取得できたIDに応じて
vnd.youtube://...を組み立て - 最後にURLを開く
手順(アクション構成)
1) クリップボードの内容を取得する
- アクション:「テキスト」
- 内容:「クリップボード」
- ここで得た文字列を、記事中では
inputUrlと呼びます
以降の処理は、この
inputUrlが YouTube の何形式かを判定して、適切な “YouTubeアプリで開くURL” に変換する段階です。
2) Shorts URLかどうか判定し、動画IDを抜き出す
- アクション:「一致するテキスト」(
inputUrlに対して) - 正規表現:
^https?://(?:www\.|m\.)?youtube\.com/shorts/([\w-]{11})(?:\?.*)?
-
一致した場合、次でグループ(動画ID)を取得
- アクション:「一致したテキストからグループを取得」
- グループのインデックス:1
- ここで得た11文字のIDを
shortsIdと呼びます
この時点で shortsId が取れれば Shorts と確定です。
3) 通常動画(watch?v=)かどうか判定し、動画IDを抜き出す
Shorts でない場合に備え、通常動画のURLもチェックします。
- アクション:「一致するテキスト」(
inputUrlに対して) - 正規表現:
^https?://(?:www\.|m\.)?youtube\.com/watch\?[^#]*\bv=([A-Za-z0-9_-]{11})
-
一致した場合、次でグループ(動画ID)を取得
- アクション:「一致したテキストからグループを取得」
- グループのインデックス:1
- ここで得たIDを
videoIdと呼びます
4) 条件分岐で「開くべきURL」を組み立てる
ここからがショートカットの要点です。 取得できたIDに応じて、YouTubeアプリ用のURLを作ります。
4-1) Shorts IDが取れた場合
- 条件:
shortsIdが任意の値 - アクション:「URL」
- 内容:
vnd.youtube://youtube.com/shorts/{shortsId}?
これを openUrl として扱います
4-2) Shortsでなく、通常動画IDが取れた場合
- 条件:
videoIdが任意の値 - アクション:「URL」
- 内容:
vnd.youtube://youtu.be/{videoId}
これも openUrl になります
4-3) どちらのIDも取れなかった場合(フォールバック)
Shortsでもwatchでもない形式(共有URLが変則、別ドメイン、パラメータが特殊等)の可能性があります。
この場合は、URLのスキーム(https:// など)だけを vnd.youtube:// に置換して、アプリ起動を試みます。
-
アクション:「テキストを置き換え」
-
対象:
inputUrl -
置換(正規表現ON):
- 検索:
^[^:]+\:// - 置換:
vnd.youtube://
- 検索:
結果を fallbackUrlText と呼びます
次に、
- アクション:「URL」
- 内容:
fallbackUrlText
これがフォールバック時の openUrl
5) 最終的にURLを開く
最後に、上の分岐で得られたURL(openUrl)を開きます。
- アクション:「URLを開く」
- 対象:
openUrl
まとめ:このショートカットで得られる効果
- YouTube Shorts を YouTubeアプリで直接開ける
- 通常動画(watch?v=)も IDを抽出して確実にアプリで開ける
- 想定外のURL形式でも スキーム差し替えでアプリ起動を試せる