URLを入力して「チェック」を押してください。
判定: —
サイズ: —
ファイル名: —
※ Instagramのページに直接アクセスしての取得はブラウザの CORS 制限や認証が必要なため、フロントのみでは失敗します。
このページは 直接のMP4 はそのまま取得し、InstagramのURLは
/api/resolve?url=... のような任意バックエンドに委譲します。
使い方
- リールのURLを貼り付けて チェック を押します。
- URLが
.mp4で終わるなど直接ファイルなら、そのままダウンロードできます。 - Instagramの通常URLの場合、任意バックエンド
/api/resolveに問い合わせて、ダウンロード可能な直リンクに解決してから保存します。
(任意)バックエンドの最小実装例(Node.js / Express)
※ 認証トークンやスクレイピングは必ず規約に従い、自分の権利があるコンテンツのみ対象にしてください。アクセストークンはサーバ側のみに保存。
// server.js
import express from "express";
import fetch from "node-fetch"; // Node 18+なら不要
const app = express();
// 簡易CORS(必要に応じて制限を厳格化)
app.use((req, res, next) => { res.setHeader("Access-Control-Allow-Origin", "*"); next(); });
// InstagramのURLをダウンロード直リンクに解決する例(ダミー)
// 実運用では Meta Graph API を使い、
// 自分が権利を持つメディアに対して media_url を取得してください。
// https://developers.facebook.com/docs/instagram-api/
app.get("/api/resolve", async (req, res) => {
const url = req.query.url?.toString() || "";
if (!url) return res.status(400).json({ error: "url required" });
// 1) 直接.mp4ならそのまま返す
if (/\.mp4(\?|$)/i.test(url)) {
return res.json({ downloadUrl: url, filename: "video.mp4" });
}
// 2) Graph API を使う(擬似コード/トークンは環境変数)
// const token = process.env.IG_TOKEN;
// const mediaId = await yourFunctionToLookupMediaId(url);
// const resp = await fetch(`https://graph.facebook.com/v19.0/${mediaId}?fields=media_url,media_type&access_token=${token}`);
// const data = await resp.json();
// if (data.media_type === 'VIDEO' && data.media_url) {
// return res.json({ downloadUrl: data.media_url, filename: `${mediaId}.mp4` });
// }
// 3) 解決できない場合
return res.status(422).json({ error: "このURLは直接解決できませんでした。" });
});
// バイナリをプロキシしてダウンロードさせる(オプション)
app.get("/api/proxy", async (req, res) => {
const src = req.query.src?.toString();
if (!src) return res.status(400).send("src required");
try {
const r = await fetch(src);
if (!r.ok) return res.status(r.status).send("fetch failed");
res.setHeader("Content-Type", r.headers.get("content-type") || "application/octet-stream");
r.body.pipe(res);
} catch (e) {
res.status(500).send("proxy error");
}
});
app.listen(8787, () => console.log("API ready on http://localhost:8787"));
注意(重要)
- Instagramや他サイトの規約・著作権・利用条件に反するダウンロードは行わないでください。
- DRM・アクセス制御の回避や非公開メディアの取得など、技術的保護手段の回避にあたる行為はしないでください。
- 自分が権利を持つ動画(自分の投稿や投稿者が明確に許可した素材)だけを対象にしてください。
- アクセストークンやCookieなど機密情報はフロントに置かないでください(サーバ側に保管)。