Ivy Nodes
112 nodes for IVYX Studio, searchable by capability.
Callable
Returns a function that accepts any arguments and does nothing, as a placeholder where a node needs a callable. The function is a handle for the next node in the same run.
Chart Image
Draws a bar or line chart of two columns of rows and writes it as a PNG file. Returns the file's path and size, so a report can link the image; needs plotly and kaleido.
Check an invoice's numbers
Checks what a model read off a supplier invoice against itself: the net and the VAT add up to the total, the date is a date, the number and the supplier are there. Says verified true or lists what did not hold, so a reading goes on as a draft a person can trust or as one they have to look at.
CSV Read
Reads a CSV file, or CSV text, into rows with the column names and row count. Numbers come back as numbers and empty cells as null.
CSV To String Converter
Reads CSV bytes from a buffer and returns them as an aligned text table. Useful for putting a small table into a message or a report.
Data Frame Creator
Builds a pandas DataFrame from a list of row objects and returns it with its row count and column names. The frame is a handle for the next node in the same run.
Data Frame Filter
Filters, projects and limits a list of row objects, returning the kept rows with how many were dropped. Conditions are ANDed and support eq, ne, gt, gte, lt, lte, contains and in; a row that lacks the column simply does not match rather than raising, so ragged records are safe to filter. Makes data-frame-creator useful without writing code; pure compute.
Data Frame To CSV
Writes a pandas DataFrame as CSV into an in-memory buffer and returns the buffer with its size. The buffer is a handle another node in the same run reads, such as csvto-string-converter or minio-file-upload.
Default Prompt Creator
Returns a function that turns a context and a question into a plain-text prompt, with a preview of what it writes. The function is a handle for prompt-generator.
Design: a 3D mock-up as glTF
Builds a product mock-up (a box, a bottle, a badge or a sign) as a glTF 2.0 binary in the brand's colours, with smooth normals and PBR materials, and draws an isometric poster of the same thing as SVG for a thumbnail. Geometry from code, no model, no network.
Design: a card, poster or banner as SVG
Draws a social post, a poster or a banner as SVG from a spec (headline, subline, cta, palette, layout, brand) in the sizes asked for. The spec is what a model wrote from the brief; everything in it is validated here and a missing or broken field gets a default, so the picture is always drawn. No model, no network.
Design: a key visual as PNG
Paints an abstract key visual (gradient, waves, grid or blobs) in a palette and writes it as a PNG with the standard library, no Pillow. The picture behind a card or a post; deterministic for a seed.
Design: charts as SVG
Draws bar or line charts of rows as SVG, one per chart asked for: axes with nice ticks, labels, a legend, the values on the bars. The monthly report's figures as pictures; no model, no network.
Design: logo concepts as SVG
Draws three monogram concepts (a mono mark, a badge, a wordmark) from a name, initials and a palette, as SVG. First concepts to react to, not a finished identity; no model, no network.
Design: pack the files as deliverables
Gathers the files the steps before it made into one answer of kind deliverables (request, client, service, brief, the spec, the files with their bytes). Nothing is written to disk: the receiver keeps the files, which is what IVYX Agency does with the run's deliverables.
Design: the request as the model's context
Puts the request together as one text for the model's turn: the client, the service, the month, the brief and the figures, so the model writes for the right client. No model, no network.
Email Builder
Builds an email message with a plain-text body and an optional attachment, given as bytes or as a file path, and returns it with its attachment count. The message is a handle for email-provider in the same run.
Email Provider
Sends an email message through an SMTP server and returns the recipients it went to. TLS and login are optional, so it reaches a local relay as well as a mail provider, and a failed send fails the step.
Email Send
Sends a plain-text or HTML email through an SMTP server in one step and returns the recipients it went to. TLS and login are optional, so a local relay works as well as a mail provider; reference the password as a stored secret.
Excel Read
Reads one sheet of an Excel workbook into rows with the column names, row count and the workbook's sheet names. Dates come back as ISO text and empty cells as null.
Facebook: Page insights per day
Reads a Facebook Page's daily figures through the Graph API with a Meta connection: impressions and new fans per day, and the Page's fan and follower counts as today's instant values. A Page the connection cannot read answers with status no_access and the reason, which the collector's Data health shows.
File Reader
Reads files from MinIO object storage and returns them as BytesIO buffers. This node downloads files from a specified bucket and file name, making them available for processing. The output buffer can be used with pdf-processor for PDFs, image-processor for images, or other file processing nodes. Requires minio-provider for the connection. Use this node to retrieve files from object storage for processing pipelines.
File Upload
Uploads files to MinIO object storage from BytesIO buffers. This node stores file content in a specified bucket with a given file name and content type. The buffer can come from csv-from-data-frame, chart generators, or other nodes that produce file content. Requires minio-provider for the connection. Use this node to persist processed data or generated files to object storage for later retrieval or sharing.
File Write
Writes text to a file, creating its folder, and returns the absolute path and the number of bytes written. Refuses to replace an existing file unless overwrite is true.
Find invoices far above a client's usual
Holds every invoice in a list against its client's usual (the median of the client's other invoices in the list, or the usual the caller gives per client) and names the ones above a threshold, with how far above. No model: a median and a percentage. What comes out is kind invoice-anomalies, which IVYX Agency turns into an Approve output decision per invoice.
Gmail Mark
Marks Gmail messages by their ids through the Gmail API with a Google connection: read (the UNREAD label taken off, the default), and labels put on or taken off by id or by name; a label name Gmail does not have yet is made. The mark step of a flow a Gmail trigger started, which hands the run the message's id ($parent.id) rather than an IMAP uid.
Gmail Read
Reads one Gmail message by its id through the Gmail API with a Google connection: sender, subject, date, text and attachments, which it can write into the workspace so a step reads them (pdf-text over a statement that came by mail).
Gmail Search
Reads the Gmail messages that match a search, newest first, with each one's sender, subject, date, text and attachments, through the Gmail API with a Google connection. As a trigger's read it resumes from Gmail's history id: only the mail that arrived since the last read, which is what the New e-mail trigger starts runs from. The query is Gmail's own search (has:attachment from:bank subject:statement newer_than:7d).
Has a Gmail message
Says whether a statement came with a Gmail message to mark: true when the message's id is known (a Gmail trigger hands it as $parent.id), false for a file given by hand. Lets the Gmail agent end without a mark step that fails for want of a message, as has-mail does for a mailbox; an if over a missing input does not resolve and would fail the run (2026-10-16).
Has mail
Says whether a statement came with an e-mail to mark: true when both the mail's uid and the mailbox login are known, false for a file dropped into a folder or posted by a webhook. Lets one agent serve every source without a mark step that fails for want of a mailbox.
Histogram Chart Generator
Draws a histogram of one DataFrame column with plotly and returns the image as a buffer, with its size and format. Needs plotly and kaleido in the kernel.
HTTP Request
Sends one HTTP request to a URL and returns the status, headers and body, parsed as JSON when the response is JSON. Use it to call any REST API or incoming webhook: a Slack message, a GitHub issue, a CRM contact, a row through a REST layer, your own service. The credential is the token input, written as a Bearer header unless auth_header or auth_scheme says otherwise; reference a stored secret for it, and a URL that is itself a secret (an incoming-webhook URL) can be one too. A 4xx or 5xx answer is an error naming the status and the URL unless fail_on_error is false.
Hugging Face LLM Client
Generates text responses using language models hosted on Hugging Face Hub. Use this node to interact with various LLM models available on Hugging Face. Requires a valid Hugging Face API token. The node supports configurable timeout and token limits. Typically used in AI/ML pipelines for text generation, summarization, or question answering tasks.
Image Processor
Loads image bytes with Pillow and returns the loaded image with its width, height and format. The image is a handle for image-show or another image node in the same run.
Image Show
Shows a loaded image in the cell's output and returns its width and height. Takes the image_processor handle that image-processor returns.
Instagram: account insights per day
Reads an Instagram professional account's daily figures through the Graph API with a Meta connection: reach and new follows as a day series, and views, total interactions, accounts engaged and profile link taps as one total per day, for the days asked for; the account's followers, following and media counts as today's instant values. The answer is the collector's daily block (fields and rows), one row per day.
Instagram: comments as conversations
Reads the comments under an Instagram professional account's recent media, with their replies, through the Graph API with a Meta connection, as the conversations IVYX Social's inbox shows: one conversation per top-level comment, its replies as the thread, the account's own replies marked outgoing. As a trigger's read it resumes from the newest comment's time.
Instagram: posts with their lifetime insights
Reads an Instagram professional account's recent media (posts, reels, carousels) through the Graph API with a Meta connection, and each one's lifetime insights (reach, views, likes, comments, shares, saves, total interactions, a reel's average watch time). The answer is the collector's posts block with post_key instagram:<media id>.
Instagram: publish a post, a carousel or a reel
Publishes to an Instagram professional account through the Graph API with a Meta connection: a container is created from the public media URLs (one image, several for a carousel, a video for a reel), waited on until finished, then published; the caption and the first comment are posted. The answer is one publish result row. Speaks for the brand: policy holds it for a person.
Instagram: reply to a comment
Replies to a comment on an Instagram post as the account, through the Graph API with a Meta connection. Speaks for the brand: policy holds it for a person.
Jev · Choice
Asks TypeSafe Jev which of the given options fits a text or JSON state and returns the chosen option with its confidence and the probability of every option. Use it to pick a category, team, label, route or risk level. Options are a list of names or a map of name to description; add an "other" option when none may fit. Several hundred milliseconds, no text generated, and the answer is always one of the options. When the state is a JSON object its fields come back beside the answer, so a for-each over rows keeps each row.
Jev · Noul
Asks TypeSafe Jev a yes-or-no question about a text or JSON state and returns noul, the probability that the answer is yes, with answer true when it reaches the threshold. Use it to judge a yes-or-no question: is this an injection attempt, does it matter to a customer, is it urgent. Ask one proposition per node and add criteria when the boundary is subtle; a noul has no separate confidence, the number is the certainty. When the state is a JSON object its fields come back beside the answer.
Jev · Score
Asks TypeSafe Jev where a text or JSON state sits on an ordered scale of 2 to 10 described levels and returns a score from 0 to the top level with the nearest level, its description and the confidence. Use it to rate or grade urgency, severity, sentiment, quality or correctness. Levels go from low to high; the score is probability-weighted, so it can land between two levels. When the state is a JSON object its fields come back beside the answer, so a for-each over rows keeps each row.
JSON Extract
Reads one value out of a JSON document by dotted path and reports whether it was found. Segments split on a dot, an integer segment indexes a list, and a path that does not exist yields the supplied default with found set to false rather than raising — so the same node answers both 'give me this field' and 'does this field exist'. Pure compute: no network, no file access.
JSON Prompt Creator
Returns a function that turns a context and a question into a JSON prompt, with a preview of what it writes. The function is a handle for prompt-generator.
Knowledge Base Index
Embeds text chunks and stores them in a knowledge-base file that kb-search reads, returning how many chunks it holds. Uses a local embedding model (fastembed), so no service and no API key are needed.
Knowledge Base Ingest
Ingests text documents into a Milvus collection for retrieval. Embeds each document with a Hugging Face model (CLS pooling + L2 normalize — identical to ivy.node.rag-kb-answer so query and index vectors match), (re)creates the target collection sized to the embedding dimension, and inserts {vector, text} rows. Run this once to populate the knowledge base before querying with rag-kb-answer. Demonstrates the multi-cell program layout (input / implementation / run cells share one kernel session).
Knowledge Base Search
Finds the chunks of a knowledge-base file closest in meaning to a question and returns them as context, best first, with their scores. Reads the file kb-index writes, with the same local model.
LinkedIn: a company page's posts with their statistics
Reads a LinkedIn company page's posts through the Community Management API with a LinkedIn connection, and each one's lifetime share statistics (impressions, clicks, reactions, comments, reposts, engagement). The answer is the collector's posts block with post_key linkedin:<urn>.
LinkedIn: comments on a page's posts as conversations
Reads the comments under a LinkedIn company page's recent posts through the Community Management API with a LinkedIn connection, as the conversations IVYX Social's inbox shows. As a trigger's read it resumes from the newest comment's time.
LinkedIn: company page statistics per day
Reads a LinkedIn company page's daily figures through the Community Management API with a LinkedIn connection: new followers (organic and sponsored), share statistics (impressions, unique impressions, clicks, reactions, comments, reposts, the engagement rate), page views and unique visitors by page, and the follower total as today's instant value. The answer is the collector's daily block, with the paid split the LinkedIn cards toggle between.
LinkedIn: publish a post as the page
Publishes a post as a LinkedIn company page (or as the member, for a personal account) through the Community Management API with a LinkedIn connection: the text, and an article link when given. The post's URN comes back in the response's header. Speaks for the brand: policy holds it for a person.
LinkedIn: reply to a comment as the page
Replies to a comment on a LinkedIn post as the company page through the Community Management API with a LinkedIn connection. Speaks for the brand: policy holds it for a person.
Mail Fetch
Reads the newest messages of a mailbox folder that match a query over IMAP and returns each one's sender, subject, date and plain text, newest first. Use it to start from the mail a person receives: unread messages, mail from a sender, receipts by subject, the last days. Works on any IMAP server that takes a password (Gmail, iCloud, Yahoo, Fastmail, a company server); the host defaults to imap.gmail.com and the password is the stored secret mail-password. An HTML-only message is reduced to its text; attachments are counted, not downloaded. The query is words: unseen, since:7, from:name, subject:word, subject:invoice|receipt (either), text:word, joined with spaces; messages are left unread unless mark_seen is set.
Mail Mark
Marks messages of a mailbox folder as read or unread, moves them to another folder or adds a Gmail label, by uid over IMAP, and returns how many it changed. Use it after mail-fetch to leave a trace of what an agent handled: mark the triaged mail read, label it, or move it out of the inbox. On Gmail move_to "Archive" takes the mail out of the inbox the way the Archive button does, and any other folder is a label that must already exist. Needs at least one of seen, move_to or label.
Markdown Table
Formats rows as a Markdown table, with the columns in the order given or as they first appear. Numbers are right-aligned and a pipe in a value is escaped.
Milvus Client
Creates and manages a connection to a Milvus vector database. This node establishes a client connection that can be used for vector similarity search operations. Milvus is used for storing and searching high-dimensional vectors (embeddings). The client output is required by milvus-insert and milvus-search nodes. Use this node at the start of vector database workflows.
Milvus Insert
Inserts text embeddings into a Milvus vector database collection. This node converts text lines into embeddings using a text vectorizer, then stores them in Milvus for similarity search. If the collection already exists, it will be dropped and recreated. Requires milvus-client for database connection, text-vectorizer for embedding generation, and text_lines (typically from pdf-processor). Use this node to build a searchable knowledge base from documents.
Milvus Search
Performs vector similarity search on a Milvus collection to find the most similar text embeddings. This node searches for vectors similar to the provided embedding vector and returns the matching text content. Typically used in RAG (Retrieval-Augmented Generation) pipelines where the embedding comes from question node. The search results (context) are used with prompt-generator to create prompts for LLM queries. Requires milvus-client and an embedding vector.
Minio Provider
Creates and manages a connection to a MinIO object storage server (S3-compatible). This node establishes a client connection that can be used for file operations. MinIO provides object storage similar to AWS S3. The provider can optionally create a default bucket during initialization. The output minio_provider is required by minio-file-reader and minio-file-upload nodes. Use this node at the start of object storage workflows.
OpenAI Client
Generates text responses using OpenAI's chat completion API. Supports various models including GPT-4, GPT-4o, and o1 series. This node requires an OpenAI API key and accepts both a prompt object (from prompt-generator) and direct system/user messages. Use this for high-quality text generation, summarization, or conversational AI tasks. Note: This is a high-risk node requiring step-by-step approval due to API costs.
PDF Folder Text
Extracts the text of every PDF in a folder, returning each document's text with its file name and all of it as one text. Files that are not PDFs are skipped and a PDF that cannot be read is reported rather than failing the step.
PDF Processor
Extracts the text of a PDF and returns it in overlapping chunks with the page count. Reads with pypdf, so a scanned PDF with no text layer returns no chunks.
PDF Text
Extracts the text of a PDF file, page by page and as one text, with the page count. A scanned PDF with no text layer returns empty text.
PII Mask
Replaces the personal data in a text with placeholders such as [PERSON_1] and returns the masked text with the map that puts the values back. Identifiers with a check digit (IBAN, Montenegrin account, JMBG, PIB, TCKN, VKN, payment card) are found by rule only when the checksum holds, e-mail and phone numbers by pattern; names, firms and addresses need a span model, named by its champion.json from mlops.nlp.deploy, which runs with onnxruntime on this machine. The same value gets the same placeholder, so a model can still tell two people apart.
PII Unmask
Puts the values pii-mask replaced back into any text or JSON value, such as a model's answer, and counts the placeholders restored. Placeholders the map does not hold, which a model may have made up, are left as they are and listed in unknown.
Prompt Generator
Builds a prompt from a context and a question with a prompt creator, refusing one longer than max_tokens words.
Question
Turns a question into a vector with a text vectorizer and returns the vector with the question.
RAG Knowledge Base Answer
Single-node retrieval-augmented generation: embeds the question with a Hugging Face model, retrieves the most similar passages from a Milvus collection, assembles a grounded context, and asks an OpenAI chat model for a context-grounded answer. The whole external call is governed (policy risk:high, approval:step) so an agent cannot answer from the knowledge base without approval. All third-party calls run inside the node's Python (compute kernel), matching the existing node library convention.
Rows Validate
Checks every row against a JSON Schema and splits the rows into valid ones and invalid ones with their problems. Returns has_errors so a flow can branch on it.
RSS Fetch
Fetches an RSS or Atom feed and returns its newest items as title, link, summary and date, with the feed's own title. Summaries come back as plain text.
Schema Validator
Checks a payload against a JSON Schema subset and reports every problem it finds, not just the first. In report mode it returns valid and a list of problems so a flow can branch; in enforce mode a mismatch raises and the run stops there. Supports type, required, properties, items, enum, minimum and maximum, and ignores keywords outside that set rather than failing on them.
Sheets Append Rows
Adds rows at the bottom of a Google Sheets sheet through the Sheets API with a Google connection. A row is a list of cells, or an object whose fields are put under the header row's columns (by the column's name or its snake_case); a sheet with no header gets one from the first object's fields. Values are entered as a person would type them, so 2026-10-05 is a date and 12.50 a number.
Sheets List Sheets
Lists the sheets (tabs) of a Google Sheets spreadsheet with their size, through the Sheets API; it is how a form offers a sheet to pick once the spreadsheet is chosen.
Sheets List Spreadsheets
Lists the Google Sheets spreadsheets a Google connection can open, the most recently changed first, through the Drive API; it is how a form offers a spreadsheet to pick.
Sheets Read Rows
Reads the rows of a Google Sheets sheet through the Sheets API with a Google connection, each row an object keyed by the header row (snake_case: Amount EUR is amount_eur) with its row number. As a trigger's read it resumes from the last row it read, so each row added at the bottom starts one run; a row edited higher up is not read again.
Slack Channel Messages
Reads the messages of a Slack channel, oldest first, through a Slack connection (the app must be in the channel; channels:history). Joins, leaves and the app's own and other bots' messages are left out unless asked. As a trigger's read it resumes after the last message it read, which is what the New message in a channel trigger starts runs from.
Slack List Channels
Lists the Slack channels the firm's Slack app can see, through a Slack connection, every page of them; it is how a form offers a channel to pick, and says which ones the app is in.
Slack Post Message
Posts a message to a Slack channel as the firm's Slack app, through a Slack connection: plain text with Slack's own formatting (*bold*, <https://x|links>), optionally in a thread. The channel is its id (C…) or its name; the app must be in a private channel. A person outside the flow reads it, so the house rules can hold it for approval (message-send).
Social: a period report as chart rows and a cover
Turns IVYX Social's period report (the pulse with its months, the plan kept per account, the best posts) into the chart rows the chart node draws and the cover card's spec. No model, no network.
Social: lay a publish request out per platform
Reads an IVYX Social publish request (the content item and a target per account: platform, connection, ids, the approved text, media URLs) and lays it out per platform with a flag each, so the agent's if-branches run the right publisher. No model, no network.
Social: lay a reply out for its platform
Reads an IVYX Social reply request (the conversation, its platform, the approved text, the connection) and says which responder runs. No model, no network.
Social: mentions from the web (RSS)
Reads RSS or Atom feeds (Google News' search feed for the query when no feed is given) with the standard library and answers each item as a mention of source web: the title, the link, the publisher, when. As a trigger's read it resumes from the newest item's time. Network, no model.
Social: pack the conversations
Gathers the platform nodes' conversations into one answer of kind conversations, oldest first, each id once; what IVYX Social's inbox takes.
Social: pack the mentions
Gathers the search nodes' mentions into one answer of kind mentions, the model's sentiment attached to each by id, and the competitors' sizes beside; what IVYX Social's listening takes.
Social: pack the publish results
Gathers the publishers' rows into one answer of kind publish-result for an IVYX Social content item; a target no publisher ran for is a failed row with the reason. No model, no network.
Social: pack the reply result
Packs the responder's answer as one record of kind reply-result for an IVYX Social conversation: sent or not, and why. No model, no network.
Social: pack the texts as a content draft
Turns the model's variants into one answer of kind content-draft keyed by account, each text held to its platform's length, the hashtags without their #; what IVYX Social's intake fills a content item with. No model, no network.
Social: the collector's snapshot from the platform reads
Assembles the collector's schema v1 document (IVYX Social's social-snapshot) from what the platform nodes answered: the accounts with their daily rows and posts, each account's headline metric and its median over the last 365 days, each post's lift against it (10 posts at least), the per-platform spans, the metric legend, the gaps of accounts that could not be read. The same shape the collector page shipped with, so every analytics card draws from it. No model, no network.
Social: the copywriter's request as the model's context
Puts a content request together as one text for the model's turn: the brand, its voice and audience, the pillar, the format, the accounts to write for with each platform's length, the brief. No model, no network.
Social: which platforms this run has
Reads an IVYX Social collect or inbox agent's input (a connection and an id per platform) and says which platforms are there, so the agent's if-branches run only those steps. No model, no network.
Table Aggregate
Groups rows and sums, averages, counts or takes the minimum or maximum of one column, optionally by month, year or day of a date column. Returns one row per group under the original column names, sorted by the group.
Table Clean
Cleans rows for analysis: trims text, drops empty rows, turns number columns into numbers and date columns into ISO dates. Returns the cleaned rows, how many were dropped and every value it could not convert.
Template Render
Fills {{ name }} placeholders in a text template from a mapping, and reports which names were missing. Substitution is textual, never evaluated, so a template that arrives from a model or a file cannot run code. Generalises the hand-written prompt-creator nodes; pure compute with no network or file access.
Text Change Detect
Compares a text with the one stored under the same key last time, stores the new one, and returns whether it changed with the lines added and removed. The first run stores the text and reports no change.
Text Chunker
Splits a long text document into overlapping chunks suitable for embedding and retrieval-augmented generation (RAG). Each chunk is a contiguous slice of the source text bounded by chunk_size with a configurable overlap to preserve context across boundaries. The output chunks list feeds text-vectorizer for embedding before milvus-insert. This node is pure-compute and performs no network or file access.
Text Normalizer
Cleans text before chunking: Unicode composition, control characters removed, runs of whitespace collapsed, optional lowercasing. Returns the cleaned text and how many characters it dropped, so a pipeline can see whether its source was as tidy as it looked. Sits directly in front of text-chunker; pure compute, no network and no file access.
Text Vectorizer
Creates a text vectorizer instance using a pre-trained tokenizer and model. This node is essential for ML pipelines that require text embeddings. The vectorizer can convert text into numerical vectors for similarity search, classification, or clustering. Requires tokenizer and model from tokenizer-model-loader node. The output vectorizer is used with question node for query vectorization or milvus-insert for storing embeddings.
Tokenizer Model Loader
Loads a pre-trained tokenizer and model from Hugging Face for text embedding generation. This node downloads and initializes both the tokenizer and model required for text vectorization. The outputs are used with text-vectorizer node to create embedding instances. Requires a Hugging Face access token for authentication (especially for private models). This is typically the first step in ML pipelines that require text embeddings.
Web Page Text
Fetches a web page and returns its readable text and title, without scripts, styles or markup. A page that answers with an error status fails the step.
Web Scraping
Fetches a page, and the pages after it, and returns the rows a content function reads from each. The content and next-page functions are handles another node or a fixture provides.
X: an account's counts
Reads an X account's public counts (followers, following, posts, listed) through the X API v2 with an X connection, as today's instant values in the collector's daily block; the signed-in account when no handle is given. Also what the listening agent reads a competitor's size with.
X: mentions of the account as conversations
Reads the posts that mention an X account through the X API v2 with an X connection, as the conversations IVYX Social's inbox shows (kind mention). As a trigger's read it resumes from the newest post's id.
X: post, a thread or a reply
Posts as the X account through the X API v2 with an X connection: one post, a thread (each text replies to the one before), or a reply to a given post. Speaks for the brand: policy holds it for a person.
X: recent posts that match a search, as mentions
Searches the last seven days of X for a query (keywords, a brand name, a hashtag) through the X API v2 with an X connection, as the mentions IVYX Social's listening shows: the post, who wrote it, when, and its impressions as reach. Recent search is a paid-tier endpoint with a monthly cap, so the query stays narrow. As a trigger's read it resumes from the newest post's id.
X: the account's posts with their metrics
Reads an X account's recent posts through the X API v2 with an X connection, with the public metrics of each and, for the account's own posts under thirty days old, the private ones (impressions, engagements, profile and link clicks), as the collector's posts block with post_key x:<id>. Reposts are kept, since the collector keeps them, with no private metrics.
XML Prompt Creator
Returns a function that wraps a context and a question in XML tags as a prompt, with a preview of what it writes. The function is a handle for prompt-generator.
YouTube: comments on the channel's videos as conversations
Reads the comment threads on the channel's videos through the Data API with a Google connection, as the conversations IVYX Social's inbox shows: one per top-level comment, its replies as the thread, the channel's own replies marked outgoing. As a trigger's read it resumes from the newest comment's time.
YouTube: reply to a comment
Replies to a comment on one of the channel's videos as the channel, through the Data API with a Google connection. Speaks for the brand: policy holds it for a person.
YouTube: the channel's analytics per day
Reads the channel's daily analytics through the YouTube Analytics API with a Google connection: views, minutes watched, average view duration and percentage, subscribers gained and lost, likes, comments and shares per day, as the collector's daily block; and views by traffic source over the range as the traffic_source breakdown the YouTube tab draws.
YouTube: the channel's counts
Reads the signed-in Google account's YouTube channel through the Data API with a Google connection: its id, title, uploads playlist, and subscribers, views and videos as today's instant values in the collector's daily block.
YouTube: the channel's videos with their statistics
Reads the channel's uploads through the Data API with a Google connection: each video's title, publish time, thumbnail, duration, and lifetime views, likes and comments, as the collector's posts block with post_key youtube:<video id>; and, for the newest videos, their daily views through the Analytics API as the per-video day series the YouTube tab draws (post_daily).