Kogukonna toega tasuta tehisintellekti tööriistad, TTS ja API-d Twitchi striimijatele
Kogukonna toega tasuta tehisintellekti tööriistad, TTS ja API-d Twitchi striimijatele

Kuidas Genereerida Tehisintellekti Pilte Streamer.botis Kohandatud Skriptiga

Õpi, kuidas genereerida tasuta AI pilte oma Twitchi voogu jaoks otse Streamer.botis, lisades kohandatud Execute Code skripti — kolmanda osapoole vahendeid pole vaja.
See leht on inglise keelest tõlgitud meie väga motiveeritud AI praktikantide poolt teie mugavuse nimel. Nad õpivad veel, nii et mõni viga võib sisse lipsata. Kõige täpsema teabe jaoks pöörduge ingliskeelse versiooni poole.
Kodu Kasutusjuhendid Kuidas Genereerida Tehisintellekti Pilte Streamer.botis Kohandatud Skriptiga

PotatoHotDog pakub tasuta Generate AI Images API-d, mida saad otse Streamer.botist kutsuda, ilma kolmanda osapoole vahendustarkvarata. See juhend näitab, kuidas lisada väike kohandatud C# skript Streamer.bot Execute Code sub action'i, mis genereerib AI-pildi tekstipäringust ja salvestab selle kettale.

Skript vajab ainult sinu PotatoHotDog API võtit ja kirjeldust pildist, mida soovid genereerida, ning see salvestab allalaaditud pildi eraldatud kausta sinu Streamer.bot installikataloogis.

Valmista API võti

Kui sul seda veel ei ole, loo API võti oma juhtpaneelilt ja hoia see valmis, vajad seda järgmiseks sammuks.

Mine API võtmete lehele Genereeri API võti PotatoHotDog'i juhtpaneelis

Eeltingimused Argumendid

AI-pildi genereerimiseks tuleb Streamer.botis enne Execute Code alamtoimingut kaks argumenti määrata. Teisisõnu tuleb määrata need kaks asja:

  • API võti.
  • Juhised, mis kirjeldavad pilti, mida soovid genereerida.

Need vastavad järgmistele Streamer.bot'i argumentidele:

  • potatoKey
  • potatoInstructions

Sa määrad oma toimingu argumendid, paremklõpsates alamtoimingute peal, seejärel vali Lisa, Põhi, Argumendid ja lõpuks Määra argument.

Lisa Määra parameeter alamtegevus Streamer.botis

Koodi täitmise toimingu lisamine Streamer.botis

Avage Streamer.bot ja minge Toimingute vahekaardile. Looge uus toiming või avage juba olemasolev toiming ning andke sellele nime, mida hiljem ära tunnete, näiteks "PotatoHotDog AI Image".

Kui sinu toiming on valitud, klõpsa Lisa alamtoimingute all, seejärel vali Core ja seejärel Execute C# Code. See lisab alamtoimingu, kuhu saad kleepida puhast C# koodi, mida Streamer.bot kompileerib ja käivitab jooksvalt.

Lisa alam-tegevus 'Käivita C# kood' Streamer.bot'is

Kleepige allolev skript koodiredaktorisse. See loeb potatoKey ja potatoInstructions parameetrid, kutsub meie Generate AI Image API välja pildi genereerimiseks ja selle URL-i saamiseks, ning laadib seejärel valminud pildi alla kausta nimega temp_potatohotdog_images sinu Streamer.boti installikataloogi.

