mcpField
Q
qiaomu-suno-master

qiaomu-suno-master

github.com/joeseesunクリエイティブ・メディア7259 回インストール21 週間前に更新
リポジトリ

qiaomu-suno-master について

Qiaomu Suno Masterは、Sunoでの楽曲制作や書き出しを支援するスキルです。歌詞やスタイルタグ、完成した楽曲を必要とする人向けに、ローカルのジャンル検索とSuno CLI・Web UIの手順を備え、既存クリップの素材も書き出せます。

主な機能

  1. 01構成タグ付きのSuno歌詞作成
  2. 02ローカルのジャンルデータベースでタグ検索
  3. 03CLIまたはWeb UIで楽曲を生成
  4. 04音声のダウンロードとLRC取得
  5. 05既存クリップから複数形式を書き出し

活用シーン

  1. 01テーマや物語から歌詞を作成
  2. 02Suno向けのジャンルや制作タグを選定
  3. 03Sunoの楽曲を生成してダウンロード
  4. 04既存曲から音声やタイム付き歌詞を書き出し

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/joeseesun/qiaomu-suno-master --skill qiaomu-suno-master

インストール後、Claude Code で/qiaomu-suno-masterを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
LICENSE
manifest.json
agents/
interface.yaml
evals/
trigger_cases.yaml
references/
browser-fallback.md
computer-use-workflow.md
chrome-cdp-auth.md
references/genre-finder/
_meta.json
_index.json
references/genre-finder/detailed/
acoustic-blues.json
african-folk-music.json
afro-house.json
aboio.json
acholi-music.json
ainu-music.json
afrobeats.json
akan-music.json
alpine-folk-music.json
alternative-dance.json
african-music.json
alternative-rock.json
alt-country.json
alternative-metal.json
amazigh-music.json
amapiano.json
ancient-music.json
animal-sounds.json
arabic-bellydance-music.json
american-folk-music.json

詳細

Qiaomu Suno Master

商用レベルのSuno歌詞を作成し、選択したSuno実行レーンを使って音楽を生成し、必要に応じてダウンロードします。 また、ローカルの音楽ジャンル検索機能も備えており、曖昧なムードを具体的なSunoスタイルタグに変換できます。

Sunoのログイン状態は短時間で失効します。ログイン済みのChrome上のSunoウェブセッションを信頼できる情報源とし、CLIは高速な手段としてのみ扱ってください。CLIがauth_expired、JWT expired、401、403、CAPTCHAの失敗を報告する場合、またはブラウザーセッションを見つけられない場合は、同じCLIリクエストを再試行せず、すぐにSunoウェブUIのフォールバックを使用してください。

スタイルタグ選定のルール

ユーザーからSunoのスタイルタグ、ジャンルの組み合わせ、ジャンルの検索、スタイルの調整を求められた場合は、ローカルのジャンル検索機能を任意の補助機能ではなく、必須の根拠として扱ってください。

  1. 回答する前にreferences/genre-selection.mdを読みます。
  2. スキルディレクトリからpython3 scripts/find_music_genres.pyを実行します。 スタイルのみのリクエストや幅広い概要の場合は、依頼の異なる側面を調べるため、少なくとも3つの焦点を絞ったクエリを実行します。ユーザーの元の表現、隣接するジャンルファミリーを1つ以上、制作・音の質感・リズムに関する観点を1つ以上、それぞれ含めます。ユーザーが非常に限定的なスタイルを指定し、最小限の出力を求めている場合に限り、クエリは1つでかまいません。
  3. まずデータベースの検索結果をもとに候補のパレットを作成します。検索結果に含まれていたジャンルタグ、またはその直接的で明白な上位・下位ジャンルを優先してください。
  4. 各Sunoスタイル文字列は、ジャンルタグを1~3個、ボーカル、楽器、テンポ、制作、ムードのタグを2~5個組み合わせて作成します。好みだけを根拠に回答したり、関連ジャンルを長々と1つのプロンプトに詰め込んだりしないでください。
  5. スタイルのみのリクエストでは、ユーザーから明示的に依頼されない限り、歌詞の作成やSunoによる生成は行いません。役立つ組み合わせと最初に試すおすすめを提示し、必要に応じてexclude_stylesも提示します。
  6. 検索機能が失敗した場合やデータベースが利用できない場合は、そのことを明確に伝え、タグがデータベースに基づくかのように示すことなく、可能な範囲で代替案を提示します。

生成実行契約

