Public transportation to small towns in the Willamette Valley is somewhat sporadic. Some towns have regular bus service, while others have none at all. Here are some of the best resources for public transportation in the Linn/Benton county area:
Linn-Benton Loop: The Linn-Benton loop will connect you from Corvallis to Albany.
Linn Shuttle: From Albany, you can hop on the Linn Shuttle. This will connect you with several small towns east of Albany: Lebanon, Sweet Home and Foster.
Coast to Valley: This bus service connects Corvallis and Albany to small towns on the way to the Coast, like Toledo and Eddyville.
Also from Albany, you can hop on the Amtrak train, Bolt Bus or Greyhound which will take you north to Salem or south to Eugene.
Once in Salem, you can connect with the Salem/Keizer bus system. This will connect you to many small towns such as Mt. Angel, Silverton, Woodburn, Dallas, Independence, Monmouth, Turner, Mill City and Gates.
If you go south to Eugene, you can connect to Lane County Transit, which will connect you to communities like Junction City, Coburg, Cottage Grove and Veneta.
Sadly, some of the small communities in Linn County are not on any public transit lines that I am aware of. Brownsville, Halsey, Harrisburg, and Scio are all difficult to get to without a car — in these cases a Corvallis or Albany-based taxi service might work.
Cascades West Rideshare is probably your best local transportation info resource. They might even be able to match you up with a local carpool or commuter that would allow you to reach some of these smaller communities.
Good luck with your writing research, and enjoy your travels around the mid-valley!