I think it is important to construct a model of the data that captures the business domain's understanding. The nodes and edges will flow naturally from that. This touches on ontology, too.
If I construct a sequence of words, and send it to Twitter, and then send the same words to Facebook, have I made two distinct POSTs or one POST to two platforms? Which of these definitions is important in the application's problem domain.
For a marketing campaign, say, I could understand that it would be a single message on multiple platforms. Alternatively, if I were gauging an individual's use of social media I may consider them distinct. Context is everything.
If posts are distinguished by platform then platform is an attribute of post. If they see it as a single post but it is the act of distribution that is distinguishing then platform is an attribute of the relationship. If the user community had an on-going interest in Twitter of and by itself, not just as a target of posts, then Twitter should be a node, too. All three may be independently significant and we require a new node label "posting" with edges to user, post and to platform.
Implementing a logical data model as a physical database can often involve compromises. I think there may be one here. Neo4j stores a list of incoming and outgoing edges on each node. If there are a great many posts to, say, Twitter then updating the edge list will become a bottleneck.