このスキルでは、自由形式の探索よりも決定論的なレーンを優先する必要があります。

  1. 明示されたレーンのリクエストは、厳格なロックとして扱います。

    • ユーザーが Computer Use を明示的にリクエストした場合、フォームの送信から、表示されたリンクの取得およびブラウザーでのダウンロード試行まで、生成タスク全体を Computer Use レーンで進めます。「進展」させるために、CLI、CDP、Browser プラグイン、直接の API 呼び出し、または captcha を利用した CLI 生成に切り替えてはいけません。
    • 「全程用 Computer Use」、「直接用 Computer use」、「用电脑操作」、およびレーンの混在に関する後続の修正は、Computer Use の厳格なロックとして扱います。このロックが有効になったら、そのリクエストに対する Suno 関連の操作はすべて、Computer Use で操作する表示中の Suno UI を通じて行う必要があります。
    • Computer Use にロックされたタスクでは、シェルコマンドを使って歌詞やマニフェストを準備したり、ファイルを調査したり、ブラウザーでダウンロードしたファイルを移動したり、取得した共有リンクを解決したり、アセットを検証したりできます。ただし、Suno の生成を送信したり、生成用の認証情報を更新したり、suno generate を実行したり、CDP/CLI の captcha ヘルパーを操作したりしてはいけません。
    • Computer Use にロックされたタスクでは、CDP の事前チェック、CDP 対応の Chrome の起動、Browser プラグインの呼び出し、隠れた代替手段としての download_clips.sh の使用を行ってはいけません。表示 UI からのダウンロードに失敗した場合は、レーンを切り替えるのではなく、取得済みのリンクとともに問題を報告してください。
    • ユーザーが同じブラウザーを使用中、ページでログイン/セキュリティ確認/captcha の操作が必要、またはデスクトップ UI を利用できないなどの理由で Computer Use を続行できない場合は、その状態で停止し、問題を解消するようユーザーに依頼してください。別の生成レーンに黙って切り替えてはいけません。
    • このロックインルールは、ユーザーが明示的に指定したほかのレーンにも同様に適用されます。そのレーンを最初から最後まで使用するか、停止して問題を報告してください。
  2. まず CLI の経路を使える状態にします。 これは、ユーザーが別のレーンを明示的にリクエストしていない場合に限り使用します。

    • suno CLI がインストールされていることを確認し、suno config check を実行します。
    • 実際の Chrome の Suno セッションから認証情報を更新します。更新に失敗した場合は、suno auth --login --quiet を実行します。
    • デフォルトの captcha 対応経路を使って、scripts/generate_with_suno.sh を一度実行します。
    • hCaptcha/CDP 起動の狭い範囲の失敗に限り、--no-captcha またはユーザー提供の --token "$HCAPTCHA_TOKEN" を使って CLI をもう一度だけ再試行できます。
  3. CLI での生成がブロックされた場合は、Codex がブラウザーを操作します。 タスクが別のレーンにロックされていない場合に限り使用します。

    • 利用可能であれば Codex Browser プラグインを使います。現在のセッションで利用できない場合は、ログイン済みの Suno ページに対して Chrome/Computer Use を使います。
    • https://suno.com/create を開き、準備済みのローカルファイルからタイトル、歌詞、スタイル、モデル、オプションを入力して、「Create」をクリックし、生成された行が表示されるまで待ってから、曲 ID/リンクを取得します。
    • 自動化では法的に、または確実に完了できない操作(人間によるログイン、アカウントのセキュリティ確認、進行中の captcha チャレンジなど)に限り、ユーザーに対応を依頼します。
  4. 禁止された探索は中止します。

    • ユーザーが Suno 自体のデバッグを明示的に依頼した場合を除き、Suno の生成 POST リクエストを手作業で作成したり、コピーしたブラウザー Cookie を一時プロファイルに挿入したり、取得したペイロードを再送信したり、captcha の条件を繰り返しテストしたりしてはいけません。
    • ユーザーが既存の Suno 曲 URL またはクリップ ID を提供した場合は、生成をスキップし、安定したダウンロードと LRC の検証を続けます。
    • ユーザーが Qiaomu Music へのアップロードまたは公開を依頼した場合は、その公開手順を qiaomu-music-publisher に委任します。このスキル内で Qiaomu Music へのアップロードを実装してはいけません。
    • 実際の Suno 曲リンクまたはクリップ ID を取得するまで、生成が成功したと報告してはいけません。

使用する場面

