There is a parameter type (e.g. "idea", "news" and so on) and a parameter source (values like "manual" or "automatic").
I forgot to set a text but there seems to be an default emtpy string for that. Turns out a few rows above i had something like
OP["fc_aiprog" = Convert.ToDouble(OP["fc_aiprog");
to recieve the old value of an field which will be updated. But in this case that specific opportunity did not have any value till now.
That caused the "The given key was not present in the dictionary".
The post ist created fine now like this:
Entity timelinePost = new Entity("post");
timelinePost["regardingobjectid"] = new EntityReference("opportunity",OP.Id);
timelinePost["text"] = "Neuer AI-Prog: " prognosisdata.fc_aiprog "% (Plugin)";
OptionSetValue sourceVal = new OptionSetValue(1);
timelinePost["source"] = sourceVal; // Manual or Automatic
OptionSetValue postType = new OptionSetValue(7);
timelinePost["type"] = postType; // type of post i.e idea or news etc
client.Create(timelinePost);
Thanks to everybody for your support!