素材投入 note原稿入力
無料記事1本
入力は、note原稿「プログラミング未経験の私がClaude Codeで開発を始めて人生が変わった話」(無料記事)の1本だけ。ここから下流の4工程(台本・音声・サムネ・投稿文)がすべて生成されました。
原稿本体はこの実証フォルダの外(配信パイプラインの原本フォルダ)にあるため、このページには収録していません。
無料ツールのみ(macOS標準 say + resvg-js + LLM工程)/人の稼働は指示のみ/2026-07-23 実証
※ 実測値は2026-07-23の元実証のまま。このページは見せ方の再構築で、新しい実測はしていません。
各工程をタップすると、下の検品モニターに実物が表示されます。表示は2026-07-23実証の再現です。
稼働状況: 待機中
入力は、note原稿「プログラミング未経験の私がClaude Codeで開発を始めて人生が変わった話」(無料記事)の1本だけ。ここから下流の4工程(台本・音声・サムネ・投稿文)がすべて生成されました。
原稿本体はこの実証フォルダの外(配信パイプラインの原本フォルダ)にあるため、このページには収録していません。
元実証で生成された台本の全文です(原文のまま)。
元実証で生成された実ファイルそのものを再生します(macOS標準の読み上げ音声・Kyoko)。台本(工程01)をそのまま読み上げたものです。
元実証で生成されたPNGをそのまま埋め込んでいます(画像データはページ内に内蔵)。
元実証で生成された投稿文の全文です(原文のまま。[note記事URL]はプレースホルダも実物どおり)。
価値の8割はLLM工程(台本・投稿文の変換品質)。シェル化できるのは機械工程だけで、「指示書+スクリプト」のセットが量産の最小単位。
#!/bin/bash
# =====================================================================
# 実証タスク#11: 発信の流れ作業パイプライン(動画量産工場の縮小版・無料ツールのみ)
#
# 入力原稿: 配信パイプライン/weeks/2026-07-22_CC001/note_公開用.md
# 選定理由: weeks/ 直下の最初のフォルダにあり、ヘッダーに「価格: 無料」と
# 明記された無料記事だったため。
#
# 工程:
# ① 音声台本化 … Claude(LLM)が原稿→話し言葉800字に変換 → script.txt
# ④ SNS投稿文 … Claude(LLM)がX用/Threads用を生成 → posts.md
# (①④はテキスト資産としてこのフォルダにコミット済み。再生成はClaudeに依頼)
# ② 音声合成 … macOS標準 say -v Kyoko → aiff → afconvert で m4a
# ③ サムネ生成 … SVG → @resvg/resvg-js で 1280x720 PNG
# (②③は機械工程。このスクリプトが再実行する)
#
# 使い方: bash pipeline.sh
# 前提: macOS(say/afconvert/afinfo)、node v24(~/.nvm)、
# ../../thumb/node_modules に @resvg/resvg-js インストール済み
# =====================================================================
set -euo pipefail
cd "$(dirname "$0")"
NODE="$HOME/.nvm/versions/node/v24.16.0/bin/node"
VOICE="Kyoko"
echo "== 入力チェック =="
for f in script.txt posts.md make_thumb.mjs; do
[ -f "$f" ] || { echo "NG: $f がありません(①④はClaude工程で先に生成)"; exit 1; }
done
echo "OK: script.txt / posts.md / make_thumb.mjs"
echo
echo "== ② 音声合成 (say -v $VOICE) =="
# 注: フォーマット未指定だと say が「Couldn't set audio converter property ('!dat')」で
# 失敗する環境があるため、data-format を明示(Kyoko標準の 22.05kHz/16bit)
say -v "$VOICE" -o audio.aiff --data-format=BEI16@22050 -f script.txt
# 注: 22.05kHzモノラル音源に -b 128000 を指定すると afconvert が
# 「Couldn't set audio converter property ('!dat')」で失敗する → 64kbpsが適正
afconvert -f m4af -d aac -b 64000 audio.aiff audio.m4a
echo "再生時間:"
afinfo audio.m4a | grep "estimated duration"
echo
echo "== ③ サムネ生成 (resvg-js) =="
# 既存インストール(scratchpad/thumb/node_modules)を symlink で流用
[ -e node_modules ] || ln -s ../../thumb/node_modules node_modules
"$NODE" make_thumb.mjs
echo
echo "== 成果物一覧 =="
ls -la script.txt audio.aiff audio.m4a thumb.png posts.md
echo
echo "完了: ①script.txt ②audio.m4a ③thumb.png ④posts.md"
補助ファイル: make_thumb.mjs(サムネのSVG→PNG化の実体)は原本フォルダに同梱。
この仕組みの拡大版で、ぼくの毎日の配信(音声・note・Substack・X)が回っています。
配信面を見る(リンク準備中)