

Sunoで曲をいっぱい作ったんだけど、保存がすっごく面倒なの
にゃ〜:「わかるよ、ほのか。1曲ずつクリックしていくの、地味にしんどいよね。実はそれ、まとめて解決できるんだ」
ダウンロードへの新たなアプローチ(公式HPより)
2026年9月3日より、お客様のプランに応じて以下のダウンロード制限を導入いたします。
無料:最大7回(生涯)の試用版ダウンロード
PRO:月間20ダウンロードまでプレミア
プレミア:月間60ダウンロード
Suno(スーノ)は、文章を入力するだけでAIが曲を作ってくれるサービスです。
たくさん曲を作れるようになると、今度は「保存」が地味に大変になってきます。
この記事では、無料のツールを使って曲をまとめて保存する方法を、順番にわかりやすく説明します。
難しいプログラムの知識は一切いりません。
コピーして貼り付けるだけです。
実はこの「ツール」を使うと、まとめて保存できます

取扱説明書
Suno一括ダウンローダー
Sunoで作った曲を、
1曲ずつ保存する手間をなくすための小さな道具の使い方です。
チェックを入れて、
ボタンを押すだけ。
✓先にこれだけ設定しておくと快適です。
使うたびに「どこに保存する?」と聞かれるのが面倒なときは、
アドレスバーにchrome://settings/downloadsと入力して開き、
「ダウンロード前に各ファイルの保存場所を確認する」をOFFにする。
(Sunoを使い終わったらONに戻すのがおすすめ)
ABOUTこれは何?
Suno(AI作曲サイト)のマイページから、自分が作った曲をまとめて保存するツールです。
WAV(高音質)またはMP3(軽い)を選べて、
「いいね」した曲だけを対象にすることもできます。
!自分のSunoアカウントの曲を、
自分で保存するための道具です。他の人の曲を勝手に大量取得したり、
Sunoのルールに反する使い方はしないでください。
00準備するもの
- パソコン(Windows)
- Google Chrome
- Tampermonkey(無料の拡張機能)
01Tampermonkeyを入れる(はじめの1回だけ)
- 1Chromeを開く
- 2検索で「Tampermonkey」と調べて、
Chromeウェブストアのページを開く - 3「Chromeに追加」を押す
- 4確認画面が出たら「拡張機能を追加」を押す
✓ブラウザの右上に、
小さいアイコンが増えていれば成功です。
Tampermonkey(※Chromeに機能を追加できる無料アプリ)って何?
Tampermonkey(タンパーモンキー)とは、Chromeというブラウザに、
ちょっとした便利機能を追加できる無料のアプリのことです。
今回は、この上で動く「保存を自動化する小さなプログラム」を使います。
「変なものを入れて大丈夫?」その不安、よくわかります
拡張機能と聞くと、「怪しいものだったらどうしよう」と心配になる気持ち、とてもよくわかります。実際、知らないものを何でも入れるのは危険です。
このツールが安全な理由
- パスワードやメールアドレスなど、個人情報を入力する場面は一切ありません
- 通信先はSuno公式のサイトだけで、他のところへ情報が送られることはありません
- すべての操作は、あなた自身のSunoアカウントの中だけで完結します
02ツールを登録する(はじめの1回だけ)
- 拡張機能の「Tampermonkey」を左クリック
クリックするとこのメニューが開く
- 「ダッシュボード」をクリック
- 「+」ボタンをクリックして「新規スクリプトを追加」
この「+」を押すと新規スクリプトが作れる
開いたら真っ白なエディター画面になる
- エディター内をクリックして
Ctrl + Aで全選択して削除(DEL) - 下の「コピー」ボタンでコードを全部コピーして、
貼り付ける - Ctrl + Sで保存する
// ==UserScript==
// @name Suno Bulk Downloader
// @namespace local.suno.tools
// @version 9.1.0
// @description Sunoのライブラリから選択した曲を、曲名のファイル名でWAV/MP3一括ダウンロードする
// @match https://suno.com/*
// @match https://www.suno.com/*
// @grant GM_addStyle
// @grant GM_download
// @grant unsafeWindow
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
const API_BASE = 'https://studio-api-prod.suno.com/api/gen';
const CDN_BASE = 'https://cdn1.suno.ai';
const POLL_INTERVAL = 2000; // WAV変換完了を待つ間隔
const POLL_MAX = 45; // 最大待ち回数(約90秒)
const BETWEEN_SONGS = 1000; // 次の曲へ進むまでの待ち
GM_addStyle(`
#sbd-panel h4 { margin:0 0 8px; font-size:13px; font-weight:600; display:flex; justify-content:space-between; align-items:center; cursor:move; user-select:none; }
#sbd-panel select, #sbd-panel button { width:100%; padding:7px; margin-top:6px; cursor:pointer;
background:#2d6cdf; color:#fff; border:0; border-radius:6px; font-size:13px; }
#sbd-panel select { background:#2a2a2a; }
#sbd-panel button:disabled { background:#555; cursor:default; }
#sbd-panel button.sbd-sub { background:#3a3a3a; }
#sbd-opt { display:flex; align-items:center; gap:6px; margin-top:8px; font-size:12px; cursor:pointer; }
#sbd-list { margin-top:8px; max-height:220px; overflow:auto; border:1px solid #333; border-radius:6px; }
#sbd-list label { display:flex; gap:6px; align-items:flex-start; padding:5px 6px; border-bottom:1px solid #2a2a2a; font-size:12px; cursor:pointer; }
#sbd-list label:last-child { border-bottom:none; }
#sbd-list input { margin-top:2px; }
#sbd-list .sbd-liked { color:#4ea1ff; }
#sbd-listctl { display:flex; gap:6px; margin-top:6px; }
#sbd-listctl button { margin-top:0; padding:5px; font-size:11px; }
#sbd-log { margin-top:8px; max-height:140px; overflow:auto; font-size:11px; color:#aaa; white-space:pre-wrap; }
`);
const panel = document.createElement('div');
panel.id = 'sbd-panel';
// Sunoのページ側CSSや拡張機能のフィルタに潰されないよう、
// レイアウトに関わる指定はインラインstyleへ !important で直接書き込む。
// 既定位置は右下から少し左。Suno右下の音量スライダーと重ならないようにする。
const forcedStyles = {
position: 'fixed', right: '110px', bottom: '100px', 'z-index': '2147483647',
background: '#181818', color: '#eee', font: '13px/1.5 system-ui,sans-serif',
border: '1px solid #444', 'border-radius': '10px', padding: '12px', width: '300px',
'box-shadow': '0 6px 24px rgba(0,0,0,.5)', display: 'block', visibility: 'visible', opacity: '1',
};
Object.entries(forcedStyles).forEach(([p, v]) => panel.style.setProperty(p, v, 'important'));
panel.innerHTML = `
<h4 title="ドラッグで移動できます">Suno Bulk Downloader <span style="font-weight:400;color:#888;">v9.1.0</span><span id="sbd-min" style="cursor:pointer;font-weight:400;">—</span></h4>
<div id="sbd-body">
<select id="sbd-format">
<option value="wav" selected>WAV</option>
<option value="mp3">MP3</option>
</select>
<label id="sbd-opt"><input type="checkbox" id="sbd-likedonly"> いいねした曲だけ</label>
<button id="sbd-scan" class="sbd-sub">曲をスキャン</button>
<div id="sbd-list"></div>
<div id="sbd-listctl">
<button id="sbd-all" class="sbd-sub">全選択</button>
<button id="sbd-none" class="sbd-sub">全解除</button>
</div>
<button id="sbd-run" disabled>一括ダウンロード</button>
<button id="sbd-stop" class="sbd-sub" style="display:none;">中止</button>
<div id="sbd-log">ライブラリ画面で「曲をスキャン」を押してください。</div>
</div>
`;
// Suno側のReactが再描画するとbody直下の後付け要素が消えることがあるため、
// html直下に付け、消されたら復元する。
function ensurePanelAttached() {
if (!document.documentElement.contains(panel)) document.documentElement.appendChild(panel);
}
ensurePanelAttached();
new MutationObserver(ensurePanelAttached).observe(document.documentElement, { childList: true });
const $ = (sel) => panel.querySelector(sel);
const logEl = $('#sbd-log');
const listEl = $('#sbd-list');
const runBtn = $('#sbd-run');
const stopBtn = $('#sbd-stop');
const scanBtn = $('#sbd-scan');
const formatSel = $('#sbd-format');
const likedOnly = $('#sbd-likedonly');
$('#sbd-min').addEventListener('click', () => {
const body = $('#sbd-body');
body.style.display = body.style.display === 'none' ? '' : 'none';
});
// ---- パネルの移動(見出しをドラッグ) --------------------------------------
// 画面下部の再生バーや音量スライダーと重なった時に避けられるようにする。
// 位置は localStorage に保存し、次回以降も維持する。
const POS_KEY = 'sbd-panel-pos';
function applyPosition(left, top) {
const w = panel.offsetWidth || 300;
const h = panel.offsetHeight || 200;
const x = Math.min(Math.max(0, left), window.innerWidth - w);
const y = Math.min(Math.max(0, top), window.innerHeight - Math.min(h, 80));
panel.style.setProperty('left', `${x}px`, 'important');
panel.style.setProperty('top', `${y}px`, 'important');
panel.style.setProperty('right', 'auto', 'important');
panel.style.setProperty('bottom', 'auto', 'important');
}
try {
const saved = JSON.parse(localStorage.getItem(POS_KEY) || 'null');
if (saved && typeof saved.left === 'number') applyPosition(saved.left, saved.top);
} catch (e) { /* 保存値が壊れていれば既定位置のまま */ }
const header = $('h4');
header.addEventListener('mousedown', (e) => {
if (e.target.id === 'sbd-min') return; // 最小化ボタンはドラッグ対象外
e.preventDefault();
const rect = panel.getBoundingClientRect();
const dx = e.clientX - rect.left;
const dy = e.clientY - rect.top;
const onMove = (ev) => applyPosition(ev.clientX - dx, ev.clientY - dy);
const onUp = () => {
document.removeEventListener('mousemove', onMove, true);
document.removeEventListener('mouseup', onUp, true);
const r = panel.getBoundingClientRect();
try {
localStorage.setItem(POS_KEY, JSON.stringify({ left: r.left, top: r.top }));
} catch (e2) { /* 保存できなくても動作に支障はない */ }
};
document.addEventListener('mousemove', onMove, true);
document.addEventListener('mouseup', onUp, true);
});
const log = (msg) => { logEl.textContent = msg + '\n' + logEl.textContent; };
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
let rows = []; // { moreBtn, labelText, liked, checked }
let aborted = false;
// ---- 曲の検出 ------------------------------------------------------------
// 各曲行の「…」ボタン。Sunoは data-context-menu-trigger="true" を付与している。
function findMoreButtons() {
return Array.from(document.querySelectorAll('button[data-context-menu-trigger="true"]'));
}
// 曲名ではない汎用ラベルを弾く
const GENERIC_LABELS = new Set([
'その他のオプション', 'リミックス', '編集', '公開', 'シェア', 'ダウンロード', '管理',
'キューに追加', 'プレイリストに追加', 'ソングラジオ', 'ゴミ箱へ移動', 'ボイス',
]);
function isGenericLabel(t) {
if (!t) return true;
if (GENERIC_LABELS.has(t)) return true;
if (/^\d+:\d+$/.test(t)) return true; // 再生時間
if (/^v\d/i.test(t)) return true; // バージョン表記
return false;
}
function rowOf(btn) {
return btn.closest('.clip-row') || btn.closest('[role="group"][aria-label]');
}
// 曲名は曲行(.clip-row)の aria-label に入っている
function guessLabel(btn, index) {
const row = rowOf(btn);
const rowLabel = row?.getAttribute('aria-label')?.trim();
if (rowLabel && !isGenericLabel(rowLabel)) return rowLabel;
const alt = row?.querySelector('img[alt]')?.getAttribute('alt')?.trim();
if (alt && !isGenericLabel(alt)) return alt.replace(/\s*artwork$/i, '');
return `曲 #${index + 1}`;
}
// いいね済み判定。押されているボタンだけ hxc-btn-variant-primary になる
// (未押下は hxc-btn-variant-standard-legacy)。
function isLiked(btn) {
const row = rowOf(btn);
if (!row) return false;
for (const b of row.querySelectorAll('button[aria-label]')) {
const label = b.getAttribute('aria-label') || '';
const isLikeBtn = /いいね/.test(label) ? !/よくない/.test(label) : /\blike\b/i.test(label) && !/dislike/i.test(label);
if (!isLikeBtn) continue;
if (b.getAttribute('aria-pressed') === 'true') return true;
if (/hxc-btn-variant-primary/.test(b.className)) return true;
}
return false;
}
function renderList() {
listEl.innerHTML = rows
.map((r, i) => `<label><input type="checkbox" data-i="${i}" ${r.checked ? 'checked' : ''}/> <span>${r.liked ? '<span class="sbd-liked">♥</span> ' : ''}${r.labelText}</span></label>`)
.join('');
listEl.querySelectorAll('input').forEach((cb) => {
cb.addEventListener('change', (e) => {
rows[Number(e.target.dataset.i)].checked = e.target.checked;
updateButtons();
});
});
}
function updateButtons() {
runBtn.disabled = !rows.some((r) => r.checked);
}
function scan() {
const buttons = findMoreButtons();
// 曲行の配下にあるものだけが対象。フォルダのカードは .clip-row を持たない。
const inClipRow = buttons.filter((btn) => btn.closest('.clip-row'));
let found = inClipRow.map((btn, i) => ({
moreBtn: btn,
labelText: guessLabel(btn, i),
liked: isLiked(btn),
checked: true,
}));
const likedCount = found.filter((r) => r.liked).length;
if (likedOnly.checked) found = found.filter((r) => r.liked);
rows = found;
renderList();
updateButtons();
if (rows.length === 0) {
log(likedOnly.checked
? `いいねした曲が見つかりません(表示中の ${inClipRow.length} 曲中 0 件)。`
: '曲が見つかりません。フォルダの中に入り、曲が一覧表示された状態でスキャンしてください。');
return;
}
log(`${rows.length} 曲を検出しました(表示中 ${inClipRow.length} 曲 / うち♥ ${likedCount} 件)。`);
}
// ---- 曲IDの取得 ----------------------------------------------------------
const UUID_RE = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/i;
function extractClipId(btn) {
const row = rowOf(btn);
if (!row) return null;
const link = row.querySelector('a[href*="/song/"]')?.getAttribute('href');
const fromLink = link?.match(UUID_RE);
if (fromLink) return fromLink[0];
const fromData = row.querySelector('[data-clip-id]')?.getAttribute('data-clip-id')?.match(UUID_RE);
if (fromData) return fromData[0];
for (const img of row.querySelectorAll('img[src]')) {
const m = img.getAttribute('src').match(UUID_RE);
if (m) return m[0];
}
const m = row.outerHTML.match(UUID_RE);
return m ? m[0] : null;
}
// ---- 保存 ----------------------------------------------------------------
function sanitizeFileName(name) {
return (name || '').replace(/[\\/:*?"<>|]/g, '_').replace(/\s+/g, ' ').trim().slice(0, 120);
}
// 同名の曲が複数あるため、実行中に使った名前は連番で衝突を避ける
const usedNames = new Set();
function uniqueName(base, ext) {
let name = `${base}.${ext}`;
let n = 2;
while (usedNames.has(name)) name = `${base} (${n++}).${ext}`;
usedNames.add(name);
return name;
}
async function downloadViaFetch(url, name) {
let res;
try {
res = await fetch(url);
} catch (e) {
return { ok: false, error: `通信エラー(${e && e.message ? e.message : e})` };
}
if (!res.ok) return { ok: false, error: `HTTP ${res.status}` };
const blob = await res.blob();
const objUrl = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = objUrl;
a.download = name;
document.body.appendChild(a);
a.click();
a.remove();
setTimeout(() => URL.revokeObjectURL(objUrl), 10000);
return { ok: true, size: blob.size };
}
function downloadViaGM(url, name) {
return new Promise((resolve) => {
GM_download({
url, name, saveAs: false,
onload: () => resolve({ ok: true }),
onerror: (e) => resolve({ ok: false, error: (e && (e.error || e.details)) || 'error' }),
ontimeout: () => resolve({ ok: false, error: 'timeout' }),
});
});
}
// ---- 音源URLの取得 -------------------------------------------------------
// WAV: 画面のダウンロード操作と同じ手順を、同じログイン済みセッションで実行する。
// 1) POST /api/gen/{id}/convert_wav/ 変換を開始
// 2) GET /api/gen/{id}/wav_file/ → { wav_file_url }
// MP3: 変換不要で、CDN上のファイルをそのまま取得する。
// 認証トークンはページのClerkセッションから正規に取得する
async function getAuthToken() {
const w = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;
try {
return (await w.Clerk?.session?.getToken?.()) || null;
} catch (e) {
return null;
}
}
async function fetchWavUrl(clipId) {
const token = await getAuthToken();
if (!token) return { error: '認証トークンを取得できません(ログイン状態を確認してください)' };
const headers = { Authorization: `Bearer ${token}` };
const conv = await fetch(`${API_BASE}/${clipId}/convert_wav/`, { method: 'POST', headers });
if (!conv.ok && conv.status !== 204) return { error: `変換開始に失敗 HTTP ${conv.status}` };
for (let i = 0; i < POLL_MAX; i++) {
if (aborted) return { error: '中止' };
const res = await fetch(`${API_BASE}/${clipId}/wav_file/`, { headers });
if (res.ok) {
const json = await res.json().catch(() => null);
if (json && json.wav_file_url) return { url: json.wav_file_url };
} else if (res.status === 402 || res.status === 403) {
return { error: `HTTP ${res.status}(プランの制限の可能性)` };
}
await sleep(POLL_INTERVAL);
}
return { error: '変換待ちがタイムアウトしました' };
}
async function resolveAudioUrl(clipId, format) {
if (format === 'mp3') return { url: `${CDN_BASE}/${clipId}.mp3` };
return await fetchWavUrl(clipId);
}
async function run() {
const targets = rows.filter((r) => r.checked);
if (targets.length === 0) return;
const format = formatSel.value; // 'wav' | 'mp3'
aborted = false;
runBtn.disabled = true;
scanBtn.disabled = true;
stopBtn.style.display = '';
log(`一括ダウンロード開始: ${targets.length} 曲(${format.toUpperCase()})`);
let done = 0;
try {
for (let i = 0; i < targets.length; i++) {
if (aborted) { log('中止しました。'); break; }
const row = targets[i];
const id = extractClipId(row.moreBtn);
if (!id) {
log(`(${i + 1}/${targets.length}) スキップ: 「${row.labelText}」— 曲IDを特定できません`);
continue;
}
log(`(${i + 1}/${targets.length}) 「${row.labelText}」— 取得中...`);
const { url, error } = await resolveAudioUrl(id, format);
if (!url) {
log(` 失敗: 「${row.labelText}」— ${error} / ID=${id.slice(0, 8)}`);
continue;
}
const name = uniqueName(sanitizeFileName(row.labelText) || id, format);
let res = await downloadViaFetch(url, name);
if (!res.ok) {
const alt = await downloadViaGM(url, name);
if (alt.ok) res = alt;
else res = { ok: false, error: `${res.error} / GM:${alt.error}` };
}
if (res.ok) {
done++;
log(` 保存: ${name}${res.size ? ` (${Math.round(res.size / 1024 / 1024)}MB)` : ''} / ID=${id.slice(0, 8)}`);
} else {
log(` 失敗: ${name} — ${res.error}`);
}
await sleep(BETWEEN_SONGS);
}
log(`一括ダウンロード終了: ${done} 曲を保存しました。`);
} finally {
stopBtn.style.display = 'none';
scanBtn.disabled = false;
updateButtons();
}
}
scanBtn.addEventListener('click', scan);
runBtn.addEventListener('click', run);
stopBtn.addEventListener('click', () => { aborted = true; log('中止を要求しました...'); });
likedOnly.addEventListener('change', () => { if (rows.length > 0) scan(); });
$('#sbd-all').addEventListener('click', () => { rows.forEach((r) => (r.checked = true)); renderList(); updateButtons(); });
$('#sbd-none').addEventListener('click', () => { rows.forEach((r) => (r.checked = false)); renderList(); updateButtons(); });
})();
03使い方
STEP 1
Sunoを開く
suno.comにアクセスして、
いつも通りログインする。
自分の曲が並んでいる画面(ライブラリ)を開く。
画面のどこかに黒いパネルが出てくれば準備完了。
出てこない場合はページを1回リロードする。
STEP 2
好みを選ぶ
WAV(音が良いが時間がかかる・容量大)かMP3(早い・軽い)を選ぶ。
「いいねした曲だけ」にチェックを入れると、
♥した曲だけが対象になる。
STEP 3
スキャンする
「曲をスキャン」ボタンを押す。
今、
画面に表示されている曲の一覧が、
パネルの中にリストで出てくる。
!一度にスキャンできるのは画面に表示されている分だけ。
それより多い曲を保存したいときは、
画面を下にスクロールしてから、
もう一度「曲をスキャン」を押す(=再スキャン)。
この時、「5〜6曲分くらい」少なめにスクロールして再スキャンすると、
前回とのダブりが少なくなる。
ダブった曲が出てしまっても、
そのままチェックを外せば重複保存を防げる。
STEP 4
曲を選ぶ
最初は全部チェックが入っている。
いらない曲はチェックを外す。
「全選択」「全解除」ボタンでまとめて切り替えもできる。
STEP 5
ダウンロード
「一括ダウンロード」ボタンを押して、
あとは待つだけ。
1曲ずつ順番に保存される。
途中で止めたいときは「中止」ボタンを押す。
保存先はパソコンの「ダウンロード」フォルダで、
曲名がそのままファイル名になる(同名がある場合は自動で番号が付く)。
FAQこんなときは
パネルが再生バーや音量ボタンと重なって邪魔
パネルのタイトル部分(「Suno Bulk Downloader」の文字のところ)を、
マウスでつかんで好きな場所にドラッグできます。
動かした位置は覚えてくれます。パネルを一時的に小さくしたい
タイトルの右はしにある「―」を押すと、
たたんで小さくなります。「曲をスキャン」しても0件と出る
フォルダの中に入って、
曲が並んだ画面になってからもう一度スキャンしてください。保存する前に「どこに保存する?」と毎回聞かれて面倒
Chromeのアドレスバーにchrome://settings/downloadsと入力して開き、
「ダウンロード前に各ファイルの保存場所を確認する」をOFFにすると聞かれなくなります。
Sunoを使い終わったらONに戻すのがおすすめです。WAVのダウンロードが失敗する
ログに理由が出るので確認してください。
プランの制限(Pro限定機能など)の場合があります。
気をつけてほしいこと
- ・自分のアカウントの曲だけに使う。他人の曲を大量取得する目的では使わない
- ・短時間にものすごい数(数百曲など)を一気に処理すると、
アカウントに負荷がかかる可能性がある。
少しずつ使うのがおすすめ - ・このツールはSunoの画面が変わると動かなくなることがある。
その場合は作った人に相談する - ・個人情報(パスワードやメールアドレスなど)を入力する場面はどこにもない。
もし入力を求める画面が出てきたら、
それはこのツールではない何か別のものなので注意する
🌸RUNWAY AI 紹介コードのご案内🌸