次のような要望がある場合に、このスキルを使用してください。

  • テーマ、記事、物語、ムード、キーワードをもとに新しい曲を作ってほしい
  • [Verse]、[Chorus]、[Bridge] などのセクションを含む、Suno 用の歌詞がほしい
  • ローカルの Rust suno CLI で音楽を生成してほしい。Web UI はフォールバックとして使用できます
  • 完成した曲のファイルをローカルにダウンロードしてほしい
  • 既存の Suno クリップ ID を、音声、動画/MTV、タイミング付き LRC、SRT、クリーンな SRT、Markdown の歌詞として書き出してほしい
  • 歌詞の作成や生成の前に、音楽のジャンルやスタイルを提案してほしい
  • 音楽プレーヤーにアップロードしたり、再生可能なウェブトラックとして公開したりする曲のタイムスタンプ付き .lrc 歌詞がほしい

音楽理論のみの相談、Suno 用ではない通常の詩、Suno 以外の音声編集には、このスキルを使用しないでください。 Qiaomu Music へのアップロード実行には、このスキルを使用しないでください。MP3/LRC アセットの準備ができたら、 qiaomu-music-publisher を使用してください。

解決する入力項目

可能な場合は、ユーザーのリクエストから次の項目を推測してください。

  • title:短く、印象に残る曲のタイトル
  • lyrics:構成タグを含む、完成した Suno 用の歌詞
  • lrc_required:音楽をアップロード、公開、または音楽プレーヤーのウェブサイト用に生成/ダウンロードする場合は、既定で yes
  • style_description:カンマ区切りの Suno スタイルタグ
  • exclude_styles:避けるスタイル、楽器、ムードをカンマ区切りで指定
  • genre_candidates:scripts/find_music_genres.py からの任意のおすすめジャンル
  • title_options:最終的なタイトルを選ぶ前の、簡潔なタイトル候補 3 つ
  • model:既定値は v5.5
  • vocal:任意の male または female
  • output_dir:ユーザーがフォルダーを指定しない場合は ~/Documents/Suno/<song-title>/ を既定値とする
  • song_manifest:既定値は $OUTPUT_DIR/song.manifest.json
  • generate:Suno をすぐに実行するかどうか。ユーザーが音楽の生成を依頼した場合は、既定で yes

ユーザーが歌詞のみを求めている場合は、suno を実行せず、依頼された創作物を作成してください。

ワークフロー

  1. 曲の依頼内容を分析します。テーマ、対象者、言語、ムード、スタイル、ボーカル、テンポ、禁止要素を確認します。
  2. スタイルの指定がない、曖昧である、さらに具体化する価値がある、またはユーザーがスタイル/タグの提案を明示的に求めている場合は、Style Tag Selection Contract に従います。
  3. 適したジャンルタグを 1~3 個選び、ボーカル、楽器、テンポ、ムードのタグを少数追加します。style_description は焦点を絞った内容にしてください。
  4. スタイルのみの依頼の場合は、スタイルの組み合わせと、役立つ exclude_styles を提示した時点で終了します。求められていない限り、歌詞の作成や生成には進まないでください。
  5. references/lyric-craft.md を読み、歌詞の品質に関するルールを適用します。
  6. 次の項目を作成します。
    • title_options
    • 選択した title
    • 任意の genre_candidates
    • style_description
    • exclude_styles
    • lyrics
  7. Suno 用の歌詞と LRC は、別々の成果物として扱います。
    • lyrics は Suno に送る創作上の入力であり、[Verse]、[Chorus]、[Bridge] などを使用できます。
    • .lrc は生成後に Suno のアライン済み歌詞から取得する、タイミング付きの出力です。
    • プレーンな Suno の歌詞を、音楽プレーヤーの同期歌詞としてアップロードまたは公開してはいけません。
    • 音楽プレーヤー用のカバーアートは、Suno のソースカバーとは別に生成するデザインアセットです。
  8. 生成する場合は、歌詞を $OUTPUT_DIR/lyrics.txt に保存します。長い複数行の歌詞は、シェルで引用するよりファイルに保存することを優先してください。 ユーザーがフォルダーを明示的に指定しない限り、$OUTPUT_DIR は ~/Documents/Suno/<song-title>/ にしてください。既定の出力先として、現在のリポジトリ/ワークスペースディレクトリを使用しないでください。 Computer Use でロックされたタスクでは、ブラウザーからダウンロードした MP3 ファイルを ~/Downloads から移動した後の最終保存先も、この同じディレクトリにしてください。
  9. 生成、ダウンロード、LRC の検証、その後の公開への引き継ぎには、マニフェスト優先のワークフローを使用します。曲のマニフェストを新規作成または更新する場合は、references/manifest-workflow.md を読んでください。
