- 毎回YouTubeで動画を見る際に広告が出てきてウザい。。。
- 長めの広告だと5秒後に毎回「広告をスキップする」を押さなくてはならなくて面倒。。
- かといって、ネットで調べてでてくるツールは使えないものばかり。。
実際ネットでYouTube広告を消すことのできるツールについて調べてみると、使えないツールを紹介しているケースは多いです。
なぜなら、YouTube側がそうしたツールに対して広告をスキップできないように対策しているからです。
当然ながらYouTubeは広告収入が収入の源泉の為、こういったツールは対策されてしまうのです。
そこでこの記事では、YouTubeには対策できない広告を自動でスキップするツールの作り方・使い方を説明します。
この記事を読めば、ブラウザでYouTube広告をスキップすることができるツールを作ることができます。
また、画像認識を利用したツールを作成するので、アプリ開発の知識も同時に身に着けることができます。
今回作成するYouTube広告の自動スキップツールの動作イメージは次の通りです。
また、ツールを作るために必要なソースは次の通りです。
# coding:utf-8
def handler(event):
region.click(youtube);
print("apeared image")
event.repeat()
# ユーザに監視するエリアを指定させる
region = Region(0,0,1280,680)
youtube =
region.onAppear(youtube, handler)
region.observeInBackground(FOREVER)
# ユーザの入力を受け付ける
str = input(u"アプリの起動時間を入力")
if str.isdecimal():
wait(int(str))
r.stopObserver()
print("finished")
目次
本記事は次の順番でYouTube広告の自動スキップツールの作り方を次の2つのステップで説明していきます。
- SikuliXをダウンロードする
- YouTube広告の自動スキップツールを開発する
ステップ1:SikuliXをダウンロードする
今回作成する寿司打自動回答ツールは、SikuliX(シクリ)で開発します。
開発言語はPythonで行っていきます。
SikuliXは次のような特徴を持ったアプリ開発用の無料ツールです。
- 画像認識の機能を持ち、容易に画像認識を利用したプログラムを利用できる
- 様々なプログラミング言語をサポートしている
- Python 、Ruby 、JavaScript 、Javaなどをサポート
- 画像に含まれる文字を認識する機能(OCR)を備えている
SikuliXのダウンロード・起動方法
最新のSikuliXを次のサイトからダウンロードしてください。
“Download the ready to use sikulixide-x.x.x …”を押してお使いのOSにあったファイルをダウンロードしてください。


ステップ2:YouTube広告の自動スキップツールを開発する
本記事で説明するツールは次の流れで処理をするようになっています。
- 「広告をスキップ」するを押下するスクリーン領域(
Region
)を指定する - クリックする対象の画像を指定する
- ②の画像が表示されたら、クリックする
- ダイアログを表示して、入力された時間だけ処理を継続する
本記事では、画面全体を対象としてアプリを開発しますが、領域を絞れば絞るだけ精度が上昇するので、ご自由に絞ってもOKです。(絞った場合は、その領域の外で「広告をスキップ」が表示されてもクリックしないのでご注意ください)
そして今回、クリックする対象とする画像は次の画像です。

アプリ起動後に次のようなダイアログ(ポップアップする画面のこと)を表示して、入力を待つ状態にします。

ダイアログを表示している間もアプリは起動しているので、ずっと起動したい場合はこのダイアログをずっと表示していればずっと動作します。
このダイアログに例えば「10」と入力すると、10秒間アプリを継続後にアプリを終了します。
①:「広告をスキップ」するを押下するスクリーン領域を指定する
Region(0,0,1280,680)
は私が利用しているノートPCの画面全体を表しています。
Region(0, 0, 画面幅(px), 画面高さ(px))
を指定すると全画面が選択できます。

②:クリックする対象の画像を指定する
本ツールでクリックする対象の画像を指定します。
左上の「スクリーンショットを撮る」を押下するとマウスで選択した範囲の画像が選択できるようになります。


