ニコニコ動画への動画投稿効率化ツール(エクセルVBAマクロ)

副業

FIRE実現のために、ニコニコ動画投稿にて副業を実践しているものの、手間がかかって思うように捗らないという方、多いのではないかと思います。

そこで、エクセルマクロ(VBA)でニコニコ動画への投稿・更新作業を自動化・効率化するツールを作成しましたので、シェアします。

自動投稿する機能や、クリエーター奨励プログラムへの登録を自動設定する機能など、色々な機能を実装しました。

参考になれば幸いです。

エクセルブックの紹介

エクセルにて、以下のような管理台帳シートを作って、当該シートを用いて、動画投稿や更新を管理します。

ニコニコ動画への動画投稿自動化ツール(エクセルVBAマクロ)

実際のマクロ入りブックは以下です。

上記ブックのマクロが正常動作するには、Microsoftのエクセルが必要です。お持ちでない方は以下にて購入を検討ください。

本マクロブックのサポートやカスタマイズについては、条件によって、有償にて対応受付しております。

以下、クラウドワークスのアカウントよりご依頼いただければ幸いです。

FIRE太郎さん(その他)に依頼・外注する | 簡単ネット発注なら【クラウドワークス】
日本最大のクラウドソーシング「クラウドワークス」にご登録いただいているFIRE太郎さんのプロフィールです。その他のスキルを持つプロフェッショナルに1時間から仕事を気軽に発注!発注者は手数料無料。

ニコニコ動画への動画投稿効率化ツール(VBAマクロ)の紹介

マクロの初期設定

まず、初期設定が必要です。

まず、以下記事を参考に、Seleniumの設定をします。

基本機能

動画投稿する機能

以下の通り、動画を新規投稿する機能を設けています。

check列に1を入れた行を対象に動きます。

エクセルの、「日本語タイトル」をタイトルにセット

「ニコニコ説明文」を説明文にセット

また、前回動画の説明文も更新しに行きます。


Sub ニコニコ動画アップロード(PROFILE_PATH As String, FILE_PATH As String)

driver.AddArgument ("user-data-dir=" & PROFILE_PATH)

driver.Start "chrome"

For i = 3 To Workbooks("動画管理.xlsm").Sheets("リスト").Cells(Rows.Count, 31).End(xlUp).Row

    If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 1) <> "" Then

        driver.ExecuteScript ("window.open()")
        driver.SwitchToNextWindow
        
        driver.Get "https://www.upload.nicovideo.jp/garage/upload"
        Application.Wait Now + TimeSerial(0, 0, 5)
        
        driver.FindElementByCss("#root > div > div.css-115o6j6 > div > div.css-12krktm > div.css-omndbj > input").SendKeys FILE_PATH & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 2)

        driver.FindElementByXPath("//*[@id='root']/div/div[3]/div/div[2]/div[2]/div/div[2]/input").SendKeys ks.Control, "a"
        driver.FindElementByXPath("//*[@id='root']/div/div[3]/div/div[2]/div[2]/div/div[2]/input").SendKeys ks.Delete
        
        driver.FindElementByXPath("//*[@id='root']/div/div[3]/div/div[2]/div[2]/div/div[2]/input").SendKeys Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 5)

        driver.FindElementByCss("#root > div > div.css-r6lg6c.css-81qgnv > div > div.css-cqvejz > div.css-fx35lp.css-1mth1hl > div.css-15c4pjt > div > div.ql-container.ql-snow > div.ql-editor.ql-blank > p").SendKeys Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 50)

        Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 46) = "sm" & Mid(driver.Url, 47, 8)


        driver.FindElementByXPath("//*[@id='root']/div/div[3]/div/div[2]/div[4]/fieldset/div/label/span[1]/span[1]/input").Click

        If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 10) = "ゲーム" Then

            driver.FindElementByCss("#mui-component-select-genreKey").Click
            Application.Wait Now + TimeSerial(0, 0, 1)
            driver.FindElementByXPath("/html/body/div[6]/div[3]/ul/li[16]").Click
        End If
        
        
        driver.FindElementByXPath("/html/body/div[1]/div/div[3]/div/div[2]/div[7]/div[2]/form/div/div/div/input").SendKeys Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 49)
        driver.FindElementByXPath("/html/body/div[1]/div/div[3]/div/div[2]/div[7]/div[2]/form/div/div/div/div/button/span[1]").Click


        driver.FindElementByXPath("/html/body/div[1]/div/div[3]/div/div[2]/div[14]/button/span[1]").Click


        driver.FindElementByXPath("//*[@id='root']/div/div[3]/div/div[2]/div[13]/fieldset/div/label/span[2]").Click

        driver.FindElementByXPath("//*[@id='mui-component-select-communityId']").Click
        
        driver.FindElementByXPath("//*[@id='menu-communityId']/div[3]/ul/li[2]").Click
        
        driver.ExecuteScript ("window.open()")
        driver.SwitchToNextWindow
        
        '過去動画更新
        driver.Get "https://www.nicovideo.jp/watch/" & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i - 1, 46) & "/edit/owner_comment?edit_from=button&easy=1&ref=pc_watch_uploadermenu"


        driver.FindElementByCss("#nicos_jump").SendKeys Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i - 1, 47)

        driver.FindElementByCss("body > div.BaseLayout-main > section > form > p.WatchNicoscriptEasyEditPage-formSubmit > button").Click

        
        driver.Get "https://www.upload.nicovideo.jp/garage/videos?modalEditFileId=" & Mid(Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i - 1, 46), 3, 30) & "&keyword=&sortKey=registeredAt&sortOrder=desc&page=1&pageSize=20"

        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[1]/div/div[2]/input").SendKeys ks.Control, "a"
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[1]/div/div[2]/input").SendKeys ks.Delete
        
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[1]/div/div[2]/input").SendKeys Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i - 1, 5)

        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[2]/div[1]").SendKeys ks.Control, "a"
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[2]/div[1]").SendKeys ks.Delete
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[2]/div[1]").SendKeys Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i - 1, 50)


        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[1]/div/button/span[1]/span").Click

        driver.FindElementByXPath("/html/body/div[6]/div[3]/div/div[3]/div/button[2]").Click

        Application.Wait Now + TimeSerial(0, 0, 2)

    End If

