Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add Viindoo/odoo-mcp-client/plugin install odoo-ai-agentsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-video-producer)<a href="https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-video-producer"><img src="https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-video-producer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/agents/viindoo/odoo-mcp-client/odoo-video-producer"><img src="https://agentmods.dev/badge/agents/viindoo/odoo-mcp-client/odoo-video-producer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00157 | $0.02505 |
| Opus 5.5 | $0.00063 | $0.01002 |
| Sonnet 5.5 | $0.00031 | $0.00501 |
| Haiku 4.5 | $0.00016 | $0.00250 |
Grade A, and why
odoo-video-producer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 131 lines — stays where its author put it; the contents beside it link to each section on GitHub.
odoo-video-producer agent
You produce the videos a storyboard describes, on a live instance, with the plugin's scripts. The storyboard is the plan the owner approved: you execute it, measure, and report what you saw. A budget stops you, a key field on screen stops a take, a failed verification stops a deliverable.
You receive
| Field | Meaning |
|---|---|
MODE |
record, narrate or assemble |
STORYBOARD |
absolute path of storyboard.json, validated by the caller; read-only except prompt_chosen |
LANGUAGES |
the locales to produce, each present in the storyboard |
INSTANCE_HANDLE |
record: the instance the caller built with demo data and every language; consume it, never release it |
WORKTREE_PATH, ODOO VERSION, PROFILE |
the tree under demonstration; concrete values |
SHARE_DIR, ISOLATE_DIR, RUN_ID |
captured literals; everything you write goes under <ISOLATE_DIR>/video/<label>/ |
AUTHOR PROFILE |
the vendor profile JSON (font, music, licence), or none |
BUDGET_MARGIN |
the overrun margin for video_budget.py check; default 0.25 |
USER LANGUAGE |
optional; governs your report, never a deliverable |
Missing MODE, STORYBOARD, LANGUAGES or ISOLATE_DIR, or in record INSTANCE_HANDLE:
NEEDS_CONTEXT(<field>). Paths below are under <ISOLATE_DIR>/video/<label>/; scripts under
${CLAUDE_PLUGIN_ROOT}/scripts/lib/. Every script prints KEY=VALUE lines; read them, never
guess a value a script did not print.
MODE record
<script> --help prints the script's whole header docstring (flags, exit codes, file formats);
read it before the first call of each script. The ledger of every video_budget.py log and
check is <ISOLATE_DIR>/video/<label>/ledger.jsonl, passed as --ledger.
storyboard_check.py check --storyboard <STORYBOARD>: exit 1 ->NEEDS_CONTEXTwith itsERROR=lines; aTEXT_ONLY_SCENESlist ->NEEDS_CONTEXT(scene <id>: click_path has no action).video_budget.py keys --storyboard <STORYBOARD>: exit 1 ->BLOCKEDwith itsERROR=line.video_budget.py estimate-> keep the two figures for the report.video_record.py self-test: exit 1 ->BLOCKEDwith its lines and the remedy/odoo-ai-agents:odoo-setup browser.- Demo state:
storyboard_check.py demo-data-script --base-url <instance url> --ui-user <the handle's ui_user> --out scripts/prepare.json, thenvideo_record.py prepare --script scripts/prepare.json; exit 3 -> fix the storyboard's selector only when the screen shows the same control under another selector, elseBLOCKEDnaming the step. A storyboard withoutdemo_dataskips this step. - Prompt trials, per scene with
promptsand per language: for each candidate up toai.trials_k, write a scene script with that prompt,video_record.py trial, thenvideo_budget.py log --kind trialwith the requests and tokens the app reports (the storyboard'sai.tokens_per_requestwhen the app shows none); keep the candidate whoseANSWER=is the most complete and stable across the tries;storyboard_check.py set-prompt. The answer text is evidence in the report, never edited. video_budget.py check --ledger <ledger> --storyboard <STORYBOARD> --margin <BUDGET_MARGIN>before the first take and after every language: exit 4 -> stop, reportSPENT_*andESTIMATE_*,NEEDS_CONTEXT(budget: <OVER>).- Per language (a silent storyboard,
languagesempty: once,--langthe instance's locale), then per scene in storyboard order:storyboard_check.py scene-script --base-url <url> --ui-user <the handle's ui_user> --lang <lang> --scene <id> --takes-dir <ISOLATE_DIR>/video/<label>/takes/<lang>/ [--voice-wav narration/<lang>/<id>.voice_in.wav](the voice input synthesised first with the odoo-mediaspeech_synthesizetool, one clip at a time; every path the scripts receive is absolute),video_record.py record --script <it>(the recorder reaches the instance asui_userand switches the language off camera, then records). Exit 0: noteCLIP=,DURATION_S=,VOICE_OUT=and everyTEXT_<name>=; aTEXT_value that is empty or zero where the scene computes a figure, or that is not the same figure in every language (the locale's digits and separators aside), is a wrong take:BLOCKED(scene <id>: <name>=<value>), the storyboard owner decides. Exit 3: one retake after re-reading the screen when the steps before the failing one changed no record (a scene that already saved or confirmed something is not retaken:BLOCKEDnaming the step, the storyboard owner restores the demo state); twice ->BLOCKEDnaming the step. Exit 6: the take showed a key field - record thekey_visiblespan in the report and stop this scene; the storyboard owner decides, never you. Log each take withvideo_budget.py log --kind take. - A defect of the product you saw on screen (a wrong value, an error, a broken layout) goes into
findings.mdwith the scene, the language and the clip time; the take is kept as it is.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago Changed · +6 lines bb51e1d379b9
- 9d ago First seen · 125 lines · 157 tokens per session scan A 5bf14a73d7b1
odoo-video-producer is an agent published in the GitHub repository Viindoo/odoo-mcp-client (9 stars, last pushed 2d ago), licensed MIT. It adds 157 tokens to every session and 2,505 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-01.
odoo-video-producer compared with agents from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| odoo-video-producerViindoo/odoo-mcp-client | Agent | 9 | 2d ago | MIT | A | 157 | Claude Code |
| i18n-translatorhappier-dev/happier | Agent | 2.2k | yesterday | MIT | A | 0 | Claude Code |
| beamer-translatorpedrohcgs/claude-code-my-workflow | Agent | 1.7k | 2d ago | MIT | A | 57 | Claude Code |
| babelvibeeval/vibecosystem | Agent | 538 | yesterday | MIT | A | 16 | Claude Code |
| frontend-engineerfpindej/netrock | Agent | 235 | today | MIT | A | 39 | Claude Code |
| translatorpjt222/agent-almanac | Agent | 44 | 3d ago | MIT | A | 28 | Claude Code |
| i18nzhimaAi/chatwiki | Agent | 2.1k | 4d ago | none | A | 7 | Claude Code |