using System; using System.IO; using System.Net.Http; using Newtonsoft.Json.Linq; public class CPHInline { // Tracks the version of this script for troubleshooting and support. private const string VERSION = "1.0.0"; // Base URL for the endpoint that generates an AI image. private const string BASE_URL_GENERATE = "https://api-generate-image-v1.potatohotdog.com/"; // Tracks the next numbered log argument. private int logIndex = 0; // Reuses one HTTP client for all API requests. private static readonly HttpClient httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(30) }; // Adds a log message as a numbered action argument. private void Log(string message) { // Stores the message under a numbered key. CPH.SetArgument($"potatoLog{logIndex}", message); // Advances the log index for the next message. logIndex++; // Keeps the total log count in sync. CPH.SetArgument("potatoLogCount", logIndex); } // Ensures a required action argument exists and is not empty. private bool RequireArgument(string name, out string value) { // Fails when the argument is missing or blank. if (!CPH.TryGetArg(name, out value) || string.IsNullOrWhiteSpace(value)) { value = ""; return false; } return true; } // URL-encodes a value so it can safely be used in a query string. private string EncodeUrlValue(string value) { // Escapes reserved characters for safe use in a URL. return Uri.EscapeDataString(value); } // Performs an HTTP GET request and returns the response body. private string HttpGet(string url) { try { Log($"GET {url}"); // Sends the HTTP request synchronously. HttpResponseMessage response = httpClient.GetAsync(url).GetAwaiter().GetResult(); // Reads the complete response body. string responseBody = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); Log($"HTTP status: {(int)response.StatusCode} {response.ReasonPhrase}"); // Stops when the server returns an unsuccessful status code. if (!response.IsSuccessStatusCode) { Log($"Error: HTTP request failed with status {(int)response.StatusCode} {response.ReasonPhrase}."); // Logs the server error response when available. if (!string.IsNullOrWhiteSpace(responseBody)) { Log($"Error response: {responseBody}"); } return null; } Log($"Received {responseBody.Length} characters."); return responseBody; } catch (Exception exception) { // Logs network, timeout, and other HTTP-related exceptions. Log($"Error: HTTP request failed: {exception.Message}"); return null; } } // Downloads a file from a URL and saves it to disk. private bool DownloadFile(string url, string destinationPath) { try { Log($"Downloading image from \"{url}\"."); Log($"Saving image to \"{destinationPath}\"."); // Sends the image download request. HttpResponseMessage response = httpClient.GetAsync(url).GetAwaiter().GetResult(); Log($"Image download HTTP status: {(int)response.StatusCode} {response.ReasonPhrase}"); // Reads the complete image response into memory. byte[] fileData = response.Content.ReadAsByteArrayAsync().GetAwaiter().GetResult(); // Stops when the image server returns an unsuccessful status. if (!response.IsSuccessStatusCode) { Log($"Error: Image download failed with status {(int)response.StatusCode} {response.ReasonPhrase}."); return false; } // Rejects an empty image response. if (fileData == null || fileData.Length == 0) { Log("Error: The downloaded image file is empty."); return false; } // Writes the downloaded image bytes to the destination file. File.WriteAllBytes(destinationPath, fileData); Log($"Downloaded {fileData.Length} image bytes."); // Confirms that the image file now exists on disk. if (!File.Exists(destinationPath)) { Log("Error: The image download completed, but the file does not exist on disk."); return false; } // Reports the final file size from disk. FileInfo fileInfo = new FileInfo(destinationPath); Log($"Image file saved successfully. File size: {fileInfo.Length} bytes."); return true; } catch (Exception exception) { // Logs download, filesystem, and permission errors. Log($"Error: Could not download the image file: {exception.Message}"); return false; } } // Extracts a required string value from a JSON response. private bool TryGetJsonString(string json, string propertyName, out string value) { value = ""; try { // Parses the response body as a JSON object. JObject jsonObject = JObject.Parse(json); // Retrieves the requested JSON property. JToken property = jsonObject[propertyName]; if (property == null) { Log($"Error: JSON response does not contain \"{propertyName}\"."); return false; } value = property.ToString(); // Rejects empty JSON string values. if (string.IsNullOrWhiteSpace(value)) { Log($"Error: JSON property \"{propertyName}\" is empty."); value = ""; return false; } return true; } catch (Exception exception) { // Logs malformed JSON and property conversion errors. Log($"Error: Could not parse JSON property \"{propertyName}\": {exception.Message}"); return false; } } // Creates and returns the dedicated PotatoImage folder. private string GetImageFolder() { // Uses Streamer.bot's application directory instead of the process working directory. string streamerBotFolder = AppDomain.CurrentDomain.BaseDirectory; // Places generated image files inside a dedicated subfolder. string imageFolder = Path.Combine(streamerBotFolder, "temp_potatohotdog_images"); Log($"Streamer.bot folder: \"{streamerBotFolder}\"."); Log($"Image folder: \"{imageFolder}\"."); // Creates the image folder if it does not already exist. if (!Directory.Exists(imageFolder)) { Log("Image folder does not exist. Creating it..."); Directory.CreateDirectory(imageFolder); Log("Image folder created."); } else { Log("Image folder already exists."); } return imageFolder; } // Runs the main PotatoHotdog AI image action. public bool Execute() { // Resets log numbering for this execution. logIndex = 0; CPH.SetArgument("potatoLogCount", 0); Log("Starting script..."); // Logs the script version so runs can be tracked over time. Log($"Version: {VERSION}"); // Retrieves the PotatoHotdog API key. if (!RequireArgument("potatoKey", out string potatoKey)) { Log("Error: potatoKey variable is missing. Please login to potatohotdog.com, generate an API key, create a set variable action and save the variable \"potatoKey\" with your key."); return false; } // Retrieves the prompt instructions describing the image to generate. if (!RequireArgument("potatoInstructions", out string potatoInstructions)) { Log("Error: potatoInstructions variable is missing. Create a set variable action and save the variable \"potatoInstructions\" with a description of the image you want generated."); return false; } // Logs the non-secret input values. Log("potatoKey was provided."); Log($"potatoInstructions=\"{potatoInstructions}\""); // Builds the API URL used to generate the AI image. string generateUrl = BASE_URL_GENERATE + "?key=" + EncodeUrlValue(potatoKey) + "&instructions=" + EncodeUrlValue(potatoInstructions); // Requests generation of the AI image. string generateJson = HttpGet(generateUrl); if (generateJson == null) { Log("Error: Failed to generate the AI image."); return false; } Log($"Generate response: {generateJson}"); // Extracts the generated item's ID, reused below as the local filename. if (!TryGetJsonString(generateJson, "itemID", out string itemID)) { Log("Error: Could not retrieve itemID from the generate response."); return false; } Log($"itemID=\"{itemID}\""); // Logs the generation duration when present, purely for troubleshooting. if (TryGetJsonString(generateJson, "duration", out string duration)) { Log($"duration={duration} second(s)"); } // Extracts the generated image URL from the response. if (!TryGetJsonString(generateJson, "imageURL", out string imageURL)) { Log("Error: Could not retrieve imageURL from the generate response."); return false; } Log($"imageURL=\"{imageURL}\""); string imageFolder; try { // Resolves and creates the dedicated PotatoImage directory. imageFolder = GetImageFolder(); } catch (Exception exception) { Log($"Error: Could not create or access the image folder: {exception.Message}"); return false; } // Reuses the item's own ID as the local filename instead of minting a new one. string imageFileName = $"{itemID}.png"; // Combines the image folder and unique filename. string imageFilePath = Path.Combine(imageFolder, imageFileName); Log($"Generated image filename: \"{imageFileName}\"."); Log($"Local image path: \"{imageFilePath}\"."); // Downloads the generated image file to the PotatoImage folder. if (!DownloadFile(imageURL, imageFilePath)) { Log("Error: Failed to download the generated AI image."); return false; } // Stores the remote image URL as a final action argument. CPH.SetArgument("potatoGeneratedImageURL", imageURL); // Stores the absolute local file path as a final action argument. CPH.SetArgument("potatoGeneratedImageFile", imageFilePath); Log($"potatoGeneratedImageURL=\"{imageURL}\""); Log($"potatoGeneratedImageFile=\"{imageFilePath}\""); Log("Finished."); return true; } }

Pärast skripti kleepimist klikka 'Leia viited' ja 'Kompileeri' ning veendu, et see kompileerub edukalt. Salvesta toiming, seejärel käivita see käsitsi või ühenda see käsu või kanali punktide preemiaga, et testida, kas pilt genereeritakse õigesti.

Kleebi skript ja kompileeri see Streamer.botis

Vaata allalaaditud pilti

Kui toiming on käivitunud, saate Action History kaudu kontrollida Action variables, et kinnitada, et kõik töötas ootuspäraselt.

Seal leiad kohaliku tee, kuhu genereeritud pilt salvestati kettale, asudes temp_potatohotdog_images kaustas sinu Streamer.bot paigalduskataloogis.

Vaata genereeritud piltide muutujate väärtusi tegevuste ajaloos

Ava see kaust, et vaadata allalaaditud pilti otse.

Vaata toimingumuutujate väärtusi Toiminguloo kaudu Streamer.botis

Tõrkeotsing

Kui skript ei käitu nii, nagu oodatud, on vea tuvastamiseks parim viis kontrollida tegevuste logisid.

Sa saad seda teha, uurides oma Action muutujad Action History kaudu.

Vaata toimingumuutujate väärtusi Toiminguloo kaudu Streamer.botis

See juhend avaldati esmakordselt 2026-07-19 ning seda muudeti viimati 2026-07-19.

Teised Sarnased Juhendid

Siin on veel mõned juhendid, mis võivad teile kasulikuks osutuda.

Kuidas ühendada Streamer.bot AI-ga
Kuidas ühendada Streamer.bot AI-ga
Õpi, kuidas genereerida tasuta AI (LLM) vastuseid sinu Twitchi voogu jaoks Streamer.botis, kasutades Fetch URL alamtoimingut ja PotatoHotDog Generate AI Response API-d, kohandatud skripti pole vaja.
Loe juhendit
Kuidas mängida tasuta TTS heli Streamer.botis dünaamiliste brauseriallikatega
Kuidas mängida tasuta TTS heli Streamer.botis dünaamiliste brauseriallikatega
Õpi, kuidas kasutada tasuta AI TTS (Text-to-Speech) heli oma Twitchi voo jaoks Streamer.botis, kasutades dünaamilist brauseriallikat ja lihtsat Fetch URL-veebhooki taotlust — kohandatud skripti pole vaja.
Loe juhendit
Kuidas mängida tasuta TTS heli Streamer.botis kohandatud skriptiga
Kuidas mängida tasuta TTS heli Streamer.botis kohandatud skriptiga
Õpi, kuidas mängida tasuta AI TTS (Text-to-Speech) heli oma Twitchi voogu otse Streamer.botis, lisades kohandatud Execute Code skripti — Speaker.bot pole vaja.
Loe juhendit