JA ▾
NSFW Video Generator

アダルト動画パイプライン向け無検閲 API

NSFW動画用スクリプトLLM API:テキスト専用ワークフロー

NSFW動画用スクリプトLLM APIは、プロジェクトのテキスト面を担当します:アウトライン、シーンリスト、他のツール用のプロンプトなど。動画は生成せず、このページはその位置関係を示します。

更新日:

ターミナルから空のフィルムフレームへ流れるスクリプトページのイラストで、テキスト専用LLMの動画ワークフローを示す

主要ポイント

  1. APIはテキストのみです。スクリプト、ショットリスト、プロンプトを生成し、画像、音声、動画は生成しません。
  2. JSONモードを使用して、トーンとルールを設定するシステムプロンプト付きで、パイプラインが構文解析できるシーンリストを取得します。
  3. 100,000トークンのコンテキストウィンドウにより、すべてのリクエストでストーリーバイブル全体を保持できます。
  4. キャラクターは成人である必要があり、未成年者を含む性的コンテンツは常に禁止されています。

動画パイプラインにおけるLLMの役割

nsfw動画用スクリプトLLM APIのワークフローを構築する場合、まず労働の分担を決定する必要があります。言語モデルは文章を書き、別の動画モデル、編集者、または撮影が映像を作成します。このサービスは最初の部分のみを提供します:コンテンツ拒否なしで回答するよう調整された1つのオープンウェイトテキストモデルで、OpenAI互換のエンドポイントの背後にあります。フレームのレンダリング、音声の合成、画像の作成は行わず、埋め込みやファインチューニングも提供しません。

これは、フィクション、ロールプレイ、コンパニオンスタイルのストーリーテリングなど、大人向けに作られたプロジェクトを取り巻く多くの作業をカバーします。モデルは、 treatment の草案作成、シーンへの分割、会話とナレーションの作成、ショットごとのリストの作成、および downstream の動画ツール用のプロンプトの作成が可能です。NSFWパイプラインのページは、このテキスト段階がスタックの残りの部分とどのように接続するかを説明しています。

固定されたルールは1つあり、すべてのリクエストに適用されます:未成年者を含む性的コンテンツは禁止です。すべてのキャラクターが成人になるようにシステムプロンプトを構築し、これをプロジェクトの要件として扱い、後回しにしないようにしてください。

4つの段階でのパイプライン

スクリプトワークフローは、各呼び出しが1つのタスクを行い、構造化された出力を次の段階に渡す場合に最も効果的です。実用的なレイアウトは次のようになります:

  1. ストーリーバイブル。 キャラクター(全員成人)、設定、トーン、繰り返し詳細を含む1つのドキュメント。一度作成し、すべての呼び出しに送信します。
  2. アウトライン。 1回の呼び出しで、前提条件を8〜15のビートサマリーに変換します。
  3. シーン脚本。各ビートごとに1回の呼び出しで、ダイアログ、アクション行、ナレーションを生成します。継続性を保つために、ストーリーバイブルと前のシーンを使用します。
  4. ショットリストとプロンプト。 シーンごとに最終的な呼び出しを行い、JSON形式でショット、持続時間、カメラの注釈、動画ツール用のプロンプト文字列を返します。

このように分割することで、出力が短くなり、結果の見直しや、気に入らない場合に再生成が容易になります。また、失敗した呼び出しの費用はスクリプト全体ではなく、1つのシーンのみになります。

ルールを設定するシステムプロンプト

システムプロンプトには、トーン、フォーマット、制限が定義されます。拒否動作のないモデルでも指示に従うため、プロンプトの品質がスクリプトの品質を決定します。ジャンル、視点、除外する内容を具体的に指定してください。以下は、成人向け視聴者向けフィクションの、プロフェッショナルな範囲内に収まるための出発点です:

SYSTEM = '''You are a screenwriter for adult-audience fiction videos.
All characters are adults aged 25 or older, and you state each age in the character sheet.
Write in present tense, third person, with short visual action lines.
Keep dialogue natural and under 25 words per line.
Build tension and character through setting, glances and subtext.
Never include minors in any role or reference.
Follow the story bible exactly; do not change names, ages or relationships.
When asked for JSON, return only the JSON object.'''