紹介コードcapeta-jbwg0wを受け取ったら、次の手順で簡単に有効化できます。
1️⃣ 新しい Runway アカウントにサインアップ
まずはアカウントを作成してください。
2️⃣ アカウントの認証を完了
メールに届いた認証リンクをクリックして完了です。
3️⃣ 紹介コードを入力
次の画面で紹介コードを入力し、「続行」を選択してください。
4️⃣ 有料プランにご加入
あなたとお友達の両方が、少なくとも2か月間有料プランを続けると、1,000クレジットがプレゼントされます✨
紹介コードを使えば、お互いにちょっぴりお得にスタートできます。
ぜひこの機会に、あなたらしいクリエイティブをRunwayで楽しんでください🎨💖
Runway MLではクレジットを消費することで、Kling3・Veo3.1・WAN2.6・Sora 2 Pro
さらにNano Banana Pro (4K)まで使えます。
2026/06/01からUnlimitedプランがMAXプランに移行されました。
このため、無制限モードが9500クレジット付与される形に変更されてしまいました。
Unlimitedプランの弱点である、生成速度の遅さが改善されると思えば・・・改悪だと思います。
RUNWAYは、クレジット消費が大きいので、Kiling などで720Pなどの動画を
1秒ごとに2クレジット支払って4K化するような使い方や
VEOの動画をウオーターマークをつけないで生成するなどの使い方が良いかと思います。
スマホからログインすると10~25クレジットをランダムで獲得できます。
端末を変更し、ipadなどからログインするとWで獲得できるように見えますが
実際は最初に獲得した分子しか反映されないようです。
獲得クレジット24Hで消滅しますので、すぐに使用しましょう。
PCからでは、クレジットは獲得できません
V2.5 TURBO 720P 5秒の動画生成 15クレジット
1080P 25クレジットで1回生成できます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎬 50%ボーナス獲得の「2ステップ手順」
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
スマホ版⇩(PC版は下にスクロールして)
【STEP 1】
この「特別登録リンク」をクリックして、無料アカウント登録を完了。
【STEP 2】
これをクリックして【 7BX46RFTVWXM 】Klingに移動。
サブスクに登録します。