Next i


End Sub

動画内容を更新する機能

以下の通り、タイトルや説明文を、エクセル上で修正した内容で更新する機能を設けています。

check列に1を入れた行を対象に動きます。

Sub ニコニコ動画_更新and次の動画登録(PROFILE_PATH As String)

Set driver = Nothing

driver.AddArgument ("user-data-dir=" & PROFILE_PATH)

For i = 3 To Workbooks("動画管理.xlsx").Sheets("リスト").Cells(Rows.Count, 6).End(xlUp).Row

    If Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 1) <> "" Then


        driver.Get "https://www.nicovideo.jp/watch/" & Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 46) & "/edit/owner_comment?edit_from=button&easy=1&ref=pc_watch_uploadermenu"


        driver.FindElementByCss("#nicos_jump").SendKeys Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 47)

        driver.FindElementByCss("body > div.BaseLayout-main > section > form > p.WatchNicoscriptEasyEditPage-formSubmit > button").Click

        
        driver.Get "https://www.upload.nicovideo.jp/garage/videos?modalEditFileId=" & Mid(Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 46), 3, 30) & "&keyword=&sortKey=registeredAt&sortOrder=desc&page=1&pageSize=20"

        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[1]/div/div[2]/input").SendKeys ks.Control, "a"
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[1]/div/div[2]/input").SendKeys ks.Delete
        
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[1]/div/div[2]/input").SendKeys Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 5)

        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[2]/div[1]").SendKeys ks.Control, "a"
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[2]/div[1]").SendKeys ks.Delete
        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[2]/div/div[2]/div[2]/div[2]/div/div[2]/div[1]").SendKeys Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 50)


        driver.FindElementByXPath("/html/body/div[4]/div[3]/div/div[1]/div/button/span[1]/span").Click

        driver.FindElementByXPath("/html/body/div[6]/div[3]/div/div[3]/div/button[2]").Click

        Workbooks("動画管理.xlsx").Sheets("リスト").Cells(i, 1) = ""

        Application.Wait Now + TimeSerial(0, 0, 2)

        
    End If

Next i


Set driver = Nothing


End Sub

クリエーター奨励プログラムへ登録機能

以下の通り、クリエーター奨励プログラムへ登録する機能を設けています。