プロジェクトごとに調整してください。ノワールミステリーとロマンスコメディでは異なる指示が必要であり、プロンプト内に1行のスタイル例を含めることで、形容詞の段落よりもモデルをよりよく誘導できます。

JSONモードでのシーンリストの生成

ショットリストの段階では、コードが読み取れる出力が必要です。JSONモードは解析可能なオブジェクトを強制します。response_format={"type": "json_object"}を渡して、プロンプト内でキーを指定し、温度を低く保ってください。この例では、Pythonのopenaiパッケージを使用し、このサイトのベースURLとモデルIDuncensoredを使用します。

import json, os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.nsfwvideogenerator.cc/v1",
    api_key=os.environ["NOTRACK_API_KEY"],
)

SYSTEM = open("system_prompt.txt").read()
BIBLE = open("story_bible.txt").read()

def shot_list(scene_text):
    resp = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": (
                "Story bible:\n" + BIBLE +
                "\n\nScene script:\n" + scene_text +
                "\n\nReturn a JSON object with key 'shots': a list of objects with "
                "'number', 'seconds', 'camera', 'action' and 'video_prompt'."
            )},
        ],
        response_format={"type": "json_object"},
        temperature=0.3,
        seed=7,
    )
    data = json.loads(resp.choices[0].message.content)
    return data["shots"]

for shot in shot_list(open("scene_03.txt").read()):
    print(shot["number"], shot["seconds"], shot["video_prompt"])

渡す前に結果を検証してください。shotsが存在し、secondsが数値であり、プロンプト文字列が空でないことを確認します。解析に失敗した場合は、1回だけ再試行してください。失敗または拒否されたリクエストは課金されないため、エラーが発生した呼び出しの再試行には追加費用がかかりません。

クリエイティブなテキストにとって重要な設定

異なる段階には異なる設定が必要であり、APIは通常の設定をそのまま渡します:temperature、top_p、stop、seed、および頻度ペナルティと存在度ペナルティ。

  • アウトラインと会話: 多様性のために温度を0.8〜1.0に設定します。2〜3つのバリエーションを生成し、1つを選択します。
  • ショットリスト: 温度を0.2〜0.3に設定し、同じ入力の再実行が比較可能になるように固定されたseedを使用します。
  • 繰り返し: 長いシーンでは、同じフレーズでループすることがあります。0.3のような小さな頻度ペナルティが役立ちます。
  • 長さの制御: max_tokensはオプションですが、シーンに対して800の上限を設定することで、出力を簡潔に保つことができます。"END SCENE"のような stopシーケンスを使用すると、モデルに書かせるマーカーで終了できます。
  • ストリーミング: 作家が出力をリアルタイムで確認する場合は、stream: trueを有効にします。ストリームは終了するまで同時実行スロットを保持することに注意してください。

クイックスタートにはサポートされているパラメータがすべて記載されており、エンドポイントはPOST /v1/chat/completionsとGET /v1/modelsです。

継続性のために100kコンテキストウィンドウを使用する

継続性は、生成されたスクリプトにおける一般的な失敗原因です:名前が変わる、年齢がずれる、小道具が消えるなど。コンテキストウィンドウは100,000トークン(プロンプトと補完の合計)で、これはストーリーバイブル、アウトライン、複数の完成したシーンをすべての呼び出しに含めるのに十分な大きさです。この規模のプロジェクトには、検索システムは必要ありません。事実を貼り付け、モデルに毎回読ませてください。

コンテキストは無料ではありませんが、安価です。バイブルとアウトラインが合計20,000トークンで、50シーンを記述し、各呼び出しが約600トークンを返す場合を想定します:

  • 入力:50 x 20,000 = 1,000,000トークン x 1Mあたり$0.15 = $0.15
  • 出力:50 x 600 = 30,000トークン x 1Mあたり$0.50 = $0.015
  • 合計:50シーンのすべてで$0.165

同じ50シーンにショットリストパスを追加し、各シーンで3,000トークンの入力と500トークンの出力を行う場合:入力の150,000トークンは$0.0225、出力の25,000トークンは$0.0125かかり、さらに$0.035かかります。完全なスクリプトとショットリストの合計費用は約$0.20で、これはAPIキーページから請求できる$0.50のトライアルクレジット未満です。