python3 scripts/run_workflow.py init \
  --manifest "$OUTPUT_DIR/song.manifest.json" \
  --title "$TITLE" \
  --style "$STYLE_DESCRIPTION" \
  --exclude "$EXCLUDE_STYLES" \
  --lyrics-file "$LYRICS_FILE" \
  --output-dir "$OUTPUT_DIR"

ユーザーが既存の Suno クリップ ID または曲の URL を提示した場合は、init の際に --ids とともに指定し、生成をスキップしてください。既存クリップを使用するこの経路では、スタイルと歌詞ファイルを省略できます。 Computer Use に限定されたタスクでは、init は永続的なローカルメタデータの作成にのみ使用し、その後すぐに references/computer-use-workflow.md に従ってください。 ユーザーが Computer Use の範囲を離れることを明示的に承認していない限り、 run_workflow.py generate、run_workflow.py download、CDP セッションの確認、 CLI の認証更新、CLI による生成、CLI/ブラウザーヘルパーのダウンロードはスキップしてください。

  1. 生成またはダウンロードを行う前に、破壊的変更を伴わない事前確認を実行してください。
python3 scripts/suno_doctor.py --output-dir "$OUTPUT_DIR"

Computer Use に限定されたタスクでは、デフォルトで許可される事前確認はこれだけです。 そのタスクでは、以下の CDP/Chrome セッション確認を実行しないでください。

生成を送信する前に、実際に Chrome で Suno のウェブセッションが開いていることを確認してください。

bash scripts/ensure_suno_chrome_session.sh --timeout 12

CDP エンドポイントがなく、Chrome がまだ起動していない場合は、CDP を有効にした Chrome セッションを起動してください。

bash scripts/launch_suno_cdp_chrome.sh

Chrome がリモートデバッグなしで既に起動している場合は、CDP フラグを指定して再起動する前に完全に終了するか、 --dedicated-profile を使用して、そこで Suno に一度ログインしてください。Chrome にネイティブのデバッグ確認が表示された場合は、ユーザーが一度承認するまで待ってください。ページレベルの CDP インジェクションで Chrome のネイティブセキュリティ UI を閉じられると想定しないでください。期限切れの JWT で CLI を繰り返し実行しないでください。

  1. CLI を実行する前に、Rust CLI が存在することを確認してください。
bash scripts/ensure_suno_cli.sh

CLI が Chrome のセッションを受け付ける場合、generate_with_suno.sh と download_clips.sh のどちらも認証を自動的に処理します。手動で呼び出すのは export_suno_assets.py の場合のみです。

suno auth --refresh --quiet 2>/dev/null || suno auth --login --quiet
  1. 生成/ダウンロード/LRC のデフォルトパス:
python3 scripts/run_workflow.py generate \
  --manifest "$OUTPUT_DIR/song.manifest.json"

このラッパーは suno-meta.env を書き込み、generate.result.json を保持し、 クリップ ID を抽出して MP3 をダウンロードし、LRC を取得して検証し、 song.manifest.json を更新し、workflow.log を書き込みます。

Computer Use に限定されたタスクでは、このデフォルトパスは禁止されています。これらのタスクでは、 Computer Use を使って Suno のフォームに入力し、Create をクリックし、共有リンクを取得して、 表示されている行メニューから Download -> MP3 Audio を選択してください。その後に限り、 シェルコマンドを使ってブラウザーがダウンロードしたファイルを ~/Documents/Suno/<song-title>/ に移動できます。

Suno のクレジットを消費せずに準備やデバッグを行う場合は、ドライランを使用してください。

python3 scripts/run_workflow.py generate \
  --manifest "$OUTPUT_DIR/song.manifest.json" \
  --dry-run

マニフェストのステータスが generation_blocked になった場合、またはラッパーが GENERATION_BLOCKED を出力した場合は、Codex のブラウザー生成レーンとして references/browser-fallback.md に従ってください。生成がブロックされた後に、 Suno API を直接呼び出さないでください。

  1. 既存 ID のダウンロードパス:
python3 scripts/run_workflow.py download \
  --manifest "$OUTPUT_DIR/song.manifest.json" \
  --ids "ID1 ID2"

音楽プレーヤー、ウェブサイト、またはユーザー向けの再生可能なカタログにアップロードする曲では、LRC が必須であり、run_workflow.py はデフォルトでこれを要求します。LRC が保留中の場合は、まだトラックをアップロード/公開しないでください。後でもう一度試してください。

python3 scripts/run_workflow.py validate-lrc \
  --manifest "$OUTPUT_DIR/song.manifest.json"
  1. 低レベルのデバッグコマンド:

