[off topic]use webtemplates instead of sitedefinitions.[/off topic]
SPSite site = new SPSite("http://siteurl");
SPWeb web = site.RootWeb;
web.AllowUnsafeUpdates = true;
SPLimitedWebPartManager webParts = web.GetLimitedWebPartManager("Shared Documents/NameOfMyPage.aspx", System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared);
//Create an instance of Custom Webpart and add in a Webpart zone
MyWebPart.MyPart wp = new MyWebPart(); // your custom webpart instance
wp.Title = "My WebPart"; // set properties
webParts.AddWebPart(wp, "Left", 0);
webParts.SaveChanges(wp);