ウィンドウにはプロンプトと回答の両方が収まる必要があることに注意してください。20,000トークンのバイブルであれば十分な余裕がありますが、95,000トークンのプロンプトでは補完に使える余地はわずかです。

出力のレビューと修正

生成されたシーンはすべて下書きとして扱ってください。3つのチェックで、動画ツールに届く前にほとんどの問題をキャッチできます。まず、一貫性のチェックパスを実行します:完成したスクリプトをストーリーバイブルと一緒に送信し、名前、年齢、場所、タイムラインが異なる箇所をリストアップするようモデルに依頼します。温度を低くした2回目の呼び出しは安価で、目視で見逃したズレを見つけることができます。次に、会話を声に出して読みます。画面では問題なく見えても、口頭では不自然なセリフがあり、ボイスオーバー俳優や音声合成ツールですぐに露呈します。最後に、ショットの持続時間の合計が計画した長さと一致しているか確認します。モデルは計算が緩いため、モデルが書いた合計値を信頼するのではなく、コードでsecondsフィールドを追加してください。

シーンが期待外れの場合、システムプロンプト全体を書き直すのは避けましょう。ユーザーメッセージに1つの補正指示(例:「アクション行を短く」「ダイアログを増やし、説明を減らす」)を追加し、そのシーンだけを再生成してください。ストーリーバイブルとシステムプロンプトを固定したまま指示を1つずつ変えることで、どの変更が役立ったかが明確になります。ここで seedパラメータが役立ちます。固定されたシードと小さなプロンプト編集により、編集の効果のみを分離できます。

制限、正直さ、次のステップ

構築する前に、いくつかの明確な制約があります。モデルはテキストのみなので、すべての動画、画像、音声トラックは他のツールから取得する必要があります。これは独立したプロバイダが運営する1つのオープンウェイトモデルであり、大手ベンダーの公式APIではありません。品質はプロンプトに依存するため、すべてのスクリプトに人のレビューパスを計画してください。出力を下書きとして扱ってください。

スループットについて、通常キーは同時8リクエスト、1分あたり300リクエストまで許可されます。一方、トライアルキーは同時2、1分あたり60です。シーンを並列で記述する場合は、ワーカープールのサイズをそれに合わせて調整してください。rate_limitedやconcurrencyの429は、処理を遅らせることを意味します。Retry-After: 5ヘッダーが付いている場合は、サービスが一時的に過負荷状態にあることを意味するため、5秒待ってから再試行してください。プロンプトはトレーニングには使用されません。

有料クレジットは$20のチャージから開始され、最大$500までの任意の整数額が対象です。$50以上で+5%、$100以上で+10%、$200以上で+15%が追加されます。支払い方法は暗号資産のみで、TRC20上のUSDTまたはBase上のUSDCです。クレジットは期限切れになりません。現在の条件は価格ページに記載されています。上記のようなプロジェクトの場合、$20で数十本の完全なスクリプトがカバーできます。

質問と回答

APIは動画そのものを生成できますか?

いいえ。これはテキスト専用のLLM APIです。スクリプト、シーンのリスト、プロンプトを生成し、動画の生成は別のツールで行います。

制限されるコンテンツはありますか?

はい。未成年者を含む性的コンテンツは常に禁止されています。このモデルは合法的な成人向けに設計されており、プロジェクト内のキャラクターはすべて成人であるべきです。

構文解析可能なショットリストを取得するにはどうすればよいですか?

response_formatをjson_objectに設定し、プロンプト内のキーに名前を付け、温度を約0.3に下げてから、json.loadsで結果を検証してから使用してください。

フルスクリプトの費用はいくらですか?

20,000トークンのストーリーバイブルと、各600トークンほどの50シーンを使用する場合、入力トークン1Mあたり$0.15、出力トークン1Mあたり$0.50で、ライティングパスの費用は約$0.165です。

キーはフォーム 1 つで手に入ります

アカウントを作成し、キーをコピーし、ベースURLを変更します。これでセットアップは完了です。