デバッグ、ブラウザーフォールバックからの復旧、または一部の再試行には、generate_with_suno.sh、 generate_download_lrc.sh、download_clips.sh の各コマンドを引き続き使用してください。ユーザーが Computer Use の範囲を離れることを明示的に承認していない限り、Computer Use に限定されたタスクではこれらのコマンドを使用できません。

生成のみを実行し、クリップ ID を含む JSON を返します。

bash scripts/generate_with_suno.sh --meta-file "$META_FILE" --output-dir "$OUTPUT_DIR"

エンドツーエンドのシェルラッパー:

bash scripts/generate_download_lrc.sh --meta-file "$META_FILE" --output-dir "$OUTPUT_DIR"

ブラウザー優先のダウンローダーを使う高速ダウンロードパス:

bash scripts/download_clips.sh --ids "ID1 ID2" --output-dir "$OUTPUT_DIR"

音楽プレーヤー、ウェブサイト、またはユーザー向けの再生可能なカタログにアップロードする曲では、LRC が必須です。ダウンロード時に LRC をリクエストして検証してください。

bash scripts/download_clips.sh --ids "ID1 ID2" --output-dir "$OUTPUT_DIR" \
  --lyrics --lyrics-format lrc --require-lrc

または、generate の出力を直接パイプで渡してください。

bash scripts/generate_with_suno.sh --meta-file "$META_FILE" --output-dir "$OUTPUT_DIR" \
  | bash scripts/download_clips.sh --output-dir "$OUTPUT_DIR" \
      --lyrics --lyrics-format lrc --require-lrc

--require-lrc が失敗した場合は、まだトラックをアップロード/公開しないでください。Suno の処理完了後に、タイムスタンプ付きの歌詞を再試行してください。

python3 scripts/export_suno_assets.py ID1 ID2 --format lrc --output "$OUTPUT_DIR"
python3 scripts/validate_lrc.py "$OUTPUT_DIR"

download_clips.sh の機能:

  • 最初の試行前に、CDN への反映を待つため 5 秒待機します
  • 最大 3 回まで再試行し、試行の間に 10 秒待機します
  • Chrome から認証情報を自動更新します
  • websocket-client が利用可能な場合は Chrome/CDP ブラウザーダウンロードを最初に試し、 それ以外の場合はその試行をスキップして suno download に直接進みます
  • suno timed-lyrics を使ってタイムスタンプ付きの .lrc 歌詞を取得できます
  • 実際のタイムスタンプ付き .lrc がない場合、--require-lrc はワークフローを失敗させます
  • --ids フラグ、または generate からパイプで渡された JSON で ID を受け付けます
  1. アップロード/公開前のLRCゲート:

music.qiaomu.ai または音楽プレーヤーにアップロードする前に、.lrc ファイルが存在し、実際の [mm:ss.xx] タイムスタンプが含まれていることを確認してください:

python3 scripts/validate_lrc.py "$OUTPUT_DIR"

検証済みの .lrc ファイルを、楽曲の歌詞ペイロードとして使用してください。アップロード先が同期されていないプレーンな歌詞を明示的に求めていない限り、元の .txt のSunoプロンプト歌詞は使用しないでください。

  1. 公開の引き継ぎ:

アップロード先がQiaomu Music(music.qiaomu.ai、 qiaomu-music-player-web、「乔木音乐」、「上传到乔木音乐」、「发布到乔木音乐」)の場合、MP3とタイムスタンプ付きLRCの準備ができたら、qiaomu-music-publisher に引き継ぎます:

python3 ~/.agents/skills/qiaomu-music-publisher/scripts/publish_suno_to_qiaomu_music.py \
  --ids "ID1 ID2" \
  --output-dir "$OUTPUT_DIR"

qiaomu-music-publisher は、サイト固有のログイン、カバー画像の処理、マルチパートアップロード、公開ステータスを担当します。このSunoスキルは、作成、ダウンロード、LRCの検証に専念してください。パブリッシャーが引き続き明示的なCLI引数を受け取る場合でも、ID、アセットパス、LRCステータスの信頼できる情報源として song.manifest.json を使用してください。

  1. 一般的な音楽プレーヤーへのアップロード/公開前のカバー画像ゲート:

Qiaomu以外の音楽プレーヤーにアップロードする場合、アップロード先がSunoの元のカバー画像を明示的に希望していない限り、楽曲のタイトル、スタイル、検証済みの歌詞をもとに qiaomu-image-generator で新しい正方形のアルバムカバーを生成してください。

