First consideration: how do you want to create the AOI? You could easily use the current extent of the data frame if this tool is to be run from arcmap. This or this may be useful. Or, I believe, with a python toolbox you could create a polygon with a few clicks.
At any rate, once you have the polygon as a feature (I would suggest creating an in_memory feature class) I would say arcpy.da.Walk is the best way way to go. Use it like this:
import arcpy
import os
topdir = r"path/to/root/folder"
for path, dirs, files in arcpy.da.Walk(topdir):
for d in dirs:
arcpy.env.workspace = os.path.join(path,d)
for ws in arcpy.ListWorkspaces():
arcpy.env.workspace = ws
for raster in arcpy.ListRasters():
# do raster stuff
for fc in arcpy.ListFeatureClasses():
# do vector stuff
This should collect everything you need. You may want to use the arcpyDescribe() function on the rasters and fcs to get more information about them before you clip or extract them. It looks like there are filters you can use with arcpy.da.Walk, I just don't have experience with them.