The repetitive half of 3D work is not creative and it is not fast. Renaming forty objects, swapping three materials across a kit, exporting the same scene into five formats - each task takes two minutes and each one is a place to make a mistake. Blender has always been scriptable; what changed is that you no longer need to write the script yourself.
Start with the task, not the API
Describe what you want in the language you would use with a colleague:
Find every object whose name starts with "prop_", move it into a collection called Props, give it the existing "M_Plastic" material, and rename it with a three-digit suffix.
That prompt contains everything a script needs: a selection rule, a destination, an assignment and a naming convention. If you start from bpy.data.objects and try to write the loop yourself, you are doing the hard version.
Where scripts pay off first
- Naming and collections - the mess that makes every other task slower
- Batch materials - one shader change applied across a whole kit
- Import and export - the same scene to FBX, GLB and STL in one pass
- Scattering and placement - rows, rings, terrain-following props
- Cameras and renders - turntables, orthographic passes, consistent framing
- Validation - find non-manifold edges, missing UVs, unapplied scale
Run it in the Scripting workspace
For a one-off, open the Scripting workspace, paste into the text editor and press Run Script. Watch the system console for errors. Two habits keep this safe: save the .blend file first, and make the script select-only until you trust it - a read-only first pass that prints what it would change is worth the extra step.
Then make it repeatable
Once a script works, move it out of the text editor:
blender --background scene.blend --python scripts/cleanup.pyHeadless runs are how a script becomes a pipeline step. The same command works in CI, in a Makefile, or in a render farm job, and it is the difference between a trick and a workflow.
Debugging what the AI wrote
Most failures fall into a small set of buckets:
| Symptom | Usual cause |
|---|---|
AttributeError on an object | Wrong data path, or the object is not the type you assumed |
| Nothing happens | The script edited a copy, or ran in the wrong context |
| Duplicate names | Blender appended .001 because the name was taken |
| Materials do not show | The assignment went to the mesh, not the object, or vice versa |
Paste the traceback back to the assistant with what you expected. Errors in Blender scripting are usually specific and fixable in one round.
Keep the human in the loop
An AI-written script is still a script: it can delete data, overwrite files, or silently ruin an export. Treat generated code the way you treat generated geometry - inspect it, run it on a copy, and only then put it in front of real work.
Next steps
Set up the rest of the workflow with lights, cameras and rendering, or go back to the foundations in text to 3D generation. If you want the assistant to run these scripts for you inside the scene, create an account and start with what Blender AI is.