③:②の画像が表示されたら、クリックする
②の画像が表示されたら、自動でクリックするようにします。
次の画像の赤枠のコードを追記してください。

④:ダイアログを表示して、入力された時間だけ処理を継続する
ツールの起動時間を指定するためのダイアログを表示するようにします。

ツールの使い方
実際にツールを使う方法を説明します。
ツールの起動にはSikuliXの「実行」ボタンを押下します。

あとはYouTubeで動画を再生するだけで、自動で広告をスキップするようになります。
まとめ
YouTubeの広告を自動スキップするツールの作り方は次の2ステップでした。
- SikuliXをダウンロードする
- YouTube広告の自動スキップツールを開発する
SikuliXを使えば簡単にツールの作成ができます。
今回の細かいコードの説明について気になる方は、この後で説明しているので読んでみてください。
本ブログでは、未経験者が転職市場で高く評価され、好条件で転職する為の方法を説明しています。
アプリ開発を通じたスキルアップ、プログラミングを利用した「稼ぐ力」のアップについても説明していますので、気になる方はご覧になってください。

おまけ:SikuliXで知っておきたいメソッドを解説
onAppear
[使い方]
onAppear( image, handler )
画像を見つけたら、handlerの処理を実施します。
[引数]
image: 画像、handler: 画像を見つけた時に呼び出すメソッド
onAppear
は今回のアプリの要となるメソッドです。onAppear
はRegion
クラスのメソッドで、範囲指定した領域の中で引数で指定した画像が見つかった場合に、handler
を呼び出します。
Region
クラスについては次の記事で説明しています。

サンプルコードについても載せておきます。
# 画像を見つけたら実施する処理
def handler(event):
print("find image !")
# 領域(Region)を指定する
region = (領域を指定する画像)
image = (領域で検知したい画像)
region.onAppear( image, handler )
region.observeInBackground(FOREVER)
wait(10)
region.stopObserver()
region
で指定した領域にimage
が見つかると、handler
が実施され「find image !」と表示されます。
また、このままだと、imageを一度検知すると処理が終了してしまいますが、handler
の中でevent.repeat()
を実行すると続けて画像の探索を行います。
input
[使い方]
input( string )
ユーザからの入力を受け付ける処理
[引数]
string: 入力を受け付ける際にユーザに表示する文章
[返り値]
ユーザが入力した文字列
Python標準のメソッドであるinputはSikulliXで使うとダイアログ(Sikulli Input)として表示されます。ユーザが入力した内容が返り値として返されるので、変数などで受け取り処理をすることができます。
YouTube広告自動スキップアプリのコードを解説
まずは、アプリのコードすべてを掲載します。その後、ポイントとなる箇所を紹介していきます。
# coding:utf-8
def handler(event):
region.click(youtube);
print("apeared image")
event.repeat()
# ユーザに監視するエリアを指定させる
region = Region(0,0,1280,680)
youtube =
region.onAppear(youtube, handler)
region.observeInBackground(FOREVER)
# ユーザの入力を受け付ける
str = input(u"アプリの起動時間を入力")
if str.isdecimal():
wait(int(str))
r.stopObserver()
print("finished")
Region(0,0,1280,680)
は筆者の画面全体を表しています。
Region(0, 0, 画面幅(px), 画面高さ(px))
を指定すると全画面が選択できます。これを指定するのが面倒な人は、SikulixIDEのRegionから選択してください。

そして、onApear
を使ってこのRegion
にYouTube広告の画像を見つけるとhandler
を実行します。
handler
の中ではYouTube広告をクリックする処理を書いており、これによって広告を自動でスキップします。
また、アプリ起動後にinput()
でユーザからアプリの起動時間の入力を待つようにします。
この入力した内容を変数string
で受け取り、入力された文字列が数値なのかバリデーションを実施し、数値が入力された場合はその時間だけ処理を停止します。