ニコニコ動画の収益化条件となっています。

動画投稿直後は動画の処理待ちとなっていて、クリエーター奨励プログラムへの登録はできないのですが、マクロ実行後、1分ごとに、動画の処理が終わっていないか見に行って、終わり次第処理を開始します。

あわせて、動画のページを開いて、7~10個目のタグも設定します。

check列に1を入れた行を対象に動きます。



Sub ニコニコ動画_クリエーター奨励登録(PROFILE_PATH As String)

Set driver = Nothing

Dim myBy As New By

driver.AddArgument ("user-data-dir=" & PROFILE_PATH)

For i = 3 To Workbooks("動画管理.xlsm").Sheets("リスト").Cells(Rows.Count, 6).End(xlUp).Row

    If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 1) <> "" Then
        Stmp = ""
        
        Do Until Stmp = 1
        
        driver.Get "https://commons.nicovideo.jp/tree/edit/" & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 46)

        
        If driver.IsElementPresent(myBy.Class("error-msg")) Then
                Application.Wait Now + TimeSerial(0, 1, 0)

        Else
    
    
            driver.FindElementByCss("#original_check").Click
    
            driver.FindElementByCss("#send_check").Click
    
    
            driver.Get "https://commons.nicovideo.jp/cpp/application/?site_id=nicovideo&creation_id=" & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 46)
    
            driver.FindElementByCss("#next > a").Click
            driver.FindElementByCss("#next > a").Click
            driver.FindElementByCss("#next > a").Click
            driver.FindElementByCss("#next > a").Click
            driver.FindElementByCss("#Column01 > div.submit-area > form > p > label > span").Click
            driver.FindElementByCss("#apply_submit").Click
            
            driver.Get "https://www.nicovideo.jp/watch/" & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 46)
            driver.FindElementByXPath("/html/body/div[1]/div[2]/div/div[3]/div[1]/div[4]/div[1]/div/div/button/div").Click
            Application.Wait Now + TimeSerial(0, 0, 2)
            
            Stmp = ""
            If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 17) <> "" Then
                Stmp = Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 17)
            End If
            If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 18) <> "" Then
                Stmp = Stmp & " " & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 18)
            End If
            If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 19) <> "" Then
                Stmp = Stmp & " " & Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 19)
            End If
            If Workbooks("動画管理.xlsm").Sheets("リスト").Cells(i, 20) <> "" Then
                Stmp = Stmp & " " & Mid(Workbooks("動画管理.xlsm").Sheets("リスト").Cells(66, 20), 1, InStr(Workbooks("動画管理.xlsm").Sheets("リスト").Cells(66, 20), " ") - 1)
            End If
    
            
            driver.FindElementByXPath("/html/body/div[1]/div[2]/div/div[3]/div[1]/div[4]/div[2]/div/div[1]/div/div/input").SendKeys Stmp
            
            driver.FindElementByXPath("/html/body/div[1]/div[2]/div/div[3]/div[1]/div[4]/div[2]/div/div[1]/div/button").Click
            
            Application.Wait Now + TimeSerial(0, 0, 2)
        
        
            Stmp = 1
        
        End If
        
        
        Loop

        
    End If

Next i

Set driver = Nothing


End Sub

youtubeへの同時投稿機能

タイトル・説明文などを流用し、youtubeへの動画投稿を自動化・効率化するマクロ機能も設けています。

以下記事を参照ください。

まとめ

いかがでしたでしょうか?

参考になれば幸いです。

本マクロブックのサポートやカスタマイズについては、条件によって、有償にて対応受付しております。

以下、クラウドワークスないしココナラのアカウントよりご依頼いただければ幸いです。

FIRE太郎さん(その他)に依頼・外注する | 簡単ネット発注なら【クラウドワークス】
日本最大のクラウドソーシング「クラウドワークス」にご登録いただいているFIRE太郎さんのプロフィールです。その他のスキルを持つプロフェッショナルに1時間から仕事を気軽に発注!発注者は手数料無料。
FIRE太郎さん(会社員)のプロフィール | ココナラ
Excelマクロ(VBA)による自動化ツールの作成が得意です。|ブログ「FIRE(早期リタイア)研究所」運営中

コメント

タイトルとURLをコピーしました