①コピー(念の為)
②「Open app」クリック
これで「招待コード」が適応されます
PC版⇩
【STEP 1】
この「特別登録リンク」をクリックして、無料アカウント登録を完了。

【STEP 2】
これをクリックして【 7BX46RFTVWXM 】Klingに移動。
サブスクに登録します。
下記のようになっているか確認してください


プランのところに+50%と表示されているか確認してから決算してください。
下記のような場合は、招待コードを【 7BX46RFTVWXM 】コピペしてください⇩

💡 補足・注意点
・Kling AIでの「有料課金が初めての方」限定の特典です。
・付与されたボーナスクレジットの有効期限は30日間となります。
・課金履歴の有無は、決済画面の「Credit Activity」から確認できます。
最大5000クレジットまでなので
ウルトラプランだと通常の26,000+5,000クレジットとなります。
招待コードが反映されると「+50%」のように表示されます。⇩
カード情報入力画面では、+50%など表示されません。
適応されているがどうかは、⇧の画面で確認して、次に進もましょう。

招待コードを使用してもらえると
私には500クレジット入ります。
応援よろしくお願いします。
KILING AIの世界へGO!!
先ずは「特別登録リンク」からFreeプランに登録してください。
Audible
Audibleで、通勤読書を始めませんか?
あのビジネス書も聞くだけなので、車や電車でサクッとスキルアップ可能です。
今なら数十万の対象作品が聴き放題(1,500円/月)が初回30日間無料!
オーディオBOOKを手軽に楽しんでみませんか。

