Auto apply a frame to over 50 imported paintings
Through the UI:
Design a frame-profile curve in such a way that its origin is on the inner edge of the frame's passepartout. (Test it out in a rectangle)

Import your images as frames
Select all, and ShiftD duplicate the lot. (It's sensible to keep pictures and duplicates in separate collections, for hiding, etc.)
All dupes selected, Alt + Header menu &gt; Convert the duplicate planes to curves, in one move.
All the curves selected, one active, Alt assign the frame Profile as Bevel object. All the frames should acquire the bevel.

So now, all the pictures are framed. Trouble is... they're all separate objects.

Alt Convert all the frames back to meshes.
Choose Locations from the Header Options dropdown, with pictures and frames selected, scale the objects' locations to spread the framed pictures out a bit.
CtrlJ join everything into one object.
In Edit Mode on all, M Merge &gt; By Distance all the coincident vertices of pictures and frames. If your profile was good, that should be all 4 corners on each picture.
Still in Edit Mode, P Separate the framed-pictures object by loose parts.
Object mode, all selected, ShiftCtrlX Origin &gt; To Geometry

Now all the pictures should be framed, as single objects, with origins at their centers. Trouble is... they all now have a lot of surplus material slots.
To clean them up, you could run:
import bpy

sel = bpy.context.selected_objects

for ob in sel:
    bpy.context.view_layer.objects.active = ob
    bpy.ops.object.material_slot_remove_unused()