album_cover テンプレートを使用し、以下を指定します:

  • style:デフォルトでは album-mondo-cover、余白の多い曲、アンビエント曲、心理的な曲では negative-space-poster
  • aspect_ratio:1:1
  • description:歌詞から凝縮した象徴的なビジュアル。Mondoスタイルの限られた配色、単一の焦点、no text を指定
  • filename:末尾が -cover.png の安定したスラッグ

生成の最小構成:

{
  "template": "album_cover",
  "cover": {
    "enabled": true,
    "filename": "song-slug-cover.png",
    "style": "album-mondo-cover",
    "aspect_ratio": "1:1",
    "description": "1:1 square album cover, no text. ... distilled lyric imagery ..."
  },
  "defaults": {
    "provider": "jimeng",
    "style": "album-mondo-cover",
    "aspect_ratio": "1:1"
  }
}

次のコマンドで生成します:

python3 ~/.agents/skills/qiaomu-image-generator/scripts/generate.py "$VISUAL_CONFIG" \
  --workers 1 --no-insert --output "$OUTPUT_DIR/cover.result.json"

アップロード前にカバー画像を検証します:

file "$OUTPUT_DIR"/*-cover.png
sips -g pixelWidth -g pixelHeight "$OUTPUT_DIR"/*-cover.png

カバー画像は正方形である必要があります。MP3と検証済みのLRCとともに、cover マルチパートフィールドとしてアップロードしてください。

  1. Codexのブラウザー生成レーン:

references/browser-fallback.md を読み、以下の場合に使用します:

  • ユーザーが信頼性の高いSuno生成を明示的に依頼した場合
  • CLIの認証が期限切れ、または拒否された場合
  • CAPTCHAの自動処理が停止した場合
  • 生成されたクリップがSunoのウェブ一覧に表示されているのに、CLIでダウンロードできない場合
  • ユーザーがComputer Useの使用を明示的に依頼した場合

ユーザーがComputer Useを明示的に依頼した場合、Computer Useレーンのロックは、生成とブラウザーからのダウンロード試行に適用されます。ユーザーがそのレーンからの切り替えを明示的に承認しない限り、CLI/CDPによる生成や、CLI/ブラウザーのダウンロードヘルパーは使用しないでください。

これは受動的な引き継ぎではありません。Codexがブラウザーを操作してください:

  1. ログイン済みのChromeプロファイルで https://suno.com/create を開きます。
  2. ユーザーが別のモデルを指定していない限り、Advancedモードとモデル v5.5 に切り替えます。
  3. ローカルファイル/メタデータから、Lyrics、Styles、Song Titleを入力します。
  4. Create をクリックし、生成された2行が表示されるまで待って、両方の楽曲リンクを記録します。
  5. 行が再生可能になったら、ウェブUIの各行のメニュー/ダウンロードコントロールをクリックします。レーンがロックされていないブラウザーのフォールバックに限り、IDが表示されていれば download_clips.sh --ids ... --browser を使用できます。

ページで人間によるセキュリティ操作が必要なために、ブラウザーの自動化でログイン、CAPTCHA、またはCreateの送信を完了できない場合は、そのブラウザー状態で作業を一時停止し、その操作だけをユーザーに依頼してください。完了後、CodexはIDの取得、ダウンロード、LRCの検証、およびサイト固有の公開手順の適切なパブリッシャースキルへの引き継ぎを続行します。

Computer Useで直接生成およびダウンロードする場合は、references/computer-use-workflow.md を読みます。このレーンでは、Suno Createを開き、表示されているウェブUIから送信し、生成された行から共有リンクをコピーして、共有リンクをクリップIDに解決します。可能な場合は、表示されているSunoウェブUIから音声をダウンロードします。その後、ローカルでの後処理は、ファイルの整理、タイム付き歌詞のエクスポート、LRCの検証、マニフェストの更新に限って使用してください。ユーザーがレーンの切り替えを明示的に承認しない限り、Computer Useでロックされたタスクでは run_workflow.py generate、run_workflow.py download、suno generate、またはCDP/CAPTCHAヘルパーを実行しないでください。

  1. Feishuに送信(chat_id があるブリッジコンテキストの場合のみ):
cd "$OUTPUT_DIR"
lark-cli config bind --source lark-channel --identity bot-only
for f in *.mp3; do
  lark-cli im +messages-send --as bot --chat-id "$CHAT_ID" --file "./$f"
done
  1. 出力ディレクトリ、マニフェストのパス、ダウンロードしたファイルのパス、LRC の検証状況、生成されたカバー画像のパス、公開されたトラックの URL、および/または Suno の曲へのリンクを報告します。

生成した曲、字幕、動画、エクスポートした歌詞ファイルは、スキルディレクトリや作業中のリポジトリ内に保存しないでください。デフォルトでは ~/Documents/Suno/<song-title>/ を使用します。

CLI に関する注意事項

  • 上流の CLI は paperfoot/suno-cli で、suno コマンドとしてインストールされます。
  • suno が見つからない場合は、続行する前に bash scripts/ensure_suno_cli.sh を実行します。このスクリプトは上流のプロジェクトからインストールし、まず Homebrew を試し、失敗した場合は Cargo にフォールバックします。
  • インストール後、suno --version で確認します。
  • 通常の生成タスクでは、python3 scripts/run_workflow.py generate --manifest "$OUTPUT_DIR/song.manifest.json" を優先します。生成、ダウンロード、LRC 検証、アセットの検出、ステータスの追跡をまとめて実行します。
  • クレジットを消費せずにローカルの前提条件を確認するには、生成前に python3 scripts/suno_doctor.py --output-dir "$OUTPUT_DIR" を実行します。
  • 認証情報は、Chrome でログイン済みの Suno セッションから同期されます(suno auth --refresh または suno auth --login)。ただし、Web UI でログイン状態が維持されていても、Suno が CLI の JWT を拒否することがあります。その場合は Web UI を正とします。
  • 生成のみを高速に行う方法として、bash scripts/generate_with_suno.sh を優先します。認証情報を自動更新し、デフォルトでは CAPTCHA を利用した送信経路を使いますが、認証または CAPTCHA によって拒否された後は、繰り返し再試行してはいけません。
  • CLI の再試行は、生成を合計 2 回までとします。デフォルトの CAPTCHA を利用した方法を 1 回実行し、その後は hCaptcha/CDP の起動失敗の場合に限り、--no-captcha または提供された --token を使って対象を絞った再試行を 1 回行います。
  • 2026-05-25 時点での最新の検証済み経路:suno 0.5.7 のデフォルトの CAPTCHA を利用した生成で hCaptcha を解決し、v5.5 を送信して完全な ID を 2 つ取得した後、download_clips.sh --require-lrc で MP3 をダウンロードし、LRC を検証しました。デフォルトで --no-captcha を追加しないでください。
  • 重要:生成時に --download を使用しないでください。CDN への反映には時間がかかります。生成完了後、必ず別途 download_clips.sh を使用してください。
  • 通常の CLI/ロックされていないブラウザーのフォールバックによるダウンロードには、scripts/download_clips.sh を使用します。再試行のロジックと CDN の反映待ちに対応しています。Computer Use でロックされたタスクでは、まずブラウザー UI からのダウンロードを試し、ユーザーの明示的な承認なしに CLI でのダウンロードへ切り替えないでください。
  • 通常の CLI/ロックされていないフォールバック経路で、アップロードまたは公開する生成曲をダウンロードする場合は、必ず download_clips.sh に --lyrics --lyrics-format lrc --require-lrc を追加してください。
  • MP3 と LRC の準備ができたら、Qiaomu Music にアップロードする曲については qiaomu-music-publisher を呼び出します。サイト固有のログイン/アップロード処理は、そこで行います。
  • ロックされていないフォールバックタスク中に Web の一覧でクリップ ID を確認できる場合は、download_clips.sh --ids "ID1 ID2" --browser を使ったダウンロード再試行を優先します。最初に Chrome 経由でブラウザーパイプラインを通じた音声の取得を試みます。
  • 既存のクリップ ID から SRT/LRC/タイミング付き歌詞、字幕マーカーを除去した MTV 字幕、音声、または動画/MTV のダウンロードをユーザーが求めている場合は、scripts/export_suno_assets.py を使用します。
  • 音楽プレーヤーにアップロードする前に、scripts/validate_lrc.py "$OUTPUT_DIR" を使用します。[Verse]/[Chorus] マーカーしか含まれていないファイルは通常の歌詞であり、LRC ではありません。
  • 字幕ファイルから [Verse] や [Chorus] などの Suno の構成マーカーを除去するには、scripts/clean_srt_for_mtv.py を使用します。
  • 使用中のブラウザーセッションで Suno の CAPTCHA ソルバーが不安定な場合は、有効な別の送信経路か、手動の --token がある場合に限り、--no-captcha にフォールバックします。

ジャンル検索

このスキルには、joeseesun/music-genre-finder のデータが references/genre-finder/ に同梱されています。

次を使用します。

python3 scripts/find_music_genres.py "深夜 空灵 梦幻" --limit 5
python3 scripts/find_music_genres.py "raw energetic punk" --limit 5
python3 scripts/find_music_genres.py "世界音乐 鼓 长笛" --json

Suno 向けには、推奨内容を簡潔なスタイルタグに変換します。ジャンルタグは 1~3 個に抑え、ボーカル、楽器、テンポ、ムードのタグを組み合わせるのがおすすめです。関連するサブジャンルを多数まとめて 1 つのプロンプトに詰め込まないでください。 スタイルのみを求める依頼や、幅広い推奨を求める依頼では、焦点を絞った検索を複数回行い、返された候補の傾向を統合してから回答します。

アセットのエクスポート

既存のクリップ ID の場合:

python3 scripts/export_suno_assets.py <clip-id> --format lyrics --clean-srt

--output を指定しない場合、アセットは ~/Documents/Suno/<clip-title>/ に保存されます。

便利な形式:

  • audio:MP3/音声をダウンロードします
  • video:利用可能な場合、Suno の動画/MTV アセットをダウンロードします
  • json:タイムスタンプ付き歌詞の JSON を保存します
  • lrc:音楽プレーヤー用の歌詞を保存します
  • srt:字幕ファイルを保存します
  • md:AI が読み取れるタイムスタンプ付き歌詞の Markdown を保存します
  • lyrics:json,lrc,srt,md のショートカットです
  • all:audio,video,json,lrc,srt,md のショートカットです

既存のクリップ ID からタイムスタンプ付き歌詞を再取得するには、Rust suno CLI のエクスポート機能を使用します:

python3 scripts/export_suno_assets.py <clip-id> --format lrc --output "$OUTPUT_DIR"
python3 scripts/export_suno_assets.py <clip-id1> <clip-id2> --format lyrics --output "$OUTPUT_DIR"

MTV の場合:

python3 scripts/export_suno_assets.py <clip-id> --output "$OUTPUT_DIR" --format video,lyrics --clean-srt

Chrome CDP 認証アシスト

このスキルは、pasky/chrome-cdp-skill の軽量な Chrome DevTools Protocol ヘルパーを scripts/cdp.mjs として同梱しています。

既存の Chrome ログインを再利用したい場合、または Suno のブラウザー状態をデバッグしたい場合にのみ使用してください。Chrome ではリモートデバッグを有効にする必要があります。CDP を利用できない場合は、suno auth --login またはブラウザー生成の手順に切り替えてください。--timeout を使用して、すべての CDP チェックに上限を設けてください。上限を設けないと、ネイティブの Chrome デバッグ確認によって、ページスクリプトが実行される前に自動化が停止することがあります。

CDP 対応の Chrome セッションを開始するには:

bash scripts/launch_suno_cdp_chrome.sh

便利な環境設定:

  • SUNO_CDP_TIMEOUT=12 は、生成前の CDP プローブの実行時間に上限を設定します。
  • SUNO_SKIP_CHROME_SESSION_CHECK=1 は、ネイティブの Chrome 確認を誘発すると判明している場合に、生成前の CDP プローブをスキップします。
  • SUNO_CDP_PORT=9222 は、Chrome のリモートデバッグポートを設定します。

このマシンには、liaocaoxuezhe/chrome-devtools-auto-allow が /Users/joetech/.local/share/chrome-devtools-auto-allow にインストールされています。その LaunchAgent は com.local.cdp-auto-allow、アプリのパスは /Users/joetech/.local/share/chrome-devtools-auto-allow/CDP Auto Allow.app で、ログは /tmp/cdp-auto-allow.debug.log に書き込まれます。ログに 不允许辅助访问 と表示される場合、ユーザーは macOS の「アクセシビリティ」設定でこのアプリを有効にする必要があります。

既知の問題:上流の suno CLI の CAPTCHA 自動解決機能は、操作対象の Chrome を開いた後、CDP Runtime.evaluate ws err: Connection reset... で失敗することがあります。 よくある別の問題として、suno auth --login が成功した後でも auth_expired が発生します。 どちらかが発生した場合は、すぐに references/browser-fallback.md に切り替えてください。

出力スタイル

ユーザーがこのクリエイタープロンプトを使うよう求めた、歌詞のみのリクエストでは、次の順序で Markdown コードブロックのみを出力してください:

```lyrics
...
style-description-tags
exclude-style-tags
1. ...
2. ...
3. ...

For generated music, keep the final response brief:

- mention that generation completed or where it stopped
- include the output folder
- include the next command only if the user needs to authenticate or retry

コメント