私は、疲れたときは仕事帰りに、ライトノベルを聞きながら帰宅することが多いです。
小説は、疲れた心をリラックスさせ癒やします。
自宅につくまでに気持ちを切り替えれば、今までとは世界が変わってくるでしょう。
「無職転生 ~異世界行ったら本気だす」はおすすめです。
26巻で完結したと思っていたのですが、その後を描く物語集『蛇足編』が始まってるではありませんか
通勤時間が楽しくなるかも♪
「最弱テイマーはゴミ拾いの旅を始めました」も、おすすめです。
Audibleの聴き放題プランに加入すると0円で聴き放題ですよ。

応援お願いします。
Amazonプライムは会員だけの割引やセールも魅力です。
アニメや音楽ライブをみてリラックスしませんか
月額600円 または 年額5,900円(税込)を選ぶことが出来ます。
AmazonプライムVIDEOをのぞいてみる
「Amazonプライムに登録すると、
お昼休みに映画やドラマを見ることが出来ます。
さらに、限定セールでお得に気になっていた商品を購入し、好きな音楽をききながら、生成AI関係の本も楽しめます。
今なら月額600円のサービスが、30日間無料で試せるので、ぜひこの機会に体験してください!
Amazonプライムに月額600円で加入すると、以下のようなサービスが「すべてセット」で使えます。
- Amazonプライムビデオ(Prime Video):映画やアニメなどの対象作品が見放題になるサービス(SVOD:定額制動画配信と言います)。
- 配送特典:お急ぎ便(早く届くサービス)や、日時指定便が無料になります。
- Amazon Music Prime:対象の音楽がシャッフル再生で聴き放題(サブスク:月額制のサービス)。
- Prime Reading:対象の電子書籍(本やマンガ)が読み放題。
- Amazon Photos:写真を無制限に保存できるクラウド(インターネット上の自分専用の保存スペース)。

アンケート
記事をもっと読みやすくしたいので、気軽な感想を教えてほしいです。

お問い合わせは、ここに書いてください